程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL2005生成SQL2000腳本的方法

SQL2005生成SQL2000腳本的方法

編輯:關於SqlServer
下午,客戶問我,關於SQL2005下創建的數據庫,如需要導入到SQL2000下使用要怎麼辦。 SQL2005的語法和SQL2000的語 法有所不同,試了幾次發現數據庫無法使用備份和附加的方法轉換到SQL2000。必須先轉換成腳本文件,然後在2000中用這個腳本建立目標庫,再用數據 導入/導出把數據從2005導到2000即可,按SQL2005提供轉換到SQL2000的方法,經過自定義生成的對象。如果想直接restore或附加 應該是不行的, 用腳本+導數據肯定沒有問題。

以下是SQL2005轉到2000的步驟:

1. 生成for 2000版本的數據庫腳本
2005 的manger studio
-- 打開"對象資源管理器"(沒有的話按F8), 連接到你的實例
-- 右鍵要轉到2000的庫
-- 任務
-- 生成腳本
-- 在"腳本向導"的"選擇數據庫"中, 確定選擇的是要轉到2000的庫
-- 勾選"為所選數據庫中的所有對象編寫腳本"
-- 在接下來的"選擇腳本選項"中, 找到"為服務器版本編寫腳本"項, 選擇"SQL Server 2000"
-- 其他選項根據需要設置
-- 最後把腳本保存到一個 .sql 腳本文件
SQL2005生成SQL2000腳本的一些解決方法
2. 在2000中創建目標數據庫
在查詢分析器(或2005的manger studio在打開腳本文件), 連接到SQL Server 2000,執行上面生成的腳本.以創建一個新的數據庫 3. 將數據從2005導到2000
2005 的manger studio
-- 打開"對象資源管理器"(沒有的話按F8), 連接到你的實例
-- 右鍵要轉到2000的庫
-- 任務
-- 導出數據
-- 在"SQL Server 導入和導出向導"的"選擇數據源"步驟中, 確定選擇的是要導出的數據庫
-- 在"選擇目標"步驟中, 連接到 2000, 並選擇步驟2新建的庫
-- 在"選擇源表和源視圖"中, 選擇所有的表
-- 最後完成 以下是SQL2005生成的腳本: 1 SET ANSI_NULLS ON
2 GO
3 SET QUOTED_IDENTIFIER ON
4 GO
5 IF NOT EXISTS (Select * FROM sys.objects Where object_id = OBJECT_ID(N'[dbo].[web3_News]') AND type in (N'U'))
6 BEGIN
7 Create 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]
16 END

再看一下SQL2000生成的的腳本:
1 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[web3_News]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
2 drop table [dbo].[web3_News]
3 GO
4
5 Create 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]
10 GO
11
12 Alter TABLE [dbo].[web3_News] WITH NOCHECK ADD
13 CONSTRAINT [PK_web3_News] PRIMARY KEY CLUSTERED
14 (
15 [ID]
16 ) ON [PRIMARY]
17 GO

把SQL2005下選用生成SQL2000的腳本在SQL2000下使用,結果出現了一些錯誤: 不知道是不是我的方法有問題,居然按微軟的方法生成的腳本還是有錯誤,接下來我把WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]去掉,語法是沒有錯誤了,但還是出現了兩個錯誤,系統提示未能找到存儲過程 'sys.objects',列名 'object_id' 無效,還要把sys.objects替換成dbo.sysobjects,object_id替換成id (把object_ 去掉)然後再運行才能正常。

這是一個簡單的表,相關定義不多,如果定義約束、因子填充等條件更多錯誤,沒辦法,暫時找不到解決的方法只能手工修改了,一個字,累……

希望有高手們提供更好的方法出來,供大家學習一下!  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved