SQL Server 2000導(dǎo)入SQL Server 2005生成腳本的問(wèn)題

2010-08-28 10:53:46來(lái)源:西部e網(wǎng)作者:

今天用SQL Server 2005生成了腳本,想導(dǎo)入到SQL Server 2000里面去,運(yùn)行的時(shí)候卻發(fā)現(xiàn)竟然出現(xiàn)N多的錯(cuò)誤!在導(dǎo)出腳本的時(shí)候我明明是選擇了“為服務(wù)器版本編寫(xiě)腳本”為SQL Server 2000啊,但是怎么還是不對(duì)呢?

錯(cuò)誤展示

在SQL分析的時(shí)候出現(xiàn)錯(cuò)誤:

消息 170,級(jí)別 15,狀態(tài) 1,第 22 行
第 22 行: '(' 附近有語(yǔ)法錯(cuò)誤。

在執(zhí)行SQL的時(shí)候出現(xiàn)錯(cuò)誤:

消息 208,級(jí)別 16,狀態(tài) 1,第 1 行
對(duì)象名 'sys.objects' 無(wú)效。
消息 208,級(jí)別 16,狀態(tài) 1,第 1 行
對(duì)象名 'sys.foreign_keys' 無(wú)效。

原因其實(shí)就是SQL Server 2005與SQL Server 2000的語(yǔ)法不同,暫時(shí)icech還沒(méi)有找到一個(gè)簡(jiǎn)單的轉(zhuǎn)換方法,如果你的語(yǔ)句不多,可以用手動(dòng)或者替換的方法自動(dòng)轉(zhuǎn)換一下。具體方法如下:

1、將sys.objects替換成dbo.sysobjects

2、將小寫(xiě)的object_id替換成id

例如:
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[hand]') AND type in (N'U'))
修改成
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[hand]') AND type in (N'U'))

3、將WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]去掉
注意:我發(fā)現(xiàn)這個(gè)如果不去掉的話(huà)也能成功,但是一些默認(rèn)的主鍵就會(huì)沒(méi)有加載成功。

關(guān)鍵詞:SQLServer

贊助商鏈接: