更改脚本 SQL 数据的默认“已处理 xx 条总记录”
Posted
技术标签:
【中文标题】更改脚本 SQL 数据的默认“已处理 xx 条总记录”【英文标题】:Changing the default "Processed xx total records" for scripting SQL data 【发布时间】:2011-07-15 02:42:16 【问题描述】:在 SQL Server 2008 中,您可以右键单击数据库并选择“生成脚本...”。然后,您可以选择一个特定的表并在“脚本的数据类型”下选择“仅数据”。当你这样做时,它会自动在脚本中每 100 条记录插入一行:
print 'Processed 100 total records'
基本上,它将插入到 100 个部分中的记录“批处理”,并在每个批处理的末尾添加这些 PRINT 语句。虽然当您插入几千条记录时这很好,但当您导入一百万条记录时它就变得无用了。
有没有办法将此“批量”大小更改为另一个值,例如“1000”?创建脚本时,我在选项列表中找不到它。更改此值会影响脚本运行时的性能还是有其他问题?
【问题讨论】:
【参考方案1】:查找和替换应该可以解决您的直接问题,但生成 INSERT 脚本是一种将数百万条记录从一个数据库复制到另一个数据库的不寻常方法;你有什么特别的理由要这样做吗?
更典型的方法是 bcp.exe 或 SSIS(如果您有更复杂的需求),因为它们专门用于处理大量数据。或者如果两个数据库都在同一台服务器上,那么 INSERT...SELECT... 将是最快的方式。 documentation 解释了纯 TSQL 中的各种选项,并给出了性能方面的建议; SSIS 是一个更大的话题。
【讨论】:
好点。我应该更详细地描述导致这种情况的场景。我有一个客户,他的公司不会让任何人从“外部”访问其服务器。我在我的机器上开发了一个应用程序和数据库,是SQL 2008。不幸的是,客户端的目标机器是SQL 2005。经过大量研究,我发现你不能只使用通常的方法来传输整个数据库而像这样“降级”。因此,我必须创建脚本来处理所有事情 - 包括数据填充。 所以公司内部必须有人部署您的应用程序?您是否考虑过安装 SQL 2005,准备数据库,然后向他们发送备份文件以进行恢复?无论如何,您至少应该在与您的客户相同的数据库版本上进行开发。 好点,但同样,它比这更复杂。我项目的一部分是将他们现有的 MS Access 数据库迁移到 SQL。无需赘述,Access 数据库很复杂,至少可以说,将其放入 SQL(通过我编写的 SSIS 包)具有挑战性。因为我不想在 2005 年尝试重写这个 SSIS 包,所以我一直在尝试将 2008 年的数据库转换为 2005 年的数据库。 那么您可以使用 SSIS 2008 包来填充 2005 数据库吗?大概你的所有 DDL 都在源代码控制之下,所以创建一个空的 2005 数据库应该相当简单(你不能使用任何 2008 特定的功能,因为目标是 2005)。然后使用您现有的 SSIS 包,但只需更改目标。当然,这可能仍然是不现实的;只有您对自己的情况非常了解,才能说出可行的方法。以上是关于更改脚本 SQL 数据的默认“已处理 xx 条总记录”的主要内容,如果未能解决你的问题,请参考以下文章
如何修改 SQL Server Management Studio 中自动生成的脚本文件的默认文件名格式?