Quel est le problème avec ce SQL Create Table?
-
21-09-2019 - |
Question
Cette requête SQL est générée par SQL Server Managment studio et il me renvoie une erreur:
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
L'erreur est: Msg 170, Level 15, State 1, Line 27 Line 27: Incorrect syntax near '('.
pointant [CellPhone_Prefix] [int] NULL,
mais cette ligne semble bien me
.
Qu'est-ce qui pourrait être mal?
EDIT:
Je viens de remarquer le
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]
et maintenant il fonctionne, pourquoi?
EDIT 2:
Je rétréci vers le bas:
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
Suis-je manque quelque chose ici?
La solution
Je pense que cela est en baisse à la version base de données SQL serveur.
J'ai essayé votre requête à l'aide SSMS 2005 contre une base de données SQL Server 2000 et il échoue avec la même erreur vous décrit.
Quand je connecté à un serveur SQL Server 2005 la requête exécute parfaitement.
Avez-vous vraiment vérifié votre version du serveur, et pas seulement votre version SSMS.
Selon le syntaxe, la partie A ne permet FillFactor à régler, et rien d'autre:
< table_constraint > ::= [ CONSTRAINT constraint_name ]
{ [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
{ ( column [ ASC | DESC ] [ ,...n ] ) }
[ WITH FILLFACTOR = fillfactor ]
[ ON { filegroup | DEFAULT } ]
]
Ceci diffère de la SQL Server 2008 / 2005 syntaxe qui permet plusieurs options entre crochets:
< 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" } ]
.
.
.
}