我正在尝试在SQL Server 2005中创建数据库并收到以下错误
Msg 1803,Level 16,State 1,Line 2
CREATE DATABASE语句失败。主文件必须至少为32 MB才能容纳模型数据库的副本。
创建SQL
CREATE DATABASE [MyDatabase] ON PRIMARY
( NAME = N'MyDatabase_Data', FILENAME = N'D:\SQL SERVER\DataFiles\MyDatabase\MyDatabase.MDF' , SIZE = 3096KB , MAXSIZE = 29687808KB , FILEGROWTH = 262144KB ),
( NAME = N'MyDatabase_Data2', FILENAME = N'D:\SQL SERVER\DataFiles\MyDatabase\MyDatabase_Data2.ndf' , SIZE = 3096KB , MAXSIZE = 10485760KB , FILEGROWTH = 262144KB ),
FILEGROUP [FG_Indexes]
( NAME = N'MyDatabase_Indexes', FILENAME = N'D:\SQL SERVER\DataFiles\MyDatabase\MyDatabase_Indexes.ndf' , SIZE = 1920KB , MAXSIZE = 27136000KB , FILEGROWTH = 262144KB )
LOG ON
( NAME = N'MyDatabase_Log', FILENAME = N'D:\SQL SERVER\LogFiles\MyDatabase\MyDatabase_Log.LDF' , SIZE = 1920KB , MAXSIZE = 7883776KB , FILEGROWTH = 262144KB )
我检查了msdb大小,它大约是32MB ......
EXEC sp_helpdb @dbname= 'MSDB'
MSDB大小
如何克服此错误并创建数据库(不对create database脚本进行任何更改)?
主数据库
EXEC sp_helpdb @dbname= 'master'
答案 0 :(得分:16)
当SQL Server创建新数据库时,它会将model
数据库复制为模板。 model
(取决于您的版本)具有特定的初始大小。
有关详细信息,请参阅this MSDN blog。
您声明新数据库的初始大小应为3MB:
CREATE DATABASE [MyDatabase] ON PRIMARY
( NAME = N'MyDatabase_Data', FILENAME = N'D:\SQL SERVER\DataFiles\MyDatabase\MyDatabase.MDF' , SIZE = 3096KB , MAXSIZE = 29687808KB , FILEGROWTH = 262144KB )
您需要增加起始尺寸以适应您的model
数据库'初始大小。
注意:默认型号为3MB(在SQL Server 2012上 - 较低版本较少) - 您可能需要查看为什么您的4MB。
答案 1 :(得分:5)
所有新创建的数据库都使用Model数据库作为模板。新数据库的开头不小于Model数据库。
您收到的错误表明型号数据库大小为32MB
要修复它,请创建一个大小大于模型数据库大小的数据库
您还可以缩小模型数据库以减小其大小
用于创建具有自定义尺寸的数据库的示例代码
CREATE DATABASE Tests
ON
( NAME = 'Tests',
FILENAME = 'c:\tests.mdf',
SIZE = 33000KB )
GO
答案 2 :(得分:0)
只需再添加一个选项:因为模型数据库是新数据库的模板,所以通过排除SIZE,MAXSIZE和FILEGROWTH参数,我能够解决“容纳”错误。这些值直接从模型数据库中获取,并相应地创建了数据库。
我知道这种方法可能无法在所有情况下都有效,因为当您要显式包含size参数时。但是对于那些根据自己的喜好调整模型数据库的人来说,不带SIZE,MAXSIZE和FILEGROWTH的CREATE DATABASE语句将只使用模型中的值,而不会抛出错误。
HTH