色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

比較SQL Server 2000 數(shù)據(jù)庫中兩個庫的差異

瀏覽:132日期:2023-11-03 19:37:57

昨天被數(shù)據(jù)庫的不同步給弄郁悶了,開發(fā)和測試的庫不是一個,開發(fā)的這個庫,存儲過程經(jīng)常更新。有時候甚至表結構都有些變化。這就導致了很多問題。一時半會還不知道具體是什么問題,搞得老子很狼狽,一時性起,想寫一個程序來比較兩個庫的不同,方便測試和實施。今天上午,邊開會邊寫,中午的時候通過測試.

主要是兩個SQL語句:查詢庫中表和視圖結構和列屬性不同的SQL如下:

select A. [name] as TableName, B. [name] as Colname, B.xtype, B.xusertype, B.length, B.colid, B.cdefault, B.domain, B.number, B.offset, B.status, B.type, B.usertype, B.prec, B.scale, B.iscomputed, B.isoutparam, B.isnullable, C.COLUMN_DEFAULT, dbo.fnIsColumnPrimaryKey(B. [ID], B. [name]) as PKey from sysobjects A, syscolumns B, INFORMATION_SCHEMA .COLUMNS Cwhere a. id = B. id and A.xtype in ('u', 'v') and A. Name = C.TABLE_NAME and B. Name = C.COLUMN_NAMEorder by A. [ID], B. [Name]

///////每列代表的意思如下name sysname 列名或過程參數(shù)的名稱。 id int 該列所屬的表對象 ID,或與該參數(shù)關聯(lián)的存儲過程 ID。 xtype tinyint systypes 中的物理存儲類型。 typestat tinyint 僅限內(nèi)部使用。 xusertype smallint 擴展的用戶定義數(shù)據(jù)類型 ID。 length smallint systypes 中的最大物理存儲長度。 xprec tinyint 僅限內(nèi)部使用。 xscale tinyint 僅限內(nèi)部使用。 colid smallint 列或參數(shù) ID。 xoffset smallint 僅限內(nèi)部使用。 bitpos tinyint 僅限內(nèi)部使用。 reserved tinyint 僅限內(nèi)部使用。 colstat smallint 僅限內(nèi)部使用。 cdefault int 該列的默認值 ID。 domain int 該列的規(guī)則或 CHECK 約束 ID。 number smallint 過程分組時(0 表示非過程項)的子過程號。 colorder smallint 僅限內(nèi)部使用。 autoval varbinary(255) 僅限內(nèi)部使用。 offset smallint 該列所在行的偏移量;如果為負,表示可變長度行。 status tinyint 用于描述列或參數(shù)屬性的位圖: 0x08 = 列允許空值。 0x10 = 當添加 varchar 或 varbinary 列時,ANSI 填充生效。保留 varchar 列的尾隨空格,保留 varbinary 列的尾隨零。 0x40 = 參數(shù)為 OUTPUT 參數(shù)。 0x80 = 列為標識列。 type tinyint systypes 中的物理存儲類型。 usertype smallint systypes 中的用戶定義數(shù)據(jù)類型 ID。 printfmt varchar(255) 僅限內(nèi)部使用。 prec smallint 該列的精度級別。 scale int 該列的小數(shù)位數(shù)。 iscomputed int 表示是否已計算該列的標志: 0 = 未計算。 1 = 已計算。 isoutparam int 表示該過程參數(shù)是否是輸出參數(shù): 1 = 真。 0 = 假。 isnullable int 表示該列是否允許空值: 1 = 真。 0 = 假。 COLUMN_DEFAULT 默認值 PKey 主鍵。////////用到了如下函數(shù): ---------------------CREATE;FUNCTION dbo.fnIsColumnPrimaryKey(@sTableID int, @nColumnName varchar(128))--alterFUNCTION dbo.fnIsColumnPrimaryKey(@sTableName varchar(128), @nColumnName varchar(128))RETURNS bitASBEGINDECLARE @nTableID int, @nIndexID int, @i intSET; @nTableID =; @sTableID--OBJECT_ID(@sTableName)SELECT; @nIndexID = indidFROM; sysindexesWHERE; id = @nTableID AND; indid BETWEEN 1 And 254 AND; (status & 2048) = 2048IF @nIndexID Is Null RETURN 0IF @nColumnName IN (SELECT sc.[name] FROM; sysindexkeys sik INNER JOIN syscolumns sc ON sik.id = sc.id AND sik.colid = sc.colid WHERE; sik.id = @nTableID AND; sik.indid = @nIndexID) BEGIN RETURN 1 END

RETURN 0END---------------------通過這個SQL語句可以查出數(shù)據(jù)庫中所有表的列屬性。通過分別執(zhí)行兩次這個SQL語句,就可以取出兩個庫中列的屬性比較了。----------------------------------------------------------------對于存儲過程和函數(shù) 用下面的SQL語句:select * from sysobjects; where xtype in ('P','TF','IF','FN'); order by [Name] 可以查詢出所有的存儲過程和函數(shù)名。循環(huán)查詢出來的 結果,每個循環(huán)中 將函數(shù)或存儲過程名存到一字符串SpobjectName中,然后調(diào)用 存儲過程: sp_helptext 如下:exec sp_helptext '' +SpobjectName+'' 返回一個表 表中就是 SpobjectName 存儲過程中的文本類容 。存儲過程中一行文本對應表中一行。把所有的SP和函數(shù)把用 exec sp_helptext 執(zhí)行就得到了所有的存儲過程和函數(shù)的代碼。將得到的結果放一個表中再比較異同就是了。

參考:SQL Server 聯(lián)機叢書< 數(shù)據(jù)庫中存儲過程的自動化生成>(http://www.vckbase.com/document/viewdoc/?id=1111)現(xiàn)在只做了比較表和視圖的列屬性,以及存儲過程和函數(shù).沒有實現(xiàn)比較表之間了約束關系.以后加上.

主站蜘蛛池模板: 国产成人yy精品1024在线 | 精品国产成人a在线观看 | 色播亚洲视频在线观看 | 国产精品久久在线 | 亚洲欧美视频在线播放 | 91精品国产手机在线版 | 亚洲国产人成中文幕一级二级 | 国产一区二区三区不卡在线观看 | 久久精品最新免费国产成人 | 欧美日韩加勒比一区二区三区 | 草草影院ccyy免费看片 | 欧美叫床戏做爰无遮挡 | 香蕉自拍视频 | 可以免费看黄色的网站 | 草草日 | 91精品在线免费 | 亚洲一区二区三区精品国产 | 国产亚洲精品久久久久久久网站 | 欧美大片在线播放 | 国产成人精品三级91在线影院 | 中文字幕一区二区三区免费视频 | 亚洲国产伦理 | 超清国产粉嫩456在线免播放 | a级做爰视频免费观看 | 亚洲欧美在线免费观看 | 日韩精品网址 | 亚洲国产日韩欧美一区二区三区 | 成人免费黄网站 | 久久久亚洲天堂 | 91精品啪在线看国产网站 | 亚洲三及片 | 久久精品国产99久久99久久久 | 精品无码久久久久国产 | 亚洲激情黄色 | 九九九九精品视频在线播放 | 国产一级毛片在线 | 亚洲aⅴ在线 | 91福利国产在线观看香蕉 | 国产精品亚洲欧美日韩区 | 久久厕所精品国产精品亚洲 | 亚洲欧美日韩精品在线 |