Estoy creando un script de configuración de SQL y estoy usando el script de otra persona como ejemplo. Aquí hay un ejemplo del guión:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[be_Categories](
[CategoryID] [uniqueidentifier] ROWGUIDCOL NOT NULL CONSTRAINT [DF_be_Categories_CategoryID] DEFAULT (newid()),
[CategoryName] [nvarchar](50) NULL,
[Description] [nvarchar](200) NULL,
[ParentID] [uniqueidentifier] NULL,
CONSTRAINT [PK_be_Categories] PRIMARY KEY CLUSTERED
(
[CategoryID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
¿Alguien sabe lo que hace el comando ON [PRIMARY]?
sql
sql-server
database
database-design
Icono123
fuente
fuente
0
ofalse
garantizar que su código está funcionando en un estado conocido, lo cual es un problema de lógica y corrección y no un problema de optimización.ON PRIMARY
sintaxis dos veces en el script: una para la tabla y otra para la restricción de la tabla. ¿Qué significa en el caso de la restricción de la tabla en términos de almacenamiento? Suena irrelevante o redundante para mí. Sintácticamente, debería haber sido suficiente mencionarlo una vez a nivel de tabla o ¿es realmente posible almacenar la tabla en el grupo de archivos PRIMARIO y los datos de restricción de tabla en el grupo de archivos NO PRIMARIO?Se refiere a qué grupo de archivos reside el objeto que está creando. Por lo tanto, su grupo de archivos primario podría residir en la unidad D: \ de su servidor. entonces podría crear otro grupo de archivos llamado Índices. Este grupo de archivos podría residir en la unidad E: \ de su servidor.
fuente
ON [PRIMARIO] creará las estructuras en el grupo de archivos "Primario". En este caso, el índice de clave principal y la tabla se colocarán en el grupo de archivos "Principal" dentro de la base de datos.
fuente
Para agregar una nota muy importante sobre lo que Mark S. ha mencionado en su publicación. En el Script SQL específico que se ha mencionado en la pregunta, NUNCA puede mencionar dos grupos de archivos diferentes para almacenar sus filas de datos y la estructura de datos de índice.
La razón se debe al hecho de que el índice que se crea en este caso es un índice agrupado en su columna de clave principal. Los datos de índice agrupados y las filas de datos de su tabla NUNCA pueden estar en diferentes grupos de archivos .
Entonces, en caso de que tenga dos grupos de archivos en su base de datos, por ejemplo, PRIMARY y SECONDARY, el script mencionado a continuación almacenará sus datos de fila y datos de índice agrupados tanto en el grupo de archivos PRIMARY como en el caso de que haya mencionado un grupo de archivos diferente (
[SECONDARY]
) para los datos de la tabla . Lo más interesante es que el script también se ejecuta con éxito (cuando esperaba que produjera un error, ya que había dado dos grupos de archivos diferentes: P). SQL Server hace el truco detrás de escena silenciosa e inteligentemente.NOTA: Su índice puede residir en un grupo de archivos diferente SOLO si el índice que se está creando no es de naturaleza agrupada .
El siguiente script que crea un índice no agrupado se creará en
[SECONDARY]
el grupo de archivos cuando los datos de la tabla ya residen en[PRIMARY]
el grupo de archivos:Puede obtener más información sobre cómo almacenar índices no agrupados en un grupo de archivos diferente puede ayudar a que sus consultas funcionen mejor. Aquí hay uno de esos enlaces.
fuente