Подтвердить что ты не робот

Что такое TEXTIMAGE_ON [PRIMARY]?

Я работал над многими таблицами, и все это имело следующее:

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

Что такое TEXTIMAGE_ON [PRIMARY] в SQL Server/Transact-SQL?

4b9b3361

Ответ 1

Из MSDN

TEXTIMAGE_ON {filegroup | "default" }

Указывает, что текст, ntext, image, xml, varchar (max), nvarchar (max), varbinary (max) и CLR пользовательские столбцы типов (включая геометрию и географию) хранятся на указанных файловая группа.

TEXTIMAGE_ON не допускается, если в столбцах больших значений нет Таблица. TEXTIMAGE_ON не может быть указан, если <partition_scheme>указано. Если указано "default" или если TEXTIMAGE_ON не является вообще говоря, столбцы больших значений хранятся в стандартном файловая группа. Хранение любых данных столбца большого значения, указанных в CREATE TABLE не может быть впоследствии изменен.

ПРИМЕЧАНИЕ. В этом контексте значение по умолчанию не является ключевым словом. Он является идентификатором файловой группы по умолчанию и должен быть ограничен, как в TEXTIMAGE_ON "по умолчанию" или TEXTIMAGE_ON [по умолчанию]. Если указано "default" , опция QUOTED_IDENTIFIER должна быть включена для текущего сеанса. Это значение по умолчанию.

Ответ 2

Учитывая, что формат

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

textimage относится ко всем типам полей больших/неограниченных размеров: text, ntext, image, xml, varchar (max), nvarchar (max), varbinary (max) и CLR пользовательским типам столбцов (включая геометрию и географию )

Затем вам нужно знать, что такое файлы и файловые группы.

Из записи MSDN @https://msdn.microsoft.com/en-us/library/ms189563.aspx

File
------
At a minimum, every SQL Server database has two operating system files:
a data file and a log file.

Data files contain data and objects such as tables, indexes, stored 
procedures, and views.

Log files contain the information that is required to recover all 
transactions in the database.

Data files can be grouped together in filegroups for allocation and 
administration purposes.

Filegroups
------
Every database has a primary filegroup.
This filegroup contains the primary data file and any secondary files 
that are not put into other filegroups.

User-defined filegroups can be created to group data files together
for administrative, data allocation, and placement purposes.

Итак,

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

Казалось бы, несколько избыточным, поскольку он говорит, что упомянутые столбцы с большими текстовыми значениями должны быть сохранены в основной файловой группе, которая фактически является действием по умолчанию.

Предполагая существование настраиваемой файловой группы с именем CUSTOM, вы, вероятно, напишете примерно следующее:

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

Вы должны создать пользовательскую файловую группу для хранения большого двоичного файла или текста, и в этом случае информация о нормальных значениях будет помещаться в файл данных в основной файловой группе, тогда как соответствующие "большие" поля будут храниться физически отдельный файл данных (во вторичной пользовательской файловой группе).

Вы сделали бы это так, чтобы вы могли отделить основной реляционный datamodel (который предположительно был бы относительно небольшим с точки зрения дискового пространства) от больших полей (для чего потребуется пропорционально больше места на диске) - чтобы обеспечить возможность отдельного архивирования или стратегии репликации, которые должны применяться к каждой файловой группе.

Ответ 3

Если у вас нет больших текстовых столбцов, то есть текста, ntext, image, xml, varchar (max), nvarchar (max), varbinary (max) и CLR, вы можете просто использовать:

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