SQL SMO执行批处理TSQL脚本

Jef*_*eff 5 .net c# sql-server smo

我正在使用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);  
}
Run Code Online (Sandbox Code Playgroud)

该脚本创建一个新数据库,并在几个表中插入几千行.得到的DB大小约为5MB.

任何人都有这方面的经验或建议为什么这可能会如此缓慢地与SMO运行?

Pav*_*čík 4

SMO 在后台做了很多奇怪的事情,这是您为以面向对象的方式处理服务器/数据库对象的能力付出的代价。
既然您没有使用 SMO 的 OO 功能,为什么不完全忽略 SMO 并简单地通过普通 ADO 运行脚本呢?

  • 我通常使用“GO”分割字符串并将每个子字符串作为sql执行。 (3认同)