SQLBulkCopy是否会显着增加.mdf文件的大小?

时间:2009-04-17 11:05:52

标签: sql-server sqlbulkcopy

我正在使用SqlBulkCopy类对SQLServer数据库进行批量插入。

与DB关联的.mdf文件的原始大小为1508 Mb。

当我运行它(在大约400万条记录的相同数据上)时: BatchSize为100000,.mdf的大小增加到1661 MB BatchSize为1000000,.mdf的大小增加到1659 MB。

为什么会出现这种变化?这样一个小的变化可以忽略不计,除了当我的Tester运行它(在相同的数据上)批量大小为100时,.mdf文件疯狂地增长,直到它耗尽所有可用的20个演出,然后由于缺乏可用空间而导致错误。

这是因为SqlBulkCopy有一些它分配的固定大小的块吗? 它的工作正常与BatchSizes> 100000,但我想了解这种奇怪的行为/错误的根本原因。

3 个答案:

答案 0 :(得分:3)

您的mdf文件是存储数据的位置 - 它应该根据您的数据负载大致增长。但正如“ck”已经指出的那样 - SQL Server允许您指定某种增长模式,例如:每当插入一行时,mdf文件都不会逐字节增长。因此,根据您的设置,当需要更多空间时,它将在大小上“跳跃”。

这与是否使用常规INSERT语句或SqlBulkLoad加载数据无关。

马克

答案 1 :(得分:1)

这取决于数据库的增长设置。默认值是增长10%,但是当填充等时你可以设置为增长1GB。

答案 2 :(得分:0)

通过批量加载或“常规”加载来加载数据会影响日志文件的大小而不会影响MDF文件(数据库必须处于简单或批量日志恢复模式,还有其他一些要求) 您确定测试人员的日志文件没有用完所有可用空间吗?