2010-01-22 57 views
1

我已經使用SMO對象爲SQL Server的數據庫對象生成SQL腳本。當數據庫位於本地網絡中時,此功能很好。但是,如果數據庫位於遠程服務器中,則需要很長時間。當數據庫位於遠程服務器中時,爲SQL Server對象生成腳本的最佳和最快方式是什麼?生成用於SQL Server數據庫的所有對象的腳本

回答

0

你可以試着預先緩存所需的對象,以提高性能與PrefetchObjects方法:

var server = new Server(new ServerConnection(connectionString)); 
var database = server.Databases[databaseName]; 

database.PrefetchObjects(typeof(Table)); 

如果你想實現與數據庫架構遷移的話,退房Wizardby

+0

我嘗試這樣做: Server服務器=新服務器(CON); var database = server.Databases [vstrDatabase]; database.PrefetchObjects(typeof(Table)); foreach(table tbl in database.Tables) { sbr = new StringBuilder(); StringCollection script = tbl.Script(); 的foreach(在腳本字符串str) { } } tbl.Script花費大量的時間用於遠程服務器,所以整個過程花費很長的時間。我需要爲所有對象創建腳本。那麼最好的方法是什麼? – 2010-01-22 11:14:57

+0

對PrefetchObjects狀態的幫助_通過使一個網絡與SQL Server實例相連,可以使集合充分填充對象._ - 您是否曾使用Profiler觀看過這種**一次往返?瘋! – springy76 2011-09-14 10:55:58

+0

@ springy76這是怎麼回事? – 2011-09-14 11:08:09

2

我會使用SQL Server Management Studio

從數據庫項目右鍵單擊並選擇任務,生成腳本。那裏有很多選擇供你享用。

(你甚至可以把它的腳本數據表中)。

+0

我必須使用c#以編程方式執行此操作。 – 2010-01-25 06:32:40

相關問題