日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

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

由Sybase向SQL Server轉移數(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二者之間的一些差別是相當大的,例如Sybase數(shù)據(jù)庫管理系統(tǒng)中的存儲過程在SQL Server就不能被編譯,而其它差別則不太大。在完成這一轉換前,對腳本文件和存儲過程中編程邏輯的行為和結果進行測試是很有必要的。

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

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

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

注意:

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

2、當兼容性模式被設置為65時,下面的詞匯不能被用作對象名和標識符: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ù)庫被設置的兼容性水平(將它設置為70、65、60,缺省值為NULL)。

  例如:

sp_dbcmptlevel pubs

  這一行代碼返回下面的結果:

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

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

sp_dbcmptlevel pubs, 65

  它返回如下的結果:

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

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

sp_dbcmptlevel pubs

  它返回下面的結果:

The current compatibility level is 65(當前的兼容性級別為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
事務管理模式


Sybase SQL Server

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

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

SELECT @@tranchained
GO

  下面是可能返回的結果:

  0 表明使用的是非鏈鎖式事務模式

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

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

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

  下面是可能的返回結果:

0 off
>0 on

  隔離水平

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

Sybase SQL Server

0 READ UNCOMMITTED
1 READ COMMITTED
2 REPEATABLE READ
3 SERIALIZABLE


  游標語法

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

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è)務邏輯
*/
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)被提交了,則事務的其它部分會繼續(xù),被寫到數(shù)據(jù)庫中。因此,事務中的所有語句可能沒有被成功地完成,但數(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,(當前日期)以及3,(當前日期),由于當a = 100時ROLLBACK TRIGGER被觸發(fā),觸發(fā)器中的所有處理被中止,100沒有被插入到Table2表中。
在SQL Server中模擬這一操作需要更多的代碼,外部的事務必須與保存點同時使用,如下所示:

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ā)邏輯,而不是整個事務(規(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的使用,這可能是一個艱巨而必要的任務,沒有什么捷徑可走。如果在移植后所有的ROLLBACK TRIGGER命令被改變?yōu)镽OLLBACK TRANSACTION,觸發(fā)器的執(zhí)行也會發(fā)生變化,因此我們應當十分小心。

  命令優(yōu)化

  SQL Server能夠對SELECT、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ù)的值可以被設置為0、1或NULL。

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

  同一性列

  Sybase SQL Server

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


  打印語法

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

  結論

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

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
午夜少妇久久久久久久久| 欧美婷婷久久| 亚洲免费看av| 国产真实乱子伦精品视频| 国产黄在线看| 国产在线高清精品| 久久综合九色欧美综合狠狠| 日韩在线欧美| 在线一区二区三区精品| 日韩 欧美 亚洲| 欧美精品一区二区三区在线播放| 一级片在线免费看| 日韩欧美中文在线视频| www.xxxx精品| 日韩手机在线观看视频| 在线不卡一区二区| 91精品免费在线观看| 在线欧美日韩国产| 日韩.com| 欧美日韩国产一中文字不卡| 91精品国产综合久久精品app| 国产视频aaa| 欧美99久久| 欧美成人一区二区| 欧美日韩综合视频| 久久精品一二三| 日韩视频在线观看视频| 1区2区3区在线视频| 中文字幕欧美亚洲| 91精品婷婷国产综合久久竹菊| 精品久久久91| 久久精品国产成人一区二区三区| 日韩欧美在线不卡| 亚洲成年人影院在线 | 亚洲女人天堂色在线7777| 国产最新在线| 欧美日韩视频免费看| 欧美婷婷久久| 91精品国产91久久久久久青草 | 国内精品露脸在线视频播放| 日韩av二区| 99视频一区| 九一久久久久久| 国产日韩av高清| 亚洲制服一区| 中文字幕 亚洲视频| 中文字幕一区二区三区精品| 日韩欧美在线网站| 人成免费在线视频| 中文字幕亚洲一区在线观看| 中文字幕精品视频在线| 欧美国产小视频| 欧美在线亚洲一区| 日韩美女视频一区二区在线观看| 国产中文在线视频| 亚洲高清视频一区| 成人久久在线| 国产高清一级片| 91精品999| 亚洲福利在线看| 日韩精品视频在线观看视频| 亚洲日本欧美日韩高观看| 国产激情久久久| 最新中文字幕在线| 一区二区不卡在线| 亚洲乱码中文字幕| 国产在线一区二区视频| 亚洲校园欧美国产另类| 国产一卡2卡3卡四卡网站| 国产在线小视频| 日韩一级二级三级| 欧美三级视频在线| 高清一区二区| 欧美日韩一二| 欧美三级网址| 日韩在线精品视频| 亚洲精品中文字幕乱码三区| 国产成人精品综合久久久| 中文在线不卡| 精品在线99| 1区2区3区在线视频| 中文字幕在线视频第一页| 精品中文字幕视频| 精品国产91| 中文av字幕一区| 在线视频第一页| 精品日韩一区二区三区免费视频| 91精品国产综合久久久久久漫画 | 久久久久久久久综合| 国产精品一区二区三区免费观看| 国产福利在线导航| 色综合天天综合网国产成人综合天| 日韩中文字幕视频在线| 蜜桃精品视频| 成人久久在线| 91精品国产欧美日韩| 亚洲最大黄色| 91精品综合久久| 亚洲永久字幕| 中文字幕精品一区二| 国产欧美日韩精品高清二区综合区| 国产三级中文字幕| 亚洲日产av中文字幕| www.精品视频| 免费在线视频一级不卡| 尤物在线精品| 高清中文字幕在线| 国产成人精品日本亚洲专区61| 国内精品露脸在线视频播放| 国产视频1区2区| 中文在线一区二区| 1区不卡电影| 日韩欧美三级视频| 国产欧美综合在线| 日韩精品视频在线看| 欧美日韩亚洲国内综合网| 日韩色在线观看| 欧美sm一区| 亚洲视频电影在线| 国产男女av| 视频一区视频二区中文| 最近高清中文在线字幕在线观看1| 91精品国产乱码久久蜜臀| 精品国产乱码久久久久久蜜臀| 久久中文免费视频| 国产欧美日韩91| eeuss一区| 第一页在线观看| 在线免费91| 精品视频1区2区3区| 国产一区在线精品| 一区二区视频国产| 精品全国在线一区二区| 日韩精品在线私人| 中文字幕精品国产| 日韩视频在线观看视频| 欧美国产日韩综合| 日韩福利视频导航| 欧美日韩国产91| 久久99蜜桃精品久久久久小说| 日韩精品一页| 日韩欧美999| 亚洲国产午夜精品| 欧美日韩在线播放一区| 国产福利久久| 高清在线一区| 国产一级免费| 91精品网站| 最近高清中文在线字幕在线观看| 欧美高清一区| 国产第一页在线播放| 不卡一二三区| 国产欧美高清在线| 国产手机视频一区二区| 亚洲a一级视频| 一区二区91| 韩日中文字幕第一页| 日韩wumaV| 亚洲美女视频一区| 综合激情一区| 九七久久人人| 欧美亚洲天堂| 天天综合天天做| 国产欧美日韩中文| 亚洲第一中文字幕| 日韩欧美一卡二卡| 午夜一区二区三区免费| 欧洲精品在线视频| 狠狠色综合色区| 免费国产成人看片在线| 国产高清精品在线观看| 亚洲电影中文字幕在线观看| 日韩欧美三级在线| 久久婷婷亚洲| 蜜臀久久精品| 亚洲黄页一区| 日韩欧美中文字幕公布| 欧美日韩在线播放一区| 激情婷婷亚洲| 国产免费播放一区二区| 激情久久99| 中文字幕亚洲一区二区av在线| 国产日韩免费| 色偷偷一区二区三区| 国产 欧美 日韩 在线| 亚洲 国产 欧美 日韩| 国产91久久久久蜜臀青青天草二| 日韩国产专区| 久久av免费| 欧美国产综合在线V| 搞黄在线观看| 亚洲免费观看视频| 国产在线观看a| 日韩精品在线视频观看| 国产久卡久卡久卡久卡视频精品| 国产不卡一区二区在线观看| 日韩欧美国产成人精品免费| 日韩精品国产欧美| 日韩在线高清视频| av免费网站在线观看| 在线日韩中文| 精品中文字幕视频| 欧美不卡123| 中文字幕成人乱码在线电影| 欧美成人vr18sexvr| 91久久精品国产91性色69| 国产绿帽一区二区三区| 欧美日韩在线播放三区四区| 日韩欧美中文视频| 91精品在线免费观看| 国产在线第一页| 自拍日韩亚洲一区在线| 日韩视频免费直播| 成年人看的羞羞网站| 欧美日韩国产综合久久| 日韩高清不卡在线| 欧美日韩性视频一区二区三区 | 亚洲综合在线视频| 久久精品欧美日韩精品| 国产日韩电影| 欧美在线中文字幕| 日韩.欧美.亚洲| 日韩av一区在线| 亚洲精品欧美二区三区中文字幕| 亚洲一区在线观看网站| 日韩在线观看视频一区二区| 日韩中文在线视频| 欧美三级免费观看| 久久久精品福利| 国产一区精品在线| 日韩精品综合在线| 欧美三级在线看| 国产福利在线播放| 91精品国产色综合久久不卡蜜臀 | 欧美日韩国产在线| 日韩 欧美 中文| 欧美日韩中文字幕一区| 亚洲精华国产欧美| 又黄又www的网站| 中文字幕日韩在线视频| 在线国产91| 综合激情一区| 日韩一级二级三级精品视频| 中文字幕日韩免费视频| 日韩在线观看视频一区| 激情综合色综合久久| 日本精品国语自产拍在线观看| 91九色精品视频| wwwwww国产| 国产视频一二区| 欧美久久在线观看| 久久99精品久久久久久青青日本 | 在线欧美日韩精品| 精品成人久久久| 日韩欧美在线中字| 中文字幕在线导航| 日韩精品一级| 欧美日韩在线精品成人综合网 | 亚洲v中文字幕| 日韩在线视频中文字幕| 国产传媒久久久| 91精品国产综合久久久久久漫画 | 欧美一级二级三级区| 欧美中文字幕精品| 91精品国产综合久久香蕉最新版| 亚洲欧美小说国产图片| 高清1区2区| 午夜伊人狠狠久久| 亚洲综合在线电影| 亚洲天堂国产视频| 久久riav| www中文字幕在线观看| 久久精品在线免费观看| 国产www在线观看| 亚洲视频在线观看三级| 日韩精品免费观看视频| 日韩午夜黄色| 蜜臀国产一区| 在线免费91| 日韩在线视频网| 国产在线日韩欧美| 久久久精品免费免费| 精品久久久视频| 一区二区三区在线不卡| 日韩精品 欧美| 美女黄a一级视频| 日韩久久精品网| 亚洲第一视频网站| 91精品国产综合久久福利| 亚洲.国产.中文慕字在线| 日韩精品视频在线播放| 亚洲永久免费视频| 欧美一级二级三级区| 美女在线视频一区| 日韩av一区在线| 国产福利在线看| 欧美性极品xxxx做受| 国产一二三视频| 国产黄色小视频| 欧美在线亚洲一区| 成人福利一区| 欧美99久久| 欧美 日韩 综合| 欧美日韩午夜在线视频| 欧美高清一级片在线| 久久视频一区| 国产95在线|亚洲| 中文字幕精品亚洲| 日韩在线观看视频一区| 91欧美日韩在线| 欧美日韩中文| 色综合婷婷久久| 中文字幕亚洲区| 国产欧美日产一区| 亚洲欧洲综合另类| 欧美中文字幕在线视频| 99精品在线播放| 欧美1234区| 91精品综合久久| 日韩 欧美 中文| 91精品国产自产观看在线| 亚洲福利在线视频| 一区二区三区鲁丝不卡| 欧美国产综合视频| 免费高清特黄a大片| 久久中文精品| 中文字幕一区二区三区精品| 国产一级免费看| 色欧美日韩亚洲| 欧美在线视频第一页| 国产99精品| 免费国产h视频在线观看86| 久久久精品日韩欧美| 日韩精品一页| 国产三级做爰在线观看| 亚洲精品中文字幕乱码三区| 在线观看免费国产小视频| 91精品久久久久久久久| 亚洲免费精品| 国产最新在线| 日韩视频精品| 久久久久久91| www.中文字幕在线观看| 国产日韩精品久久久| 久久久99免费| 美女尤物久久精品| 视频在线一区二区| 午夜精品免费视频| 欧美日韩国产成人| 国产超级va在线视频| 国内国产区免费视频| 91精品国产调教在线观看| 亚洲视频一二三四| 精品日韩在线| 日韩中文字幕亚洲| 久久精品在线免费观看| 日韩一级中文字幕| 国产中文在线| 欧美久久在线观看| 欧美日韩亚洲一区| а√天堂8资源中文在线| 中文字幕在线中文字幕二区| 欧美一级在线免费| 最近中文字幕日韩精品| 日韩欧美99| 国产小视频免费在线网址| 国产精久久久久| 欧美熟妇乱码在线一区| 91精品综合久久| 国产视频一区三区| 欧美日韩在线不卡视频| 欧美日韩国产大片| 日韩亚洲一区中文字幕| 久久精品国产视频| 国产欧美日韩精品综合| 伊人www22综合色| 91欧美日韩麻豆精品| 日韩午夜中文字幕| 日韩欧美三级视频| 日韩久久在线| 中文字幕在线视频日韩| 欧美日韩综合在线观看| 精品一二三区| 国产福利免费观看| 国产乱码午夜在线视频| 精品国产免费视频| 999精品色在线播放| 久久久99精品久久| 亚洲高清在线观看一区| 欧美日韩综合视频| 国产三级中文字幕| 99精品人妻国产毛片| 99久久精品国产成人一区二区| 亚洲欧洲在线观看av| 亚洲国产91精品在线观看| 国产区高清在线| 亚洲国产www| 伊人精品视频| 日韩欧美一级精品久久| 国产在线视频不卡|