我正在尝试使用SMO传输类为数据库中的所有表编写数据脚本。我正在尝试创建INSERT语句的批处理。这里似乎忽略了ScriptingOptions属性BatchSize,因为我的最后一个脚本在每个INSERT语句后都包含批处理分隔符"GO“。下面是我正在使用的代码片段:
so.BatchSize = 500;
so.ScriptBatchTerminator = true;
so.NoCommandTerminator = false;
so.ScriptData = true;
so.SchemaQualify = true;
//and few other options all set to false
...
Transfer tData = new Transfer(sourceDb);
tData.Options = so;
...
tData.CopySchema = true;
tData.CopyData = true;
...
tData.EnumScriptTransfer();输出脚本如下所示:
INSERT INTO...
GO
INSERT INTO...
GO
INSERT INTO...
GO
...但是预期的输出是
INSERT INTO...
INSERT INTO...
INSERT INTO...
//497 more INSERTS
GO
...发布于 2013-07-31 02:07:47
SqlBulkCopy类还有一个BatchSize和BulkCopyTimeout。我的猜测是,由于您将输出为纯文本,而不是运行TransferData(),所以脚本编写器正在做它自己的事情。在传输对象上运行TransferData(),使用活动监视器监视进程时,您可以看到它正在执行一次批量插入,而不是许多小插入。
https://stackoverflow.com/questions/17670115
复制相似问题