SQL2005生成SQL2000脚本的一些解决方法

时间:2006/6/10 18:01:13      阅读:9992          
      刚刚完成了一个数据库在SQL2005下的系统,由于原来服务器的数据库使用的是SQL2000,在服务器的数据库暂时没有进行升级时必须把数据库转换成SQL2000下使用,遇到了一些问题。
      SQL2005的语法和SQL2000的语法有所不同,数据库无法使用备份和附加的方法转换到SQL2000,必须先转换成脚本文件,然后在2000中用这个脚本建立目标库,再用数据导入/导出把数据从2005导到2000即可,按SQL2005提供转换到SQL2000的方法,经过自定义生成的对象,如图:


我们来SQL2005看看生成的脚本:
 1SET ANSI_NULLS ON
 2GO
 3SET QUOTED_IDENTIFIER ON
 4GO
 5IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[web3_News]') AND type in (N'U'))
 6BEGIN
 7CREATE TABLE [dbo].[web3_News](
 8    [ID] [int] IDENTITY(1,1) NOT NULL,
 9    [Title] [varchar](100) NULL,
10    [Contents] [varchar](250) NULL,
11 CONSTRAINT [PK_web3_News] PRIMARY KEY CLUSTERED 
12(
13    [ID] ASC
14)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
15) ON [PRIMARY]
16END


再看一下SQL2000生成的的脚本:

 1if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[web3_News]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
 2drop table [dbo].[web3_News]
 3GO
 4
 5CREATE TABLE [dbo].[web3_News] (
 6    [ID] [int] IDENTITY (1, 1) NOT NULL ,
 7    [Title] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
 8    [Contents] [varchar] (250) COLLATE Chinese_PRC_CI_AS NULL 
 9) ON [PRIMARY]
10GO
11
12ALTER TABLE [dbo].[web3_News] WITH NOCHECK ADD 
13    CONSTRAINT [PK_web3_News] PRIMARY KEY  CLUSTERED 
14    (
15        [ID]
16    )  ON [PRIMARY] 
17GO


把SQL2005下选用生成SQL2000的脚本在SQL2000下使用,出现了一些错误

      不知道是不是我的方法有问题,居然按MS的方法生成的脚本还是有错误,接下来我把WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]去掉,语法是没有错误了,但还是出现了两个错误,系统提示未能找到存储过程 'sys.objects',列名 'object_id' 无效,还要把sys.objects替换成dbo.sysobjects,object_id替换成id (把object_去掉)然后再运行才能正常。

      这是一个简单的表,相关定义不多,如果定义约束、因子填充等条件更多错误,没办法,暂时找不到解决的方法只能手工修改了,一个字,累……

      希望各位高手们提供更好的方法给俺也来学习一下咯,就转一下MS的一篇文章过来吧,如下:

SQL2005如何生成脚本 (SQL Server Management Studio) 

您可以使用生成 SQL Server 脚本向导或对象资源管理器创建脚本。

生成 SQL Server 脚本向导

生成脚本向导将引导您完成创建脚本的各个步骤,并允许您同时选择要创建脚本的各种对象。该向导提供各种用于创建脚本的选项,包括是否包含权限、排序规则、约束等。为大量对象创建脚本时,请使用该向导。有关生成 SQL Server 脚本向导的详细信息,请参阅生成 SQL Server 脚本向导的 F1 帮助

打开生成脚本向导
  1. 在对象资源管理器中,展开“数据库”,右键单击某个数据库,指向“任务”,然后单击“生成脚本”。

  2. 按照向导中的步骤,创建数据库对象的脚本。

对象资源管理器

使用对象资源管理器可以快速创建整个数据库的脚本,也可以使用默认选项创建单个数据库对象的脚本。您可以在查询编辑器窗口中对文件或剪贴板创建脚本。

您可以创建用于创建或删除对象的脚本。有些对象类型具有其他脚本选项,如 ALTER、SELECT、INSERT、UPDATE、DELETE 和 EXECUTE。

有时您可能需要使用具有多个选项的脚本,如删除一个过程然后创建一个过程,或者创建一个表然后更改一个表。若要创建组合的脚本,请将第一个脚本保存到查询编辑器窗口中,并将第二个脚本保存到剪贴板上,这样就可以在窗口中将第二个脚本粘贴到第一个脚本之后。

若要为某个对象编写脚本,请展开对象资源管理器并找到该对象。右键单击该对象,再单击“编写 <对象类型> 脚本为”。

生成整个数据库的脚本
  1. 在对象资源管理器中,连接到 SQL Server Database Engine 实例,然后展开该实例。

  2. 展开“数据库”,右键单击要创建脚本的数据库,指向“编写数据库脚本为”,再指向“创建到”,然后单击“新查询编辑器窗口”。

请参阅
评论
  • Re:SQL2005生成SQL2000脚本的一些解决方法  (2007/10/20 8:13:03) by lypdl 
    SQL2000脚本的一些解决方法
    HAO
  • Re:SQL2005生成SQL2000脚本的一些解决方法  (2007/10/21 9:59:49) by huygan 
    Thanks!
  • Re:SQL2005生成SQL2000脚本的一些解决方法  (2008/6/26 10:16:20) by 西瓜 
    看看这篇文章
    SQLServer2005数据库转换为SQLServer2000
     
标 题:
 
姓 名:
 
主 页:

验证码:

评论:
 

Because of the cache,you may see your comments several minutes later.