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. Uzycie 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\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\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.
Poniżej przedstawiam historię zmnian rozmiaru model.mdf i modellog.ldf.
SQL Server version |
Physical file size (bytes) |
sp_spaceused information |
||||
model.mdf | modellog.ldf | reserved | data | index_size | unused | |
2000 |
655,360 |
524,288 |
528 KB | 144 KB | 280 KB | 104 KB |
2005 |
1,245,184 |
524,288 |
1136 KB | 472 KB | 560 KB | 104 KB |
2008 |
1,310,720 |
524,288 |
1200 KB | 472 KB | 624 KB | 104 KB |
2008 R2 |
1,310,720 |
524,288 |
1216 KB | 512 KB | 632 KB | 72 KB |
2012 |
2,162,688 |
524,288 |
2096 KB | 792 KB | 1080 KB | 224 KB |
Uwaga na blogu http://blogs.msdn.com/b/psssql/archive/2011/10/29/error-1803-and-model-size-change-in-sql-server-2012.aspx podana wielkość minimalna wynosi 3MB.
U mnie na wersji 11.0.1440 wartośc ta wyniosła 5MB.
Szczegółowe informacje na MSDN: