ScriptingOptions.BatchSize无效

时间:2013-07-16 07:05:58

标签: sql-server smo

我正在尝试使用SMO Transfer Class为数据库中的所有表编写脚本。我正在尝试创建批量的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
...

1 个答案:

答案 0 :(得分:0)

SqlBulkCopy类还有BatchSize和BulkCopyTimeout。我的猜测是,由于您输出的是纯文本而不是运行TransferData(),因此脚本编写者正在做自己的事情。在Transfer对象上运行TransferData()时,使用SMMS中的Activity Monitor监视进度,可以看到它正在执行INSERT BULK而不是许多小插入。