【发布时间】:2010-11-09 17:52:52
【问题描述】:
我正在使用 SMO 执行批处理 SQL 脚本。在 Management Studio 中,脚本在大约 2 秒内执行。使用以下代码,大约需要 15 秒。
var connectionString = GetConnectionString();
// need to use master because the DB in the connection string no longer exists
// because we dropped it already
var builder = new SqlConnectionStringBuilder(connectionString)
{
InitialCatalog = "master"
};
using (var sqlConnection = new SqlConnection(builder.ToString()))
{
var serverConnection = new ServerConnection(sqlConnection);
var server = new Server(serverConnection);
// hangs here for about 12 -15 seconds
server.ConnectionContext.ExecuteNonQuery(sql);
}
该脚本创建一个新数据库并在几个表中插入几千行。生成的数据库大小约为 5MB。
任何人对此有任何经验或对为什么 SMO 运行如此缓慢有什么建议?
【问题讨论】:
-
我会说这没什么好担心的,15 秒创建一个数据库似乎是合理的。此外,当您在 SSMS 中执行查询时,您是否已经连接到服务器?不同的客户端机器?
-
同一客户端机器。打开连接似乎不需要这么长时间,只需 ExecuteNonQuery 调用。令人担忧的是,这一步是我们单元测试的 AssemblyInitialize 方法的一部分,因此启动单元测试需要额外的 15 秒是一个真正的烦恼。
-
有人吗?我真的很想将这些脚本用于我们的单元测试。
标签: c# .net sql-server smo