什么';这个SQL Create Table语句有什么问题?
此SQL查询由SQL Server Management Studio生成,它向我抛出一个错误:什么';这个SQL Create Table语句有什么问题?,sql,sql-server,create-table,Sql,Sql Server,Create Table,此SQL查询由SQL Server Management Studio生成,它向我抛出一个错误: USE [database_name] GO /****** Object: Table [dbo].[UserAddress] Script Date: 02/17/2010 11:21:02 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo]
USE [database_name]
GO
/****** Object: Table [dbo].[UserAddress] Script Date: 02/17/2010 11:21:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[UserAddress]
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[UserID] [int] NULL,
[AddressName] [nvarchar](25) NULL,
[Fname] [nvarchar](15) NULL,
[LName] [nvarchar](20) NULL,
[City] [nvarchar](15) NULL,
[Street] [nvarchar](30) NULL,
[StreetNum] [nvarchar](5) NULL,
[FloorNum] [int] NULL,
[AptNum] [int] NULL,
[ZipCode] [int] NULL,
[Phone] [varchar](15) NULL,
[Phone_Prefix] [int] NULL,
[CellPhone] [varchar](15) NULL,
[CellPhone_Prefix] [int] NULL,
[Fax] [varchar](15) NULL,
[Fax_Prefix] [int] NULL,
[Primary] [bit] NULL,
CONSTRAINT [PK_UserAddress] PRIMARY KEY CLUSTERED
(
[ID] 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
SET ANSI_PADDING OFF
错误是:Msg 170,级别15,状态1,第27行第27行:“(”)附近的语法不正确。
指向[mobile_Prefix][int]NULL,
,但我觉得这行很好。有什么问题吗?
编辑:
我刚刚把这封信注释掉了
CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED
(
[ID] ASC,
[ClientStoreID] ASC,
[Uname] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
而现在它起作用了,为什么?编辑2:
我把范围缩小到:
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
我在这里遗漏了什么吗?我认为这取决于SQL server数据库版本 我尝试使用SSMS 2005对SQL server 2000数据库进行查询,结果失败,错误与您描述的相同 当我连接到SQLServer2005服务器时,查询执行得非常完美 您是否确实检查了服务器版本,而不仅仅是SSMS版本 根据语法,WITH part只允许设置FillFactor,其他不允许:
< table_constraint > ::= [ CONSTRAINT constraint_name ]
{ [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
{ ( column [ ASC | DESC ] [ ,...n ] ) }
[ WITH FILLFACTOR = fillfactor ]
[ ON { filegroup | DEFAULT } ]
]
::=[constraint\u name]
{[{主键|唯一}
[聚集的|非聚集的]
{(列[ASC | DESC][,…n])}
[带FILLFACTOR=FILLFACTOR]
[在{filegroup | DEFAULT}上]
]
这与/syntax不同,后者允许括号内有多个选项:
< table_constraint > ::= [ CONSTRAINT constraint_name ]
{ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
(column [ ASC | DESC ] [ ,...n ] )
[ WITH FILLFACTOR = fillfactor | WITH ( <index_option> [ , ...n ] ) ]
[ ON { partition_scheme_name (partition_column_name) | filegroup | "default" } ]
.
.
.
}
::=[constraint\u name]
{{主键|唯一}
[聚集的|非聚集的]
(列[ASC | DESC][,…n])
[带填充因子=填充因子|带([,…n])]
[关于{partition_scheme_name(partition_column_name)|文件组|“default”}]
.
.
.
}
在SQL Server 2005上对我来说很好。您使用的是什么版本?我只是在我的studio中复制粘贴了您的代码,它创建了表,没有任何问题。如果您使用SSMS运行SQL,请确保在运行它时没有突出显示查询的一部分-如果您这样做,它将只执行突出显示的部分。@adrianbanks:否我不知道为什么人们使用查询来创建表,而不是简单地使用一些客户端软件。谢谢,这以后不会给我带来任何麻烦吗?@the_drow:取决于你在做什么。SQL server 2008链接涵盖了所有选项的含义(你只需在页面中搜索即可)。这些选项在sql server 2000中显然不受支持,因此您需要阅读它们,并检查您是否依赖它们在应用程序中的任何行为。