【发布时间】:2010-10-31 08:17:14
【问题描述】:
我有一个不适合内存的大 SQL 文件,需要针对 Microsoft SQL Server 2008 执行。似乎sqlcmd.exe 工具总是先将其加载到内存中,这在这种情况下是不可能的。有什么想法吗?
很遗憾,我无法拆分脚本,因为它是由 Red Gate 出色的 SQL 数据比较生成的。整个脚本是一笔大交易,我想保持这种状态。我从来没有想过拥有一个巨大的脚本是不寻常的,因为在数据库世界中拥有大量数据是很常见的。脚本大小为 3gb。
【问题讨论】:
-
SQL 文件不适合内存?真的???
-
文件有多大?!?!?!?!?!?
-
只是添加到上面所有令人惊讶的 cmets 中......也许如果您描述为什么要运行如此大的文件,人们可以提出替代方案。例如,如果它非常大,因为您要从另一个数据库手动插入数百万行,那么 ETL 过程可能比将其全部提取到脚本中并运行要好。
-
如果文件是数据(即很多 INSERT 语句),那么使用 SQL 文件可能是错误的方法,最好将 SSIS 与 CSV 文件或类似文件一起使用。
-
如果您只是将大量数据从一个数据库/表移动到另一个,那么 RG 的数据比较是错误的工具。如果您正在同步两个表(两个表包含客户并且您需要将它们合并,或者一个表包含一些数据并且您需要从另一个表中添加不匹配的行,但您不能删除已经存在的内容),这个是数据比较擅长的地方。如果您只是将数据移动到一个空表中,我会检查其他方法,例如 SSIS,它仍然可以在事务中完成。
标签: sql sql-server sqlcmd redgate sqlcompare