这是一整个库,有好多张表,报的错都一样,所以我精简了一些,原脚本截取一段为这样:
请看注释:SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Role]') AND type in (N'U')) //本人把sys.objects转换成了sysobjects  object_id 转成id
BEGIN
CREATE TABLE [dbo].[Role](
[ID] [int] IDENTITY(1,1) NOT NULL,
[RoleName] [varchar](50) NULL,
 CONSTRAINT [PK_Role] PRIMARY KEY CLUSTERED 
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]  //把这项去掉
) ON [PRIMARY]
END
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Users]') AND type in (N'U'))    //本人把sys.objects转换成了sysobjects  object_id 转成id
BEGIN
CREATE TABLE [dbo].[Users](
[ID] [int] IDENTITY(1,1) NOT NULL,
[UserName] [varchar](50) NULL,
[RealName] [varchar](50) NULL,
[Password] [varchar](255) NULL,
[Address] [varchar](200) NULL,
[Phone] [varchar](20) NULL,
[Mobile] [varchar](20) NULL,
[Email] [varchar](200) NULL,
[CreateDate] [datetime] NULL,
[Status] [bit] NULL,
[RoleID] [int] NULL,
[Re] [text] NULL,
 CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED 
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]  //把这项去掉
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
END
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Users_Role]') AND parent_object_id = OBJECT_ID(N'[dbo].[Users]'))
ALTER TABLE [dbo].[Users]  WITH NOCHECK ADD  CONSTRAINT [FK_Users_Role] FOREIGN KEY([RoleID])
REFERENCES [dbo].[Role] ([ID])
GO
ALTER TABLE [dbo].[Users] CHECK CONSTRAINT [FK_Users_Role]
GO还报错,好像是外键的问题?????
服务器: 消息 208,级别 16,状态 1,行 24
对象名 'sys.foreign_keys' 无效。
服务器: 消息 4917,级别 16,状态 1,行 1
约束 'FK_Users_Role' 不存在。
服务器: 消息 4916,级别 16,状态 1,行 1
未能启用或禁用约束。请参阅前面的错误信息。

解决方案 »

  1.   

    SQL注释好像是----
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Role]') AND type in (N'U')) -----本人把sys.objects转换成了sysobjects  object_id 转成id
    BEGIN
    CREATE TABLE [dbo].[Role](
        [ID] [int] IDENTITY(1,1) NOT NULL,
        [RoleName] [varchar](50) NULL,
     CONSTRAINT [PK_Role] PRIMARY KEY CLUSTERED 
    (
        [ID] ASC
    )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]  ----把这项去掉
    ) ON [PRIMARY]
    END
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Users]') AND type in (N'U'))    -----本人把sys.objects转换成了sysobjects  object_id 转成id
    BEGIN
    CREATE TABLE [dbo].[Users](
        [ID] [int] IDENTITY(1,1) NOT NULL,
        [UserName] [varchar](50) NULL,
        [RealName] [varchar](50) NULL,
        [Password] [varchar](255) NULL,
        [Address] [varchar](200) NULL,
        [Phone] [varchar](20) NULL,
        [Mobile] [varchar](20) NULL,
        [Email] [varchar](200) NULL,
        [CreateDate] [datetime] NULL,
        [Status] [bit] NULL,
        [RoleID] [int] NULL,
        [Re] [text] NULL,
     CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED 
    (
        [ID] ASC
    )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]  ----把这项去掉
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    END
    IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Users_Role]') AND parent_object_id = OBJECT_ID(N'[dbo].[Users]'))
    ALTER TABLE [dbo].[Users]  WITH NOCHECK ADD  CONSTRAINT [FK_Users_Role] FOREIGN KEY([RoleID])
    REFERENCES [dbo].[Role] ([ID])
    GO
    ALTER TABLE [dbo].[Users] CHECK CONSTRAINT [FK_Users_Role]
    GO
      

  2.   

    SQL2000没有sys.foreign_keys,可以用
    select * from sysobjects where type='f' 
      

  3.   

    IF NOT EXISTS (SELECT * FROM sysforeignkeys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Users_Role]') AND parent_object_id = OBJECT_ID(N'[dbo].[Users]'))
    ALTER TABLE [dbo].[Users]  WITH NOCHECK ADD  CONSTRAINT [FK_Users_Role] FOREIGN KEY([RoleID])
    REFERENCES [dbo].[Role] ([ID])
    GO
    ALTER TABLE [dbo].[Users] CHECK CONSTRAINT [FK_Users_Role]
    GO
      

  4.   

    这样不行,还是一样服务器: 消息 208,级别 16,状态 1,行 24
    对象名 'sysforeign_keys' 无效。
    服务器: 消息 4917,级别 16,状态 1,行 1
    约束 'FK_Users_Role' 不存在。
    服务器: 消息 4916,级别 16,状态 1,行 1
    未能启用或禁用约束。请参阅前面的错误信息。
      

  5.   


    这改成什么样的?
    IF NOT EXISTS (SELECT * FROM sysobjects where type='f'  (N'[dbo].[FK_Users_Role]') AND parent_object_id = OBJECT_ID(N'[dbo].[Users]'))
    ALTER TABLE [dbo].[Users]  WITH NOCHECK ADD  CONSTRAINT [FK_Users_Role] FOREIGN KEY([RoleID])
    REFERENCES [dbo].[Role] ([ID])
    GO
    ALTER TABLE [dbo].[Users] CHECK CONSTRAINT [FK_Users_Role]
    GO
    服务器: 消息 170,级别 15,状态 1,行 24
    第 24 行: '(' 附近有语法错误。
    服务器: 消息 4917,级别 16,状态 1,行 1
    约束 'FK_Users_Role' 不存在。
    服务器: 消息 4916,级别 16,状态 1,行 1
    未能启用或禁用约束。请参阅前面的错误信息。