2010-02-17 69 views
3

該SQL查詢,由SQL Server梟雄Studio生成和它引發我一個錯誤:這個SQL Create Table Statement有什麼問題?

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 

的錯誤是:在[CellPhone_Prefix] [int] NULL,Msg 170, Level 15, State 1, Line 27 Line 27: Incorrect syntax near '('.指點,但此行看起來好像沒什麼問題。
什麼可能是錯的?
編輯:
我只是註釋掉

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] 

我失去了一些東西在這裏?

+2

在SQL Server 2005上適合我。對於你使用的是什麼版本? – AdaTheDev 2010-02-17 09:37:05

+0

2008年如果我沒有弄錯 – 2010-02-17 09:38:03

+4

我只是複製粘貼代碼在我的工作室,如果你正在運行使用SSMS的SQL它創建的表沒有任何問題.. – 2010-02-17 09:38:45

回答

9

我認爲這是SQL Server數據庫版本。

我想你的查詢中使用SSMS 2005對SQL Server 2000數據庫和它失敗你描述了同樣的錯誤。

當我連接到SQL Server 2005服務器時,查詢執行完美。

你確定已經檢查了你的服務器版本,而不僅僅是你的SSMS版本。

按照SQL Server 2000語法中,WITH部分只允許FILLFACTOR進行設置,並沒有別的:

<table_constraint> ::= [ CONSTRAINT constraint_name ] 
{ [ { PRIMARY KEY | UNIQUE } 
    [ CLUSTERED | NONCLUSTERED ] 
    { (column [ ASC | DESC ] [ ,...n ]) } 
    [ WITH FILLFACTOR = fillfactor ] 
    [ ON { filegroup | DEFAULT } ] 
] 

這不同於SQL Server 2008/2005語法允許括號內的多個選項:

<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" } ] 
    . 
    . 
    . 
} 
+0

儘管與我一起閱讀sql腳本時相同 – Rodrigo 2010-02-17 10:30:51

+0

謝謝,以後不會給我帶來什麼麻煩嗎? – 2010-02-17 10:45:21

+0

@ the_drow:取決於你在做什麼。 SQL Server 2008鏈接涵蓋了所有選項的含義,(您只需在頁面中搜索)。這些選項在sql server 2000中顯然不被支持,所以你需要閱讀它們並檢查你是否依賴於它們在你的應用程序中的任何行爲。 – 2010-02-17 10:55:25