Pregunta ¿Qué es TEXTIMAGE_ON [PRIMARY]?


Trabajé en muchas tablas y todos tenían esto:

CREATE TABLE Persons(
    [id] [int] IDENTITY(1,1) NOT NULL,
    [modified_on] [datetime] NULL,
    [modified_by] [varchar](200) NULL,
) 
ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

Que es TEXTIMAGE_ON [PRIMARY] en SQL Server / Transact-SQL?


74
2017-09-11 09:56


origen


Respuestas:


Desde el MSDN

TEXTIMAGE_ON {grupo de archivos | "defecto" }

Indica que el texto, ntext, imagen, xml, varchar (max),   columnas de tipo nvarchar (max), varbinary (max) y CLR definidas por el usuario   (incluyendo geometría y geografía) se almacenan en el   grupo de archivos

TEXTIMAGE_ON no está permitido si no hay columnas de gran valor en el   mesa. TEXTIMAGE_ON no se puede especificar si <partition_scheme> es   especificado. Si se especifica "predeterminado", o si TEXTIMAGE_ON no es   especificado en absoluto, las columnas de valor grande se almacenan en el valor predeterminado   grupo de archivos El almacenamiento de cualquier columna de datos de gran valor especificada en   CREATE TABLE no puede modificarse posteriormente.

NOTA: en este contexto, el valor predeterminado no es una palabra clave. Es un identificador para el grupo de archivos predeterminado y debe estar delimitado, como en TEXTIMAGE_ON "predeterminado" o TEXTIMAGE_ON [predeterminado]. Si se especifica "predeterminado", la opción QUOTED_IDENTIFIER debe estar activada para la sesión actual. Esta es la configuración predeterminada.


42
2017-09-11 09:59



Dado que el formato es:

CREATE TABLE TableName(...) TEXTIMAGE_ON { filegroup | "default" }

TEXTIMAGE se refiere a todos los tipos de campo grandes / de tamaño ilimitado: texto, ntext, imagen, xml, varchar (max), nvarchar (max), varbinary (max) y columnas de tipo CLR definidas por el usuario (incluida la geometría y la geografía).

Entonces, necesitas saber qué son los Archivos y los Grupos de Archivos. Desde la entrada de MSDN en Archivos de base de datos y grupos de archivos:

Archivo

Como mínimo, cada base de datos de SQL Server tiene dos archivos de sistema operativo: un archivo de datos y un archivo de registro. Los archivos de datos contienen datos y objetos, como tablas, índices, procedimientos almacenados y vistas. Los archivos de registro contienen la información necesaria para recuperar todas las transacciones en la base de datos. Los archivos de datos se pueden agrupar en grupos de archivos para fines de asignación y administración.

Grupos de archivos

Cada base de datos tiene un grupo de archivos primario. Este grupo de archivos contiene el archivo de datos principal y cualquier archivo secundario que no se encuentre en otros grupos de archivos. Los grupos de archivos definidos por el usuario se pueden crear para agrupar archivos de datos para fines administrativos, de asignación de datos y de ubicación.

Asi que,

CREATE TABLE ... ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

Parecería ser algo redundante, ya que está diciendo que las columnas de valor de texto grande mencionadas deberían almacenarse dentro del grupo de archivos primario, que en realidad es la acción predeterminada.

Asumiendo la existencia de un grupo de archivos personalizado llamado CUSTOM, probablemente escribirías algo como esto:

CREATE TABLE ... ON [PRIMARY] TEXTIMAGE_ON [CUSTOM]

Debería crear un grupo de archivos personalizado para almacenar texto o binarios grandes, y en este caso la información de los campos 'normales' se ubicaría en un archivo de datos en el grupo de archivos primario, mientras que los campos 'grandes' asociados se almacenarían en un archivo de datos físicamente distinto (en el grupo de archivos personalizado secundario).

Haría esto para poder separar el modelo de datos relacionales del núcleo (que presumiblemente sería relativamente pequeño en términos de espacio en disco) de los campos grandes (que requerirán proporcionalmente más espacio en disco) para permitir distintas estrategias de archivo o replicación. ser aplicado a cada grupo de archivos.


117
2017-11-06 08:11



Si no tiene columnas de texto grandes, es decir, texto, ntext, imagen, xml, varchar (max), nvarchar (max), varbinary (max) y CLR, puede usar:

CREATE TABLE Persons(
[id] [int] IDENTITY(1,1) NOT NULL,
[modified_on] [datetime] NULL,
[modified_by] [varchar](200) NULL,)ON [PRIMARY]

1
2017-10-19 05:45