我在2005的数据库中导出脚本后在2000下运行总是提示错误。第17行 :‘(’附近有语法错误。全都是类似的错误 下面的脚本是我导出的一小部分。不知道有没问题。
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE object_id = OBJECT_ID(N'[dbo].[rj_jxcbb]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[rj_jxcbb](
[Xhid] [int] IDENTITY(1,1) NOT NULL,
[barcode] [varchar](50) NULL,
[kp_oper_date] [datetime] NULL,
[kp_in_qty] [decimal](18, 4) NULL,
[kp_in_amt] [decimal](18, 4) NULL,
[kp_out_qty] [decimal](18, 4) NULL,
[kp_out_amt] [decimal](18, 4) NULL,
[kp_ls_qty] [decimal](18, 4) NULL,
[kp_ls_amt] [decimal](18, 4) NULL,
[kp_flag] [decimal](18, 4) NULL,
 CONSTRAINT [PK_rj_jxcbb_1] PRIMARY KEY NONCLUSTERED 
(
[Xhid] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
END

解决方案 »

  1.   

    OBJECT_ID 2000里有这个函数吗?。
      

  2.   

    if object_id('rj_jxcbb') is not null 
    drop table rj_jxcbb
    BEGIN
    CREATE TABLE [dbo].[rj_jxcbb](
    [Xhid] [int] IDENTITY(1,1) NOT NULL,
    [barcode] [varchar](50) NULL,
    [kp_oper_date] [datetime] NULL,
    [kp_in_qty] [decimal](18, 4) NULL,
    [kp_in_amt] [decimal](18, 4) NULL,
    [kp_out_qty] [decimal](18, 4) NULL,
    [kp_out_amt] [decimal](18, 4) NULL,
    [kp_ls_qty] [decimal](18, 4) NULL,
    [kp_ls_amt] [decimal](18, 4) NULL,
    [kp_flag] [decimal](18, 4) NULL,
     CONSTRAINT [PK_rj_jxcbb_1] PRIMARY KEY NONCLUSTERED  
    (
    [Xhid] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    END
      

  3.   

    參考,簡單創建表存儲過程:
    If object_id('up_CreateTable') Is Not Null
    Drop Proc up_CreateTable
    Go
    /* 生成建表腳本(V2.0)  Andy 2009-4-2 */
    Create Proc up_CreateTable
    (
    @objectList nvarchar(max)=null
    )
    --With ENCRYPTION
    As
    /*  參數說明:
    @objectList 對象列表,對象之間使用","頭號隔開

    該存儲過程生成的建表腳本,包含Column,Constraint
    */
    Set Nocount On
    Declare @sql nvarchar(max),
    @objectid int,
    @id int,
    @Rowcount int,
    @ObjectName sysname,
    @Enter nvarchar(2),
    @Tab nvarchar(2) Select  @Enter=Char(13)+Char(10),
    @Tab=Char(9) Declare @Tmp Table(name sysname)

    If @objectList>''
    Begin
    Set @sql='Select N'''+Replace(@objectList,',',''' Union All Select N''')+''''
    Insert Into @Tmp (name) Exec(@sql) Set @sql=null
    Select @sql=Isnull(@sql+',','')+name 
    From @Tmp As a
    Where Not Exists(Select 1 From sys.objects Where type='U' And name=a.name) If @sql>''
    Begin
    Set @sql='發現無效的表名: '+@sql
    Raiserror 50001 @sql
    Return(1)
    End
    End If object_id('tempdb..#Objects') Is Not Null
    Drop Table #Objects

    If object_id('tempdb..#Columns') Is Not Null
    Drop Table #Columns

    Create Table #Objects(id int Identity(1,1) Primary Key,object_id int,name sysname)  
    ;With t As 
    (
    Select Object_id,Convert(int,0) As LevelNo,name As object_name
    From sys.objects a 
    Where Type='U' And is_ms_shipped=0 And Not Exists(Select 1 From sys.foreign_keys Where referenced_object_id=a.object_id)
    Union All
    Select a.referenced_object_id As Object_id,b.LevelNo+1 As LevelNo,c.name As object_name
    From sys.foreign_keys a 
    Inner Join t b On b.object_id=a.parent_object_id
    Inner Join sys.objects c On c.object_id=a.referenced_object_id And c.is_ms_shipped=0
    Where a.referenced_object_id<>a.parent_object_id --過濾掉外鍵來自的本身的數據
    )
    Insert Into #Objects(object_id,name)
    Select a.object_id,object_name
    From t a
    Where Not Exists(Select 1 From t Where object_id=a.object_id And LevelNo>a.LevelNo) And
    Not Exists(Select 1 From sys.extended_properties Where major_id=a.object_id And minor_id=0 And class=1 And Name=N'microsoft_database_tools_support')
    And (Exists(Select 1 From @Tmp Where name=a.object_name) Or Not Exists(Select 1 From @Tmp))
    Group By object_id,object_name,LevelNo
    Order By LevelNo Desc
    Option(Maxrecursion 50) Set @Rowcount=@@Rowcount
    If @Rowcount=0
    Begin
    Raiserror 50001 N'沒有可以生成腳本的表!'
    Return(1)
    End --Column
    Select a.object_id,
    a.column_id As Seq,
    Cast(1 As tinyint) As DefinitionType,
    Quotename(a.name)+Char(32)+ c.name +
    Case 
    When a.user_type_id In (231,239) Then '('+Case a.max_length When -1 Then 'Max' Else Rtrim(a.max_length/2) End +')'
    When a.user_type_id In (62,165,167,173,175) Then '('+Case a.max_length When -1 Then 'Max' Else Rtrim(a.max_length) End+')'
    When a.user_type_id In (106,108) Then '('+Rtrim(a.[precision])+','+Rtrim(a.scale)+')' 
    Else ''
    End
    + Char(32)+
    Case a.is_rowguidcol When 1 Then 'Rowguidcol ' Else '' End +
    Case a.is_identity When 1 Then 'Identity('+Cast(d.seed_value As nvarchar(10))+','+Cast(d.increment_value As nvarchar(10))+') ' Else '' End+ 
    Case a.is_nullable When 1 Then 'Null ' Else 'Not Null ' End+
    Isnull('Constraint '+Quotename(e.name)+' Default('+e.definition+')','') As definition Into #Columns
    From sys.columns As a
    Inner Join #Objects As b On b.object_id=a.object_id
    Inner Join sys.types As c On c.user_type_id=a.user_type_id
    Left Outer Join sys.identity_columns As d On d.object_id=a.object_id And d.column_id=a.column_id And a.is_identity=1
    Left Outer Join sys.Default_constraints As e On e.object_id=a.default_object_id And e.parent_column_id=a.column_id Create Nonclustered Index IX_#Columns_object_id On #Columns(object_id Asc) --Constraint
    Insert Into #Columns

    Select a.parent_object_id As object_id,
    Row_number() Over(Partition By a.parent_object_id Order By Case a.type When 'PK' Then 1 When 'C' Then 2 Else 3 End)As Seq,
    2 As DefinitionType,
    'Alter Table '+Quotename(object_name(a.parent_object_id)) +' Add Constraint '+Quotename(a.name)+
    Case a.type 
    When 'PK' Then ' Primary Key '+Case When Exists(Select 1 From sys.indexes Where object_id=a.parent_object_id And is_primary_key=1 And type=1) Then N'Clustered ' Else N'Nonclustered ' End+
    '('+Stuff((Select ','+Quotename(c1.Name)+Case a1.is_descending_key When 1 Then ' Desc' Else ' Asc' End
    From sys.index_columns As a1
    Inner Join sys.indexes As b1 On b1.object_id=a1.object_id And b1.index_id=a1.index_id And b1.is_primary_key=1
    Inner Join sys.columns As c1 On c1.object_id=a1.object_id And c1.column_id=a1.column_id
    Where a1.object_id=a.parent_object_id 
    For Xml Path('')
    ),1,1,'')+
    ')'
    When 'F' Then ' Foreign Key ('+Stuff((Select ','+Quotename(b1.Name)
    From sys.foreign_key_columns As a1
    Inner Join sys.columns As b1 On b1.object_id=a1.parent_object_id And b1.column_id=a1.parent_column_id
    Where a1.constraint_object_id=a.object_id 
    Order By a1.constraint_column_id
    For Xml Path('')
    ),1,1,'')+
    ') References '+(Select Quotename(object_name(referenced_object_id)) From  sys.foreign_keys Where object_id=a.object_id)+
    ' ('
    +Stuff((Select ','+Quotename(b1.Name)
    From sys.foreign_key_columns As a1
    Inner Join sys.columns As b1 On b1.object_id=a1.referenced_object_id And b1.column_id=a1.referenced_column_id
    Where a1.constraint_object_id=a.object_id 
    Order By a1.constraint_column_id
    For Xml Path('')
    ),1,1,'')+
    ')'
    When 'UQ' Then ' Unique'+(Select Case a1.type When 1 Then ' Clustered' Else ' Nonclustered' End
    From sys.indexes As a1
    Where a1.object_id=a.parent_object_id 
    And Exists(Select 1 From sys.key_constraints Where object_id=a.object_id And parent_object_id=a1.object_id And unique_index_id=a1.index_id)
       )+
    '('+Stuff((Select ','+Quotename(c1.Name)+Case a1.is_descending_key When 1 Then ' Desc' Else ' Asc' End
    From sys.index_columns As a1
    Inner Join sys.indexes As b1 On b1.object_id=a1.object_id And b1.index_id=a1.index_id And b1.is_unique_constraint=1
    Inner Join sys.columns As c1 On c1.object_id=a1.object_id And c1.column_id=a1.column_id
    Where a1.object_id=a.parent_object_id 
    And Exists(Select 1 From sys.key_constraints Where object_id=a.object_id And parent_object_id=a1.object_id And unique_index_id=a1.index_id)
    For Xml Path('')
    ),1,1,'')+
    ')'
    When 'C' Then ' Check' +(Select definition From sys.check_constraints Where object_id=a.object_id)
    Else ''
    End As definition From sys.objects As a
    Where a.type In('PK','F','C','UQ')
    And Exists(Select 1  From #Objects Where object_id=a.parent_object_id) --Index
    Insert Into #Columns
    Select a.object_id ,
    a.index_id As Seq,
    3 As DefinitionType,
    'Create '+Case a.is_unique When 1 Then 'Unique ' Else '' End+
    Case a.type When 1 Then 'Clustered ' Else 'Nonclustered ' End+
    'Index '+Quotename(a.name)+' On '+Quotename(b.name)+
    ' ('+Stuff((Select ','+Quotename(b1.Name)+Case a1.is_descending_key When 1 Then ' Desc' Else ' Asc' End
    From sys.index_columns As a1
    Inner Join sys.columns As b1 On b1.object_id=a1.object_id And b1.column_id=a1.column_id
    Where a1.object_id=a.object_id And a.index_id=a1.index_id And a1.is_included_column=0
    For Xml Path('')
    ),1,1,'')+
    ')'+
    Isnull(' Include('+Stuff((Select ','+Quotename(b1.Name)
    From sys.index_columns As a1
    Inner Join sys.columns As b1 On b1.object_id=a1.object_id And b1.column_id=a1.column_id
    Where a1.object_id=a.object_id And a.index_id=a1.index_id And a1.is_included_column=1
    For Xml Path('')
    ),1,1,'')+
    ')','')
    As definition
    From sys.indexes As a
    Inner Join #Objects As b On b.object_id=a.object_id
    Where a.type>0
    And Not Exists(Select 1 From sys.key_constraints Where parent_object_id=a.object_id And unique_index_id=a.index_id) --Print
    Print 'Use '+Quotename(db_name())+@Enter+'Go'+@Enter+'/* 創建表結構 Andy '+Convert(nvarchar(10),Getdate(),120)+'*/'+@Enter Set @id=1
    While @id<=@Rowcount
    Begin
    Select @objectid=object_id,@ObjectName=name From #Objects Where id=@id Set @Sql=@Enter+'--('+Rtrim(@id)+'/'+Rtrim(@Rowcount)+') '+@ObjectName+@Enter+'If object_id('''+Quotename(@ObjectName)+''') Is Null'+@Enter+'Begin'+@Enter+@Tab+
    'Create Table '+Quotename(@ObjectName)+@Enter+@Tab+'('+@Enter
    Select @Sql=@Sql+@Tab+@Tab+definition+','+@Enter
    From #Columns 
    Where object_id=@objectid 
    And DefinitionType=1
    Group By Seq,definition
    Order By Seq
    Set @sql=Substring(@sql,1,Len(@sql)-3)+@Enter+@Tab+')'+@Enter
    Select @Sql=@Sql+@Tab+definition+@Enter
    From #Columns 
    Where object_id=@objectid 
    And DefinitionType>1
    Group By DefinitionType,Seq,definition
    Order By Seq Print Substring(@sql,1,Len(@sql)-2)+@Enter+'End'
    Set @id=@id+1
    End Print 'Go' Drop Table #Columns
    Drop Table #Objects
    Go
      

  4.   

    e.g.Use [AdventureWorks]
    Go
    /* 創建表結構 Andy 2011-07-26*/--(1/71) Contact
    If object_id('[Contact]') Is Null
    Begin
    Create Table [Contact]
    (
    [ContactID] int Identity(1,1) Not Null ,
    [NameStyle] NameStyle Not Null Constraint [DF_Contact_NameStyle] Default(((0))),
    [Title] nvarchar(8) Null ,
    [FirstName] Name Not Null ,
    [MiddleName] Name Null ,
    [LastName] Name Not Null ,
    [Suffix] nvarchar(10) Null ,
    [EmailAddress] nvarchar(50) Null ,
    [EmailPromotion] int Not Null Constraint [DF_Contact_EmailPromotion] Default(((0))),
    [Phone] Phone Null ,
    [PasswordHash] varchar(128) Not Null ,
    [PasswordSalt] varchar(10) Not Null ,
    [AdditionalContactInfo] xml Null ,
    [rowguid] uniqueidentifier Rowguidcol Not Null Constraint [DF_Contact_rowguid] Default((newid())),
    [ModifiedDate] datetime Not Null Constraint [DF_Contact_ModifiedDate] Default((getdate()))
    )
    Alter Table [Contact] Add Constraint [PK_Contact_ContactID] Primary Key Clustered ([ContactID] Asc)
    Alter Table [Contact] Add Constraint [CK_Contact_EmailPromotion] Check([EmailPromotion]>=(0) AND [EmailPromotion]<=(2))
    Create Unique Nonclustered Index [AK_Contact_rowguid] On [Contact] ([rowguid] Asc)
    Create Nonclustered Index [IX_Contact_EmailAddress] On [Contact] ([EmailAddress] Asc)
    Create Nonclustered Index [PXML_Contact_AddContact] On [Contact] ([AdditionalContactInfo] Asc)
    End--(2/71) CountryRegion
    If object_id('[CountryRegion]') Is Null
    Begin
    Create Table [CountryRegion]
    (
    [CountryRegionCode] nvarchar(3) Not Null ,
    [Name] Name Not Null ,
    [ModifiedDate] datetime Not Null Constraint [DF_CountryRegion_ModifiedDate] Default((getdate()))
    )
    Alter Table [CountryRegion] Add Constraint [PK_CountryRegion_CountryRegionCode] Primary Key Clustered ([CountryRegionCode] Asc)
    Create Unique Nonclustered Index [AK_CountryRegion_Name] On [CountryRegion] ([Name] Asc)
    End
    .... ... ...
      

  5.   

    在“设置脚本编写选项”里将“为服务器版本编写脚本”(默认为当前SQL版本)设置为sql2000