2010-01-22 55 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

相关问题