我在很多桌子上工作,所有东西都有:
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?
我在很多桌子上工作,所有东西都有:
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?
Answers:
从MSDN
TEXTIMAGE_ON {文件组| “默认”}
指示text,ntext,image,xml,varchar(max),nvarchar(max),varbinary(max)和CLR用户定义的类型列(包括几何和地理)存储在指定的文件组上。
如果表中没有大值列,则不允许TEXTIMAGE_ON。如果指定,则不能指定TEXTIMAGE_ON
<partition_scheme>。如果指定了“默认”,或者根本没有指定TEXTIMAGE_ON,则大值列将存储在默认文件组中。随后不能更改在CREATE TABLE中指定的任何大值列数据的存储。注意:在这种情况下,默认值不是关键字。它是默认文件组的标识符,并且必须定界,例如TEXTIMAGE_ON“默认”或TEXTIMAGE_ON [默认]。如果指定“默认”,则当前会话的QUOTED_IDENTIFIER选项必须为ON。这是默认设置。
鉴于格式为:
CREATE TABLE TableName(...) TEXTIMAGE_ON { filegroup | "default" }
TEXTIMAGE 引用所有大/无限制的字段类型:text,ntext,image,xml,varchar(max),nvarchar(max),varbinary(max)和CLR用户定义类型的列(包括几何和地理)。
然后,您需要知道什么是文件和文件组。从数据库文件和文件组的MSDN条目中:
文件
每个SQL Server数据库至少都有两个操作系统文件:一个数据文件和一个日志文件。数据文件包含数据和对象,例如表,索引,存储过程和视图。日志文件包含恢复数据库中所有事务所需的信息。可以将数据文件分组到文件组中,以进行分配和管理。
文件组
每个数据库都有一个主文件组。该文件组包含主数据文件和未放入其他文件组的所有辅助文件。可以创建用户定义的文件组以将数据文件分组在一起,以进行管理,数据分配和放置。
所以,
CREATE TABLE ... ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
似乎有些多余,因为这是说上述大文本值列应存储在主文件组中,这实际上是默认操作。
假设存在一个名为CUSTOM的自定义文件组,您可能会编写如下内容:
CREATE TABLE ... ON [PRIMARY] TEXTIMAGE_ON [CUSTOM]
您将创建一个自定义文件组来存储较大的二进制或文本,在这种情况下,“常规”字段信息将位于主文件组中的数据文件中,而相关联的“大”字段将存储在物理上不同的数据文件中(在辅助自定义文件组中)。
您可以这样做,以便可以将核心关系数据模型(就磁盘空间而言可能相对较小)与大字段(将按比例需要更多磁盘空间)分开-以便允许不同的归档或复制策略应用于每个文件组。
如果您没有任何较大的文本列,例如text,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]
[modified_by] [varchar](200) NULL