Sql server 涉及创建表的Microsoft SQL Server语法错误

Sql server 涉及创建表的Microsoft SQL Server语法错误,sql-server,Sql Server,我是微软SQL编程新手,我正在尝试设计一个表,它支持随着时间的推移存储数据,最终可以用来绘制图表。我发现了一篇文章(),它似乎指向了一个可以支持这样的设计。然而,当我尝试它时,CREATETABLE的测试代码似乎不起作用 CREATE TABLE [dbo].[Test_PTA_Table]( [TestTablePK] [int] IDENTITY(1,1) NOT NULL, [TestTableText] [varchar](50) COLLATE SQL_La

我是微软SQL编程新手,我正在尝试设计一个表,它支持随着时间的推移存储数据,最终可以用来绘制图表。我发现了一篇文章(),它似乎指向了一个可以支持这样的设计。然而,当我尝试它时,CREATETABLE的测试代码似乎不起作用

CREATE TABLE [dbo].[Test_PTA_Table](
   [TestTablePK] [int] IDENTITY(1,1) NOT NULL,
   [TestTableText] [varchar](50) 
       COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
   [DateCreated] [datetime]     

       NOT NULL CONSTRAINT [DF_Test_PTA_Table_DateCreated]

                                      DEFAULT (getdate()),
   [DateEffective] [datetime] NOT NULL,
   [DateEnd] [datetime] NULL,
   [OperatorCode] [varchar](50) 

       COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
   [DateReplaced] [datetime] NULL   

       CONSTRAINT [DF_Test_PTA_Table_DateReplaced]
                                   DEFAULT (getdate()),
 CONSTRAINT [PK_Test_PTA_Table] PRIMARY KEY CLUSTERED 
(
   [TestTablePK] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
这在我的机器上抛出一个错误,说:

Msg 170, Level 15, State 1, Line 22
Line 22: Incorrect syntax near '('.

奇怪的是,只要我用(PAD\u INDEX=OFF,IGNORE\u DUP\u KEY=OFF)删除有问题的代码行,它就会工作,所以我不确定这里发生了什么。当createtable语法的文档在其帮助文件中支持这行代码时,为什么这行代码会导致问题?了解我这个问题可能是缺少了一个愚蠢的逗号之类的东西,但任何帮助都将不胜感激。谢谢

语法是有效的,应该在SQL2008或更高版本上编译,但是,这样说,从脚本中删除这些选项相对安全

关于它们的含义
PAD_INDEX
指定索引填充,默认设置为
OFF
。当设置为
ON
时,由fillfactor指定的可用空间百分比将应用于索引的中间级别页面,否则中间级别页面将被填充到接近容量的位置,通常,除非您确切知道自己在做什么,否则决不应将此设置为
ON


关于
IGNORE\u DUP\u KEY
,当它处于
OFF
(默认值)时,重复的键值会导致错误,并回滚整个语句。也就是说,如果语句试图插入多行,则不会插入任何行,但是,当它设置为
ON
时,将忽略此错误,并插入其中一个重复行。由于此选项默认设置为
OFF
,您可以安全地从脚本中删除它。

+1用于解释选项的工作原理,我从脚本中删除了它,没有任何问题。但我仍然感到困扰,为什么如果它是一个有效的语法,它就不起作用了。为什么它在我这边不起作用呢?你是在使用SQL Server 2000吗?所讨论的语法是从SQL2005开始的支持,包括Azure SQL.SQL Server 2008 R2。