用TableDiff產(chǎn)生SQL Server同步腳本_Mssql數(shù)據(jù)庫(kù)教程
推薦:微軟SQL Server 2008 的新壓縮特性關(guān)于SQL Server壓縮的故事,最早是從SQL Server 2005開(kāi)始的,在企業(yè)版和開(kāi)發(fā)版中增加了一種叫做vardecimal的新存儲(chǔ)格式,這個(gè)表級(jí)的選項(xiàng)會(huì)影響到decimal和numeric字段。當(dāng)對(duì)值的精度要求低于字
TableDiff是一個(gè)控制臺(tái),它可以在SQL Server的表之間進(jìn)行數(shù)據(jù)比較。另外,因?yàn)樗怯肧QL Server打包的,所以如果你想在不同的數(shù)據(jù)庫(kù)環(huán)境下檢查查找表的話(huà),你就不需要另外購(gòu)買(mǎi)其他工具。
在不同的數(shù)據(jù)庫(kù)環(huán)境中,DBA經(jīng)常不得不在查找表中尋找它們的不同(例如:開(kāi)發(fā)、質(zhì)量保證和生產(chǎn)等不同的環(huán)境下)。這些查找表中的數(shù)據(jù)必須適應(yīng)于所有的環(huán)境,這樣才能確保測(cè)試的準(zhǔn)確。
在市場(chǎng)上有一些非常好的工具可以進(jìn)行這些比較,也能執(zhí)行很多其它功能。但是現(xiàn)在你不需要去購(gòu)買(mǎi)它們了,因?yàn)镾QL Server已經(jīng)自帶了這種工具,那就是TableDiff,它能為你完成這些功能。
TableDiff使你可以很輕松地在表中進(jìn)行數(shù)據(jù)比較,同時(shí)它也可以會(huì)為你創(chuàng)建腳本來(lái)同步程序環(huán)境。另外,作為一個(gè)能使查找表在測(cè)試環(huán)境和產(chǎn)品環(huán)境之間同步的優(yōu)秀工具,TableDiff對(duì)于數(shù)據(jù)在產(chǎn)品服務(wù)器和復(fù)制服務(wù)器之間的同步也同樣是非常有用的,這樣,當(dāng)發(fā)生復(fù)制問(wèn)題的時(shí)候,它就能體現(xiàn)出優(yōu)勢(shì)了。
示例
TabelDiff是一個(gè)控制臺(tái)應(yīng)用軟件,所以,你需要通過(guò)命令提示符、批處理文件或者通過(guò)使用xp_cmdshell的SQL Server來(lái)調(diào)用它。在這個(gè)例子中,我將在同一個(gè)服務(wù)器上的兩個(gè)數(shù)據(jù)庫(kù)之間搭建一個(gè)小的環(huán)境,然后比較兩個(gè)表中的數(shù)據(jù)。在這里我是通過(guò)一個(gè)批處理文件來(lái)調(diào)用TableDiff。
Listing A中的腳本創(chuàng)建了兩個(gè)數(shù)據(jù)庫(kù),并在每個(gè)數(shù)據(jù)庫(kù)中創(chuàng)建了一個(gè)SourceTable表。然后將數(shù)據(jù)分別插入到每個(gè)環(huán)境中的SourceTable表里面,這時(shí)候,插入到兩個(gè)表中的數(shù)據(jù)是明顯不同的。(就我的SQL Server 2005環(huán)境而言,TableDiff在這個(gè)目錄下:C:Program FilesMicrosoft SQL ServerCOM。文件的位置對(duì)你指定安裝是非常重要的,因?yàn)槟阏{(diào)用批處理文件進(jìn)行創(chuàng)建的時(shí)候需要知道它的確切位置。
批處理文件
在這個(gè)例子中,我將調(diào)用TableDiff utility,同時(shí)帶上了一些必要的參數(shù),對(duì)DatabaseA和DatabaseB兩個(gè)數(shù)據(jù)庫(kù)中各自的SourceTable表的數(shù)據(jù)進(jìn)行比較。Listing B中的腳本帶著參數(shù)通過(guò)源服務(wù)器(SourceServer)、源數(shù)據(jù)庫(kù)( SourceDatabase)、源表 SourceTable、目標(biāo)服務(wù)器( DestinationServer)、目標(biāo)數(shù)據(jù)庫(kù)( DestinationDatabase)和目標(biāo)表(DestinationTable)到達(dá)TableDiff utility。對(duì)于每一個(gè)站點(diǎn)來(lái)說(shuō),服務(wù)器名和表名都是相同的,因?yàn)槲沂窃谕粋(gè)數(shù)據(jù)庫(kù)服務(wù)器的兩個(gè)不同的數(shù)據(jù)庫(kù)中比較使用的同一個(gè)名字的表。我通過(guò)的最后目的地是當(dāng)?shù)�,同步腳本放置在那里。我將這個(gè)腳本存放在C:/根目錄下,名字為diffs.txt。
一旦我執(zhí)行了這個(gè)批處理文件,在Listing C中的文本信息就會(huì)被放到C:diffs.txt這個(gè)文件里面。這個(gè)TSQL腳本能同步運(yùn)行兩個(gè)數(shù)據(jù)庫(kù)之間的表。
使用簡(jiǎn)單
TableDiff utility使用非常簡(jiǎn)單,配置也很方便,因?yàn)樗怯肧QL Server打包的,所以不需要購(gòu)買(mǎi)任何其他附加的工具來(lái)同步不同環(huán)境下的表。由于它使用非常方便,也很容易獲得它,所以如果有必要,我們就能使用它來(lái)開(kāi)發(fā)一些解決方案自動(dòng)創(chuàng)建腳本,以便同步不同的環(huán)境。
Tim Chapman是一位SQL Server數(shù)據(jù)庫(kù)管理員,他現(xiàn)在在Louisville, KY的一家銀行工作,他具有7年以上的IT經(jīng)驗(yàn),同時(shí)也獲得了微軟SQL Server 2000和SQL Server 2005認(rèn)證。
列表A
| 以下為引用的內(nèi)容: use master Go IF DB_ID('DatabaseA') IS NOT NULL DROP DATABASE DatabaseA GO IF DB_ID('DatabaseB') IS NOT NULL DROP DATABASE DatabaseB GO CREATE DATABASE DatabaseA GO CREATE DATABASE DatabaseB GO USE DatabaseA GO CREATE TABLE SourceTable ( IDCol INT IDENTITY(1,1), Field1 SMALLINT, Field2 SMALLINT, Field3 SMALLINT, Field4 SMALLINT ) GO USE DatabaseB GO CREATE TABLE SourceTable ( IDCol INT IDENTITY(1,1), Field1 SMALLINT, Field2 SMALLINT, Field3 SMALLINT, Field4 SMALLINT ) GO USE DatabaseA GO INSERT INTO SourceTable (Field1, Field2, Field3, Field4) SELECT 1, 1, 1, 2 UNION SELECT 1, 1, 2, 2 UNION SELECT 1, 3, 2, 2 UNION SELECT 1, 3, 2, 2 UNION SELECT 4, 3, 2, 2 GO USE DatabaseB GO INSERT INTO SourceTable (Field1, Field2, Field3, Field4) SELECT 1, 1, 1, 2 UNION SELECT 1, 3, 2, 1 UNION SELECT 1, 3, 2, 2 UNION SELECT 1, 3, 2, 2 UNION SELECT 5, 3, 2, 2 UNION SELECT 5, 4, 3, 2 GO |
列表B
| 以下為引用的內(nèi)容: cd Program FilesMicrosoft SQL ServerCOMTableDiff -sourceserver "DatabaseServer" -sourcedatabase "DatabaseA" -sourcetable "SourceTable" -destinationserver "DatabaseServer" -destinationdatabase "DatabaseB" -destinationtable "SourceTable" -f "C:diffs.txt" |
分享:3個(gè)步驟結(jié)束網(wǎng)站惡夢(mèng)-SQL注入隱患!許多網(wǎng)站程序在編寫(xiě)時(shí),沒(méi)有對(duì)用戶(hù)輸入數(shù)據(jù)的合法性進(jìn)行判斷,使應(yīng)用程序存在安全隱患。 SQL注入是什么? 許多網(wǎng)站程序在編寫(xiě)時(shí),沒(méi)有對(duì)用戶(hù)輸入數(shù)據(jù)的合法性進(jìn)行判斷,使應(yīng)用程序存在安全隱
- sql 語(yǔ)句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無(wú)法查看數(shù)據(jù)庫(kù),提示 無(wú)法為該請(qǐng)求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語(yǔ)句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類(lèi)似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過(guò)程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫(kù)教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫(kù)教程推薦
- 解析用SQL Server處理物料清單規(guī)則
- 解析SQL Server數(shù)據(jù)庫(kù)觸發(fā)器的安全隱患
- 解讀SQL Server如何備份文件導(dǎo)入當(dāng)前數(shù)據(jù)庫(kù)
- SQLServer2005重建索引前后對(duì)比分析
- 查詢(xún)分析器單步調(diào)試出錯(cuò)的原因
- 解決sql server查詢(xún)速度慢11個(gè)方法
- SQL SERVER中易混淆的數(shù)據(jù)類(lèi)型
- 探討SQL Server 2005的評(píng)價(jià)函數(shù)
- MySQL的數(shù)據(jù)類(lèi)型和建庫(kù)策略
- 怎樣解決SQL Server數(shù)據(jù)庫(kù)權(quán)限沖突
猜你也喜歡看這些
- MySql大批量導(dǎo)入數(shù)據(jù)優(yōu)化
- @@ROWCOUNT全局變量
- 淺談SQLite時(shí)間函數(shù)的使用說(shuō)明與總結(jié)分析
- SQL2005錯(cuò)誤:2812 的解決方法
- MySQL性能優(yōu)化的最佳21條經(jīng)驗(yàn)
- 網(wǎng)站模板:利用Shell腳本實(shí)現(xiàn)遠(yuǎn)程MySQL自動(dòng)查詢(xún)
- 關(guān)于數(shù)據(jù)庫(kù)中保留小數(shù)位的問(wèn)題
- MySQL數(shù)據(jù)庫(kù)備份和還原的常用命令
- mysql 超大數(shù)據(jù)/表管理技巧
- Mysql字符集設(shè)置指南
- 相關(guān)鏈接:
- 教程說(shuō)明:
Mssql數(shù)據(jù)庫(kù)教程-用TableDiff產(chǎn)生SQL Server同步腳本
。