2011-05-24 61 views
0

我在跟隨http://www.mssqltips.com/tip.asp?tip=1910,下面的代碼實際上可以工作,但需要大約90秒才能運行。數據庫模式有少於10個(相當直接)的表。我不確定爲什麼需要這麼長時間。有關如何調試的建議?SQL Server SMO TransferData()運行緩慢

var host = "192.168..."; 
var user = "username"; 
var pass = "password"; 
var srcDbName = "srcDbName"; 
var dstDbName = "dstDbName"; 

var server = new Server(new ServerConnection(host, user, pass)); 

var srcDb = server.Databases[srcDbName]; 
var dstDb = new Database(server, dstDbName); 

dstDb.Create(); 

var transfer = new Transfer(srcDb); 

transfer.CopyAllTables = true; 
transfer.Options.DriAll = true; 
transfer.Options.ContinueScriptingOnError = false; 

transfer.DestinationDatabase = dstDbName; 
transfer.DestinationServer = server.Name; 
transfer.DestinationLoginSecure = false; 
transfer.DestinationLogin = user; 
transfer.DestinationPassword = pass; 

transfer.TransferData(); 

回答

0

我認爲你應該保留這段代碼。你無法改進它。據我所知,您希望將表/模式從一個數據庫轉移到其他數據庫。

下面,我建議選擇:

鏈接服務器

從SQL 2000,你應該能夠直接作爲鏈接服務器連接到其他數據庫。在專業人員專欄中,如果您沒有其他技術技能(例如DTS或SSIS),這種直接訪問方式可以很容易地工作,但獲得初始設置權並且可能存在安全問題可能很複雜/問題。

DTS

DTS打包在SQL 2000和這種任務的製成。如果編寫正確,您的DTS包可以具有良好的錯誤處理並且可以重新運行/可重用。

SSIS

SSIS實際上是與SQL 2005及以上的包裝,但你可以把它連接到其他數據庫。它基本上是更好的DTS版本。