亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數(shù)據(jù)庫 > Sybase > 正文

由Sybase向SQL Server轉(zhuǎn)移數(shù)據(jù)庫的方法

2024-09-06 23:53:55
字體:
供稿:網(wǎng)友

我最近參與了將一個Sybase數(shù)據(jù)庫移植到Microsoft SQL Server 2000上的項目,我在這一項目上獲得的經(jīng)驗,將對Sybase數(shù)據(jù)庫管理員把Sybase數(shù)據(jù)庫移植到SQL Server 2000平臺上有一定的幫助。

Sybase數(shù)據(jù)庫與SQL Server2000二者之間的一些差別是相當(dāng)大的,例如Sybase數(shù)據(jù)庫管理系統(tǒng)中的存儲過程在SQL Server就不能被編譯,而其它差別則不太大。在完成這一轉(zhuǎn)換前,對腳本文件和存儲過程中編程邏輯的行為和結(jié)果進行測試是很有必要的。

在下面的部分中,我們將討論這二種數(shù)據(jù)庫系統(tǒng)之間的一些主要的不同點,在移植的規(guī)劃階段,我們必須仔細研究這些區(qū)別。

數(shù)據(jù)兼容模式

對SQL Server 2000和Sybase之間的一些兼容性差別的一個臨時性解決方案是改變SQL Server中的數(shù)據(jù)庫兼容性級別,使之與Sybase相符。為此,我們可以使用sp_dbcmptlevel存儲過程。

注意:

1、當(dāng)兼容性模式被設(shè)置為70時,下面的詞匯不能被用作對象名和標(biāo)識符:BACKUP、DENY、PRECENT、RESTORE和TOP。

2、當(dāng)兼容性模式被設(shè)置為65時,下面的詞匯不能被用作對象名和標(biāo)識符:AUTHORIZATION、CASCASE、CROSS、DISTRIBUTED、ESCAPE、FULL、INNER、JOIN、LEFT、OUTER、PRIVILEGES、RESTRICT、RIGHT、SCHEMA和WORK。

下面是sp_dbcmptlevel的語法:

sp_dbcmptlevel [[@dbname=] name][,[@new_cmptlevel=]version]

  @dbname是用于檢查和改變兼容性水平的數(shù)據(jù)庫名字。

  @new_cmptlevel決定數(shù)據(jù)庫被設(shè)置的兼容性水平(將它設(shè)置為70、65、60,缺省值為NULL)。

  例如:

sp_dbcmptlevel pubs

  這一行代碼返回下面的結(jié)果:

The current compatibility level is 70.(當(dāng)前的兼容性級別為70。)

  現(xiàn)在我們來看一下另外一個例子:

sp_dbcmptlevel pubs, 65

  它返回如下的結(jié)果:

DBCC execution completed. (DBCC執(zhí)行結(jié)束。)

  果DBCC打印出錯誤信息,則需要與系統(tǒng)管理員聯(lián)系。我們可以使用rerunsp_dbcmptlevel驗證pubs數(shù)據(jù)庫是否修改得正確:

sp_dbcmptlevel pubs

  它返回下面的結(jié)果:

The current compatibility level is 65(當(dāng)前的兼容性級別為65。)

  除了上面的例子外,兼容性級別的差別還擴展到了保留字。Sybase和SQL Server都有許多不能被用作數(shù)據(jù)庫中對象名字的的保留字,二種產(chǎn)品的保留字相似,但并不完全相同。

  由于能夠在Sybase中使用的對象可能不能在SQL Server中使用,這一問題使得由Sybase向SQL Server的移植憑添了許多困難。下面是在SQL Server中是保留字,而在Sybase中不是保留字的詞匯清單。
注意:名字為下列清單中詞匯的Sybase數(shù)據(jù)庫中的對象在移植到SQL Server數(shù)據(jù)庫時必須換為其它名字。

BACKUP COLUMN COMMITTED CONTAINS CONTAINSTABLE
CROSS CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER
DENY DISTRIBUTED FILE FLOPPY FREETEXT
FREETEXTTABLE FULL IDENTITYCOL INNER JOIN
事務(wù)管理模式


Sybase SQL Server

Set chained [ on : off ] Set implicit_transactions [on : off ]

  在Sybase中使用下面的代碼判斷事務(wù)模式:

SELECT @@tranchained
GO

  下面是可能返回的結(jié)果:

  0 表明使用的是非鏈鎖式事務(wù)模式

  1 表明連接運行在鏈鎖模式下

  在SQL Server中使用下面的代碼判斷事務(wù)模式:

IF (@@options & 2) > 0
 PRINT on
ELSE
 PRINT off

  下面是可能的返回結(jié)果:

0 off
>0 on

  隔離水平

  在一個關(guān)系數(shù)據(jù)庫這樣的多線程應(yīng)用軟件中,數(shù)據(jù)庫引擎對運行的進程間的數(shù)據(jù)是如何被隔離的管理是非常重要的,在表示隔離水平時,Sybase和SQL Server的語法是不同的。下面的表格表明了Sybase和SQL Server在表示隔離水平時的差別。

Sybase SQL Server

0 READ UNCOMMITTED
1 READ COMMITTED
2 REPEATABLE READ
3 SERIALIZABLE


  游標(biāo)語法

  二種產(chǎn)品中存儲過程的創(chuàng)建和執(zhí)行基本相似,但在移植時,游標(biāo)語句中的一些例外是我們應(yīng)當(dāng)注意的。下面是一個例子:

CREATE PROCEDURE sql_cursor AS
DECLARE @lname char(20), @fname char(20)
DECLARE mycursor CURSOR FOR
SELECT au_lname, au_fname FROM authors
OPEN mycursor
FETCH FROM mycursor INTO @lname, @fname
WHILE @@ FETCH_STATUS = 0
/* Sybase數(shù)據(jù)庫使用@SQLSTATUS而不是@@ FETCH_STATUS */
BEGIN
FETCH FROM mycursor INTO @lname, @fname
/*
** 這里應(yīng)當(dāng)是一些業(yè)務(wù)邏輯
*/
END
CLOSE mycursor
DEALLOCATE /* Sybase數(shù)據(jù)庫在這里需要CURSOR這個詞 * / mycursor


Sybase SQL Server

Fetch命令執(zhí)行成功 0 0
Fetch命令執(zhí)行失敗 1 -2
沒有可存取的記錄了 2 -1
退回觸發(fā)器

  SQL Server中不存在這個命令,因此在向SQL Server移植時,使用了ROLLBACK TRIGGER命令的Sybase存儲過程必須被進行修改。在修改帶有觸發(fā)器的數(shù)據(jù)庫表中的數(shù)據(jù)時,使用ROLLBACK TRIGGER命令容易引起誤解,一個ROLLBACK TRIGGER命令只退回觸發(fā)器以及觸發(fā)觸發(fā)器的數(shù)據(jù)修改,如果已經(jīng)被提交了,則事務(wù)的其它部分會繼續(xù),被寫到數(shù)據(jù)庫中。因此,事務(wù)中的所有語句可能沒有被成功地完成,但數(shù)據(jù)已經(jīng)被提交了。
下面是Sybase數(shù)據(jù)庫中一個使用ROLLBACK TRIGGER的樣例觸發(fā)器:


CREATE TABLE table1 (a int, b int)
GO
CREATE TRIGGER trigger1 on table1 FOR INSERT
AS
IF EXISTS (SELECT 1 FROM inserted WHERE a = 100)
BEGIN
ROLLBACK TRIGGER with RAISERROR 50000 Invalid value for column a
END
INSERT INTO table2
SELECT a, GETDATE() from inserted
RETURN
GO

  在上面的代碼中,除非a = 100,則所有插入table1的數(shù)據(jù)也被作為審計行插入table2中,如果a = 100,ROLLBACK TRIGGER命令被觸發(fā),而INSERT命令沒有被觸發(fā),批命令的其它部分繼續(xù)執(zhí)行,這時會出現(xiàn)錯誤信息,表明在一個INSERT命令中出現(xiàn)了錯誤。下面是所有的INSERT命令:


BEGIN TRAN
INSERT INTO table1 VALUES (1, 1)
INSERT INTO table1 VALUES (100,2)
INSERT INTO table1 VALUES (3, 3)
GO
SELECT * FROM table1

  在執(zhí)行這些命令后,table1和table2二個數(shù)據(jù)庫表將各有2個記錄,Table1表中的值為1,1以及3,3,由于ROLLBACK TRIGGER命令,第二個INSERT命令沒有執(zhí)行;Table2表中的值為1,(當(dāng)前日期)以及3,(當(dāng)前日期),由于當(dāng)a = 100時ROLLBACK TRIGGER被觸發(fā),觸發(fā)器中的所有處理被中止,100沒有被插入到Table2表中。
在SQL Server中模擬這一操作需要更多的代碼,外部的事務(wù)必須與保存點同時使用,如下所示:

CREATE trigger1 on table1 FOR INSERT
AS
SAVE TRAN trigger1
IF EXISTS (SELECT * FROM inserted WHERE a = 100)
BEGIN
ROLLBACK TRAN trigger1
RAISERROR 50000 ROLLBACK
END
INSERT INTO table2
SELECT a, GETDATE() FROM inserted
GO

  這一觸發(fā)器以一個存儲點開始,ROLLBACK TRANSACTION只退回觸發(fā)邏輯,而不是整個事務(wù)(規(guī)模要小于Sybases數(shù)據(jù)庫中的ROLLBACK TRIGGER語句。對批命令的修改如下:

BEGIN TRAN
SAVE TRAN save1
INSERT INTO table1 VALUES (1, 1)
IF @@error = 50000
ROLLBACK TRAN save1
SAVE TRAN save2
INSERT INTO table1 VALUES (100, 1)
IF @@error = 50000
ROLLBACK TRAN save2
SAVE TRAN save3
INSERT INTO table1 VALUES (3, 3)
IF @@error = 50000
ROLLBACK TRAN save3
COMMIT TRAN

  我們可以發(fā)現(xiàn),改變不可謂不大。由于ROLLBACK TRIGGER命令能夠使任何批命令不能成功執(zhí)行,因此在移植的SQL Server存儲過程代碼中必須包括另外的邏輯,根據(jù)ROLLBACK TRIGGER的使用,這可能是一個艱巨而必要的任務(wù),沒有什么捷徑可走。如果在移植后所有的ROLLBACK TRIGGER命令被改變?yōu)镽OLLBACK TRANSACTION,觸發(fā)器的執(zhí)行也會發(fā)生變化,因此我們應(yīng)當(dāng)十分小心。

  命令優(yōu)化

  SQL Server能夠?qū)ELECT、INSERT、UPDATE和DELETE命令進行優(yōu)化,Sybase數(shù)據(jù)庫則只支持對SELECT命令進行優(yōu)化。下面是SQL Server和Sybase在GUI方面的對比:

  Sybase SQL Server

  使用被稱作SHOWPLAN的基于文本的查詢分析工具 使用Query Analyzer。

  在ISQL中啟動SHOWPLAN的命令按鈕 多Query Analyzer中啟動SHOWPLAN_ALL或 SHOWPLAN_TEXT的命令
SET SHOWPLAN ON SET SHOWPLAN_ALL
GO GO

  臨時數(shù)據(jù)庫表的名字

  表名字的類型    最大長度

  SQL Server表名字   128
  SQL Server臨時表名字 116
  Sybase表名字      30
  Sybase臨時表名字    13


  數(shù)據(jù)類型

  數(shù)據(jù)類型 Sybase SQL Server
  char(n) 255 8000
  varchar(n) 255 8000
  nchar(n) 255 4000
  nvarchar(n) 255 4000
  binary 255 8000
  varbinary 255 8000

  注意:

  1)SQL Server中的bit類型數(shù)據(jù)的值可以被設(shè)置為0、1或NULL。

  2) Sybase中的bit類型數(shù)據(jù)的值不可以被設(shè)置為NULL。

  同一性列

  Sybase SQL Server

Numeric(x,0) Tinyint,smallint,int,decimal(x,0) or numeric(x,0)


  打印語法

  在進行移植時,所有使用替換語法的打印語句必須被改變?yōu)镽AISERROR語句。

  結(jié)論

  將Sybase數(shù)據(jù)庫轉(zhuǎn)換為SQL Server數(shù)據(jù)庫并非是不可能的,但二種產(chǎn)品之間存在許多差異,在轉(zhuǎn)換時需要加以解決。根據(jù)應(yīng)用程序的規(guī)模,這種轉(zhuǎn)換可能需要大量的時間。盡管無需重新編寫所有的應(yīng)用程序,但需要完成的工作并不少。

  我目前還沒有發(fā)現(xiàn)這二種數(shù)據(jù)庫間轉(zhuǎn)換的更簡單的方法。由于二種產(chǎn)品在許多方面都非常相似,我們非常容易成功地將Sybase數(shù)據(jù)庫轉(zhuǎn)換為SQL Server數(shù)據(jù)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
人人妻人人澡人人爽久久av| 欧美男女交配视频| 四色最新网址| 日本熟妇一区二区三区| 91久久国产综合久久91| 任你弄精品视频免费观看| 亚洲国产最新| yw3121.龙物视频永不失联| 蜜桃一区二区三区四区| 欧美日韩国产系列| 久久久久久久久97黄色工厂| 日韩激情在线播放| 中文字幕一二三| 久久精品人妻一区二区三区| 日日噜噜噜夜夜爽亚洲精品| 中文字幕免费看| 亚洲国产视频一区二区三区| 亚洲精品www| 黄色在线免费看| 成人性生交大片免费看中文视频| 成人ww免费完整版在线观看| 欧美精品一二区| 欧美日韩爱爱| 秋霞午夜理伦电影在线观看| 欧美亚州韩日在线看免费版国语版| 丁香桃色午夜亚洲一区二区三区| 久久久亚洲午夜电影| 一区二区三区在线免费看| 人人澡人人爽| 天堂在线视频播放| 中文字幕日产av一二三区| 久久久久伊人| 国产精品久久久久影院日本| 欧美一级国产精品| 国产l精品国产亚洲区在线观看| 天堂va蜜桃一区二区三区| 色噜噜久久综合| av中文字幕在线免费观看| 视频欧美一区| 亚洲乱码日产精品bd在线观看| 国产美女视频黄a视频免费| 国产日产欧美一区二区视频| 国产视频精品va久久久久久| 色播亚洲视频在线观看| 欧美一二三四在线| 亚洲精品国产精品国自产观看浪潮| www.香蕉视频| 国产成人一区二区在线| 午夜肉伦伦影院| 中文乱码字幕av网站| 欧美一区二区日韩一区二区| 国产成人在线视频观看| 欧美日韩国产在线观看| 欧美日韩中文一区| 欧洲国产伦久久久久久久| 成人毛片视频在线观看| 天海翼视频在线观看| 国内精品免费视频精选在线观看| 亚洲综合清纯丝袜自拍| 免费三级欧美电影| 久久国产直播| 久久精品国产精品亚洲红杏| 久久伊人国产| 蜜臀久久精品| blackedav金发美女大战黑人| 亚洲国产午夜| 成人一级片免费看| 91丨porny丨在线| 欧美成人在线影院| 最新天堂在线视频| 97在线播放免费观看| 久久99精品国产麻豆婷婷洗澡| 中文字幕手机在线观看| 亚洲一本大道在线| 国产精品sss在线观看av| 久久爱www.| 一区二区三区免费在线观看视频| 日韩色图在线观看| 精品国产免费人成在线观看| 久热中文字幕在线精品首页| 欧美大片在线看免费观看| 88av在线播放| 国产91久久精品一区二区| 老司机精品福利在线观看| 午夜亚洲激情| 91肉色超薄丝袜脚交一区二区| 日本道色综合久久| 久久av在线播放| av黄色免费网站| 二区三区在线播放| 亚洲成人一区二区三区| 亚洲综合激情网| 97精品国产露脸对白| 中文字幕第一区二区| 最近2019好看的中文字幕免费| 亚洲久草在线视频| 久久综合九色综合97婷婷女人| 亚洲妇熟xx妇色黄蜜桃| 成人综合婷婷国产精品久久| 中文字幕色婷婷在线视频| 51自拍视频在线观看| 国产欧美日韩综合精品二区| 久国产精品韩国三级视频| 91精品国产色综合久久不卡98口| 日韩欧美视频一区二区三区四区| 精品国产导航| 人妻无码一区二区三区四区| 五月激情综合网| 交videos老少配com| 成人乱人伦精品视频在线观看| 99久久精品免费看国产四区| av永久免费观看| 美女被男人操网站| 欧美成熟视频| 久久久久久久久久久久久久av| 日本在线免费播放| 日本人dh亚洲人ⅹxx| 一个人免费视频www在线观看| 91精品久久久久久久久久入口| 亚欧视频在线观看| 日韩黄色在线播放| 精品一区二区三区的国产在线播放| 91丨九色丨蝌蚪| 99视频在线观看免费| 亚洲欧美激情在线视频| 久久久久无码精品| jizzjizz在线观看| 麻豆国产欧美日韩综合精品二区| 精品国产午夜福利| 四虎中文字幕| 免费国产阿v视频在线观看| 欧美性受极品xxxx喷水| 男人天堂手机在线视频| 久久成人免费网| 一二三四视频在线社区中文字幕2| 上原亚衣加勒比在线播放| 黄色在线播放网站| 精品少妇一区二区三区免费观| 国产福利免费观看| h视频免费高清在线观看| 国产精品久久久久久妇女| 日本一区二区三区dvd视频在线| 欧美久久精品一级c片| 日本aⅴ精品一区二区三区| 天天色综合成人网| 免费黄色在线网站| 乱人伦视频在线| 成人黄视频在线观看| 中文欧美日本在线资源| 欧美成人禁片在线www| 色婷婷久久久综合中文字幕| 你真棒插曲来救救我在线观看| 777久久精品一区二区三区无码| 午夜精品国产精品大乳美女| 男女性色大片免费观看一区二区| 激情视频一区二区| 国产成人在线观看| 亚洲一区免费视频| 九九在线精品| 欧美gay男男猛男无套| 91在线不卡| 中文字幕亚洲一区二区三区五十路| 福利视频久久| 黄色小视频在线免费看| 成熟丰满熟妇高潮xxxxx视频| 老汉av免费一区二区三区| 精品国产福利视频| 美女av一区二区三区| 欧美午夜精品久久久久久久| 美女久久一区| 狂野欧美性猛交xxxx巴西| 欧美黄色影院| 黄色三级在线观看| 黄色国产在线视频| 成人3d动漫网站| 在线观看国产精品日韩av| av一区二区三区免费观看| 国产在线超碰| 日本wwwwww| 99久久精品一区二区成人| 国产剧情麻豆剧果冻传媒视频免费| 男人的天堂avav| 久久99精品久久久久久| 91极品尤物在线播放国产| 美腿丝袜亚洲三区| 日本一区二区成人| 亚洲欧美日韩在线高清直播| 麻豆国产一区| 亚洲在线一区二区三区| 亚洲一区二区精品在线| 无码久久精品国产亚洲av影片| 黄网站网址视频| 国产精品中文字幕久久久| 五月婷婷在线观看视频| 午夜精品一区二区三区视频| 天天爽天天爽天天爽| 国产成人精品网址| 国产亚洲精品精品精品| 少妇久久久久久被弄高潮| 日本一区二区三区四区在线观看| 极品人妻一区二区三区| 国产xxxxx在线观看| 精品国产免费人成电影在线观看四季| 国产精品一区二区你懂得| 欧美日韩国产影院| 免费a视频在线观看| 欧美日韩日日骚| 青青草娱乐视频| 在线免费黄色小视频| 天天综合网站| 欧美国产日韩综合| 国产精品一区二区无码对白| 国产成人亚洲欧美| 粉嫩嫩av羞羞动漫久久久| 成人三级伦理片| 日韩专区视频网站| 日韩在线一二三| 尤物国产在线观看| 瑟瑟视频在线看| 日本va欧美va瓶| 青青在线免费视频| 第九色区av在线| 欧美日韩国产v| 91精品国产高清| 五月天激情图片| 无码人妻丰满熟妇区毛片蜜桃精品| 国产剧情在线观看一区二区| 成人网18免费网站| 日韩欧美大尺度| 国产+人+亚洲| 午夜精品美女自拍福到在线| 日韩免费va| 欧美成人精品在线播放| 久99久精品视频免费观看| 久久国产精品99久久久久久老狼| 久久久精品视频在线| 草久视频在线观看| 无码人妻丰满熟妇区五十路| 91成人免费视频| 小小的日本在线观看免费色网| 亚洲欧美日韩专区| 一区二区三区伦理| 麻豆成人av在线| 性视频1819p久久| 日韩在线欧美在线| 男人的天堂亚洲在线| 欧美电影免费网站| 香蕉视频911| 久久99精品久久久久婷婷| 全亚洲最色的网站在线观看| 日本韩国欧美三级| 亚洲小说图片| 毛片毛片女人毛片毛片| 黑人极品ⅴideos精品欧美棵| 国产超碰在线| 哺乳挤奶一区二区三区免费看| 国产图片综合| 亚洲欧美精品在线观看| 国产免费区一区二区三视频免费| 国产精品久久久久桃色tv| 黄片毛片在线看| 美女激情福利视频在线观看| 黄色资源在线观看| 一区二区三区在线视频111| 老湿机69福利| 四季av一区二区三区| 91中文精品字幕在线视频| 色婷婷亚洲婷婷| 国产二区三区在线| 最近2019中文字幕mv免费看| 国产在线激情视频| 黄色动漫网站| 天天综合网色中文字幕| 国产精品色哟哟网站| heyzo国产| 久久综合色影院| 国产精品日韩欧美大师| 国产精品一区二区在线| 欧洲福利电影| 99在线精品视频免费观看软件| 午夜激情福利电影| 日本高清视频一区二区三区| 神马久久桃色视频| 在线观看亚洲一区二区| 自拍偷拍欧美亚洲| 日本久久久精品视频| 亚洲欧美日韩国产| 国产精品午夜在线观看| 亚洲国产精品一区二区www在线| 激情亚洲网站| 久久综合九色综合97婷婷女人| 日韩你懂的电影在线观看| 成人免费网站在线| 欧美高清视频在线观看mv| 亚洲少妇一区二区三区| 欧美一区高清| 国产九色在线播放九色| 在线看的毛片| 亚洲麻豆精品| 992在线观看| 久久乐国产精品| 成人欧美一区二区三区小说| 99久久精品国产一区| 欧美女同在线观看| 欧美jjzz| 被男人吃奶添下面好舒服动态图| 91人成网站www| 中文字幕在线观看第一页| 在线日韩一区| 精品粉嫩aⅴ一区二区三区四区| 国产啪精品视频网站| 日韩精品资源| 91精品国产色综合| 欧美精品xxx| 激情图区综合网| av最新网址| 国产精品免费久久| 久久国产在线视频| 四色成人av永久网址| 精品国产一区在线| 国产小视频福利在线| 美丽的姑娘在线观看免费动漫| 性生活视频网址| 亚洲人精选亚洲人成在线| 国产精品成人v| 国产美女高潮在线| 亚洲第一免费看片| 在线观看视频一区二区欧美日韩|