SQL Server’da Model Veritabanı
Herkese merhaba, Bu bölümde sizlere SQL Server’da Sistem Veritabanı olan Model veritabanı hakkında ve Model Veritabanının kullanımı hakkında bilgi vereceğim.
SQL Server’da Model veritabanı Sistem Veritabanlarından birisidir.
Model veritabanı kullanıcı tarafından oluşturulacak veritabanları için bir şablondur ve aynı instance içerisinde oluşturulan bütün veritabanları modellerinin saklandığı yerdir.
Tüm veritabanlarında bulunması gereken sistem düzeyindeki bazı nesneler bu veritabanında tutulurlar. Kullanıcı tarafından yeni bir veritabanı oluşturulduğu zaman model veritabanı bu veritabanına aynen kopyalanır. Model veritabanı üzerinde yapılacak değişiklikler sonradan oluşturulacak tüm veritabanlarına yansır.
Örneğin: Model veritabanında yeni bir tablo oluşturulduğunda, bundan sonra oluşturulacak tüm veritabanlarında da bu tablo oluşturulacaktır. Ayrıca yeni oluşturulacak bir veritabanının boyutu en az bir model veritabanı boyutunda olmalıdır. Model veritabanı diğer veritabanları için şablon veritabanıdır ve sistemde kalmalıdır, silinmemelidir. Bu veritabanının dbid’si 3’tür.
Model veritabanı, kullanıcı tanımlı veritabanları oluşturulurken şablon olarak kullanılır. Her kullanıcı tanımlı veritabanının ihtiyaç duyduğu ana veritabanının tüm sistem tablolarının alt kümesini içerir. Sistem yöneticisi, sistemlerinin özel ihtiyaçlarına uyarlamak için model veritabanının özelliklerini değiştirebilir.
Örneğin belli standart bir tablo her bir veritabanı içerisinde ayrı ayrı oluşturulmak yerine tek bir seferde hepsinde Model veritabanı sayesinde tanımlanabilir. Eğer Model veritabanı mevcut değil ya da offline ise Tempdb bu durumda oluşturulamaz.
Model veritabanı, esasen herhangi bir yeni kullanıcı veritabanının oluşturulmasında kullanılan bir şablon veritabanıdır.
Model veritabanı, bir SQL Server örneğinde oluşturulan tüm veritabanları için şablon olarak kullanılır. SQL Server her başlatıldığında Tempdb oluşturulduğundan, model veritabanı bir SQL Server sisteminde her zaman var olmalıdır.
SQL Server’da her yeni veritabanı oluşturduğunuzda, Tablolar, Stored Prosedür’ler ve diğer veritabanı nesneleri dahil olmak üzere varsayılan nesnelerini oluşturmak için Model veritabanının içeriği yeni veritabanına kopyalanır.
Model veritabanı dosyası (model.mdf) ve Model veritabanı günlük dosyaları (modellog.ldf) yükleme işlemi sırasında
C:\Program Files\Microsoft SQL Server\MSSQL15.YOURPATHNAME\MSSQL\DATA
Model veritabanının dosya özellikleri bir istisnadır ve veri dosyasının ilk boyutu dışında yok sayılır. Model veritabanı verilerinin ve günlük dosyasının varsayılan başlangıç boyutu 8 MB’dir.
Aşağıdaki tablo, model verilerinin ve günlük (log) dosyalarının ilk yapılandırma değerlerini listelenmektedir.
Dosya | Mantıksal Adı | Fiziksel Adı | Otomatik Genişleme Özelliği |
Primary Data | modeldev | model.mdf | 64MB genişleme ile bulunduğu disk dolana kadar otomatik büyüyebilir. |
Log | modellog | modellog.ldf | 64MB genişleme ile 2 TB’a kadar otomatik büyüyebilir. |
dizininde oluşturulur.
Aşağıdaki tablo, model veritabanındaki her bir veritabanı seçeneği için varsayılan değeri ve seçeneğin değiştirilip değiştirilemeyeceğini listeler. Bu seçenekler için geçerli ayarları görüntülemek için sys.databases katalog görünümünü kullanabilirsiniz.
Database özellikleri | Varsayılan değer | Değiştirilebilir |
ALLOW_SNAPSHOT_ISOLATION | OFF | Yes |
ANSI_NULL_DEFAULT | OFF | Yes |
ANSI_NULLS | OFF | Yes |
ANSI_PADDING | OFF | Yes |
ANSI_WARNINGS | OFF | Yes |
ARITHABORT | OFF | Yes |
AUTO_CLOSE | OFF | Yes |
AUTO_CREATE_STATISTICS | ON | Yes |
AUTO_SHRINK | OFF | Yes |
AUTO_UPDATE_STATISTICS | ON | Yes |
AUTO_UPDATE_STATISTICS_ASYNC | OFF | Yes |
CHANGE_TRACKING | OFF | No |
CONCAT_NULL_YIELDS_NULL | OFF | Yes |
CURSOR_CLOSE_ON_COMMIT | OFF | Yes |
CURSOR_DEFAULT | GLOBAL | Yes |
Database Availability Options | ONLINE | No |
Database Availability Options | MULTI_USER | Yes |
Database Availability Options | READ_WRITE | Yes |
DATE_CORRELATION_OPTIMIZATION | OFF | Yes |
DB_CHAINING | OFF | No |
ENCRYPTION | OFF | No |
MIXED_PAGE_ALLOCATION | ON | No |
NUMERIC_ROUNDABORT | OFF | Yes |
PAGE_VERIFY | CHECKSUM | Yes |
PARAMETERIZATION | SIMPLE | Yes |
QUOTED_IDENTIFIER | OFF | Yes |
READ_COMMITTED_SNAPSHOT | OFF | Yes |
RECOVERY | Depends on SQL Server edition* | Yes |
RECURSIVE_TRIGGERS | OFF | Yes |
Service Broker Options | DISABLE_BROKER | No |
TRUSTWORTHY | OFF | No |
Model veritabanında aşağıdaki işlemler gerçekleştirilemez:
- Dosya veya dosya grupları ekleme.
- Collation ayarı değiştirme yapılamaz. Varsayılan collation seçeneği sunucu üzerindeki dil ayarı ile aynıdır.
- Veritabanı sahibini değiştirme (database owner) model sa’ya aittir.
- Veritabanını düşürme (drop) yapılamaz
- Guest kullanıcı hesabı veritabanından çıkarılmaz.
- Change data capture (Değişiklik verilerinin yakalanmasını) etkinleştirmesi yapılamaz
- Veritabanı mirroring ‘e dahil edilemez.
- Primary filegroup, primary data file ve log dosyası silinemez.
- Veritabanını veya primary filegroup yeniden adlandırma yapılamaz.
- Veritabanını Offline olarak ayarlanamaz.
- WITH ENCRYPTION seçeneğini kullanarak prosedürler, view veya triger oluşturma. Şifreleme anahtarı, nesnenin oluşturulduğu veritabanına bağlıdır. Model veritabanında oluşturulan şifreli nesneler yalnızca modelde kullanılabilir.
Linkteki kaynağı da okuyabilirsiniz : https://learn.microsoft.com/en-us/sql/relational-databases/databases/model-database?view=sql-server-ver16
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.