W nowym MS SQL Server 2012 zostały dodane nowe obiekty do baz msdb i system, a tym samy został rozszerzony model bazy i zmieniony jego rozmiar minimalny z 2MB na 5MB.
Jeżeli posiadamy skrypty poprawnie działające w wersji MS SQL Server 2008 R2, w których należy określić początkowy minimalny rozmiar bazy danych, należy podczas migracji do wersji MS SQL Server 2012 uwzględnić zmiany jakie zaszły w modelu bazy danych.
Z powodu dodania nowych tabel, widoków, procedur i innych obiektów zwiększył się minimalny rozmiar bazy z 2 MB na 5 MB. Użycie dotychczasowych skryptów określających minimum na 2 MB spowoduje wywołanie błędu nr 1803:
CREATE DATABASE [test_db] ON PRIMARY
( NAME = N'test_db',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL11_RC0\MSSQL\DATA\test_db.mdf' ,
SIZE = 2048KB ,-- powinno być 5120KB
FILEGROWTH = 1024KB )
LOG ON
( NAME = N'test_db_log',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL11_RC0\MSSQL\DATA\test_db_log.ldf' ,
SIZE = 1024KB ,
FILEGROWTH = 10%)
GO
W odpowiedzi dostaniemy błąd:
Msg 1803, Level 16, State 1, Line 3 The CREATE DATABASE statement failed.
The primary file must be at least 5 MB to accommodate a copy of the model database.
Uwaga: w artykule http://blogs.msdn.com/b/psssql/archive/2011/10/29/error-1803-and-model-size-change-in-sql-server-2012.aspx opisana wielkość minimalna to 3MB. Ja uzyskałem wielkość 5 MB na wersji 11.0.1440
Szczegółowe informacje na MSDN: