在SQL Server 2012上运行270 MB脚本时出现内存不足错误

时间:2016-09-14 09:12:47

标签: sql-server sql-server-2012 out-of-memory

我正在使用SQL Server 2012,我有一个脚本来更新数据库,该脚本大小约为270 MB,包含大约22,000,000行。

错误:

enter image description here

错误消息:System.OutOfMemoryException

此外,

我尝试了Transact-SQL命令查询方法,但在特定行中给出了错误消息。

Sqlcmd:错误:文件'database.sql'中第709918行的语法错误。

但是没有语法错误。

请提供任何解决方案。

2 个答案:

答案 0 :(得分:1)

对于SQL Management Studio来说,这已经很大了,特别是如果脚本包含长行和任何太复杂的东西。

你最好的选择可能是:

  • 使用@receiver(pre_save, sender=Variation) def pre_save_variation(sender, instance, **kwargs): if not instance.price: if instance.color == 'black': instance.price = 40000 elif instance.color == 'single': instance.price = 50000 elif instance.color == 'multi': instance.price = 60000 代替SQL Management Studio
  • 将脚本分解为可以逐个执行的多个文件

不要忘记即使只是文件,你需要至少550 MiB的内存,因为Management Studio是一个.NET应用程序并使用Unicode。然后是GUI,语法分析和解析...由于脚本不是由SMSS流式传输的,与SqlCmd不同,您可能会将整个文件至少存储在内存中两次,并且您已经接近32位应用程序的限制,特别是在32位操作系统上...

答案 1 :(得分:0)

无需进行任何手动拆分或任何命令行执行。

只需下载此软件 - Big SQL Script File Runner

它会节省你的一整天。