2009-09-10 99 views
0

问候朋友没有足够的系统内存来在SQL Server中执行SQL脚本2008

我现在面临一个问题,我有已在C#.NET 2005开发了一个工具,它会通过执行SQL创建数据库脚本;脚本正在批量运行。

当在XP中运行它工作正常;但在Windows Vista 32位O.S.中运行时出现问题。使用SQR Server 2008 Express;我将错误记录在日志文件中;以下是脚本文件大小的日志。

我不明白为什么有更少的内存可用于执行脚本,早些时候我遇到过这种情况,并将Master_Meata_Data分解为两个文件(Master_Data_Metadata1和Master_Data_Metadata2);还是我面临在Vista中同样的问题...

2009年8月28日在DB进度开始:本地\ SQLEXPRESS:WINDOWS :: 1031:NEWDB bgWorkerCreateDB_DoWork:C:\ Program Files文件\ CreateNewDB \

ReadAndExecuteScript:C:\ Program Files文件\ CreateNewDB \ Drop_Create.sql(尺寸3KB)

ReadAndExecuteScript:C:\ Program Files文件\ CreateNewDB \ Tables.sql(大小999KB)

ReadAndExecuteScript:C:\ Program Files文件\ CreateNewDB \ Master_Data.sql(Sizr 649KB)

ReadAndExecuteScript:C:\ Program Files \ CreateNewDB \ Master_Data_Metadata1.sql(Size 2.72MB) 2009年8月28日星期五ReadAndExecuteScript中的SQL错误:“内部”资源池中没有足够的系统内存来运行此查询。

周五,2009年8月28日5:10 PM ReadAndExecuteScript:C:\ Program Files文件\ CreateNewDB \ Data_Metadata2.sql(大小1.55MB) 周五,2009年8月28日SQL错误ReadAndExecuteScript:有“内部”资源池中的系统内存不足以运行此查询。

ReadAndExecuteScript:C:\ Program Files文件\ CreateNewDB \ Initialize_Data.sql(大小14.3MB)

ReadAndExecuteScript:C:\ Program Files文件\ CreateNewDB \ Views1.sql(大小2KB)

ReadAndExecuteScript :C:\ Program Files文件\ CreateNewDB \ Views2.sql(容量4KB)

ReadAndExecuteScript:C:\ Program Files文件\ CreateNewDB \ Views3.sql(大小2KB)

ReadAndExecuteScript:C:\临gram Files \ CreateNewDB \ Fn_Duration.sql(Size 2.27KB)

ReadAndExecuteScript:C:\ Program Files \ CreateNewDB_Fn_GetDate。SQL(大小1KB)

问候

+2

“管理员标志”用于管理支持,而不是答案。 – 2009-09-14 08:14:55

回答

0

最有可能你只是运行的物理内存不足,但如果我你是不是和启用的资源州长尝试使用

ALTER RESOURCE GOVERNOR 
    { DISABLE | RECONFIGURE } 
| 
     WITH (CLASSIFIER_FUNCTION = { schema_name.function_name | NULL }) 
| 
    RESET STATISTICS 
[ ; ] 

ALTER WORKLOAD GROUP { group_name | "default" } 
[ WITH 
    ([ IMPORTANCE = { LOW | MEDIUM | HIGH } ] 
      [ [ , ] REQUEST_MAX_MEMORY_GRANT_PERCENT = value ] 
      [ [ , ] REQUEST_MAX_CPU_TIME_SEC = value ] 
      [ [ , ] REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value ] 
      [ [ , ] MAX_DOP = value ] 
      [ [ , ] GROUP_MAX_REQUESTS = value ]) 
] 
[ USING { pool_name | "default" } ] 
[ ; ] 

更改可用于执行查询的内存量。

MSDN Page for ALTER RESOURCE GOVERNOR

MSDN page for ALTER WORKLOAD GROUP

2

我不能回答,为什么它在XP和Vista中没有,但是当你看到一个非常大的脚本相关联的错误信息,这通常意味着问题的对于解析器来处理,查询批次太大。

这些脚本中是否有GO声明?如果不是,那可能是导致失败的原因。对于尚未拆分成批次的SQL脚本,超过1 MB是相当大的。将一些GO语句放在那里,或者(更好的是)将它分成更小的脚本。

相关问题