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:


Dariusz Brejnak

Od prawie trzydziestu lat jest pasjonatem informatyki, a zwłaszcza dziedzin dotyczących baz danych, hurtowni danych oraz ogólnie rozumianej tematyki BI. Jego druga pasja to fotografia http://dariuszbrejnak.pl