Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 大型INSERT INTO语句期间SQL Server文件组已满_Sql Server_Sql Server 2000_Sql Server Express_Filegroup_Autogrow - Fatal编程技术网

Sql server 大型INSERT INTO语句期间SQL Server文件组已满

Sql server 大型INSERT INTO语句期间SQL Server文件组已满,sql-server,sql-server-2000,sql-server-express,filegroup,autogrow,Sql Server,Sql Server 2000,Sql Server Express,Filegroup,Autogrow,考虑一个SQL脚本,该脚本用于将SQL 2000数据库中的行从一个表复制到另一个表。传输涉及750000行,以简单的方式进行: INSERT INTO TableB([ColA],[ColB]....[ColG]) SELECT [ColA],[ColB]....[ColG] FROM TableA 这是一个长时间运行的查询,部分原因可能是ColB属于ntext类型。 在SELECT语句中有一些CONVERT()操作 困难在于,在大约15分钟的操作后,SQL Server会引发此异常 无法为

考虑一个SQL脚本,该脚本用于将SQL 2000数据库中的行从一个表复制到另一个表。传输涉及750000行,以简单的方式进行:

INSERT INTO TableB([ColA],[ColB]....[ColG])
SELECT [ColA],[ColB]....[ColG]
FROM  TableA
这是一个长时间运行的查询,部分原因可能是
ColB
属于
ntext
类型。 在
SELECT
语句中有一些
CONVERT()
操作

困难在于,在大约15分钟的操作后,SQL Server会引发此异常

无法为数据库“[DB]”中的对象“[TABLE]”、“[PRIMARY_KEY]”分配空间,因为“PRIMARY”文件组已满。 通过删除不需要的文件、删除文件组中的对象、向文件组添加其他文件或为文件组中的现有文件启用自动增长来创建磁盘空间

更多信息

  • “自动增长”已启用
  • 磁盘上有足够的可用空间(~20gb)
  • 单个.mdf的容量约为6gb
  • 源表或目标表上没有触发器

问题

需要通过Management Studio或T-SQL设置哪些选项以允许数据库按需增长?你还有什么建议

分辨率

数据库无法根据需要增长,因为我将此数据库托管在SQL Server 2008的一个实例上。升级到SQL Server的非中性版本将解决此问题


如果您可以共享有关主文件组组成和自动增长设置(即主文件中包含的所有文件以及每个文件的自动增长设置)的屏幕截图/信息,这也会很有帮助。在没有看到任何其他内容的情况下,首先想到的是,您可能为构成主组的一个或多个文件指定了maxFileSize,但这只是一种预感,没有实际看到信息。

最佳建议:将数据库的大小预调大,而不是强制它按需增长(这可能是一个缓慢的操作)

发生此错误的一个原因是自动增长间隔设置得太大。除了明显的问题(试图以25GB的速度增长,而磁盘上只有20GB)外,较大的增长间隔可能需要很长时间才能分配,这可能会导致查询超时

编辑:根据您的新屏幕截图,间隔似乎不是问题所在。但是,我最初的建议仍然有效。请尝试自己手动扩展数据库,看看它是否允许您:

ALTER DATABASE foobar
MODIFY FILE (name = foobar_data, size = 5000)

表中是否有任何触发器?我以前见过类似的结果,当有触发器时,实际上是日志文件(ldf)的扩展只需记录触发器所运行的所有查询,而不是MDF本身,就可以达到极限。如果有任何触发器,我会考虑在进行此更新时禁用它们,看看是否有帮助(我假设这是1次关闭数据迁移而不是重复事件)?

您是否也可以共享有关主文件组组成和自动增长设置的屏幕截图/信息?(即主文件组中包含的所有文件以及每个文件的自动增长设置)感谢Chad,用FG定义的屏幕截图更新了问题。看起来你已经解决了-Express只支持4gb的数据库大小。将来,我建议发布版本和版本信息(即Sql2000、2005、2008和Express、工作组、标准等)-大多数人可能会在前面指出这一点。祝你好运!