Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Veritabanıyla ilişkili dosya ve dosya gruplarını değiştirir. Veritabanından dosya ve dosya gruplarını ekler veya çıkarır, veritabanının veya dosya ve dosya gruplarının niteliklerini değiştirir. Diğer ALTER DATABASE seçenekleri için bkz. ALTER DATABASE.
Söz dizimi kuralları hakkında daha fazla bilgi için bkz.
Ürün seçin
Aşağıdaki satırda, ilgilendiğiniz ürün adını seçin ve yalnızca bu ürünün bilgileri görüntülenir.
* SQL Server *
Sözdizimi
ALTER DATABASE database_name
{
<add_or_modify_files>
| <add_or_modify_filegroups>
}
<add_or_modify_files>::=
{
ADD FILE <filespec> [ ,...n ]
[ TO FILEGROUP { filegroup_name } ]
| ADD LOG FILE <filespec> [ ,...n ]
| REMOVE FILE logical_file_name
| MODIFY FILE <filespec>
}
<filespec>::=
(
NAME = logical_file_name
[ , NEWNAME = new_logical_name ]
[ , FILENAME = {'os_file_name' | 'filestream_path' | 'memory_optimized_data_path' } ]
[ , SIZE = size [ KB | MB | GB | TB ] ]
[ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ]
[ , FILEGROWTH = growth_increment [ KB | MB | GB | TB| % ] ]
[ , OFFLINE ]
)
<add_or_modify_filegroups>::=
{
| ADD FILEGROUP filegroup_name
[ CONTAINS FILESTREAM | CONTAINS MEMORY_OPTIMIZED_DATA ]
| REMOVE FILEGROUP filegroup_name
| MODIFY FILEGROUP filegroup_name
{ <filegroup_updatability_option>
| DEFAULT
| NAME = new_filegroup_name
| { AUTOGROW_SINGLE_FILE | AUTOGROW_ALL_FILES }
}
}
<filegroup_updatability_option>::=
{
{ READONLY | READWRITE }
| { READ_ONLY | READ_WRITE }
}
Arguments
<add_or_modify_files>::=
Eklenecek, çıkarılacak veya değiştirilecek dosyayı belirtir.
database_name Veritabanının adı değiştirilecek mi?
DOSYA EKLE Veritabanına bir dosya ekler.
TO FILEGROUP { filegroup_name } Belirtilen dosyanın hangi dosya grubuna ekleneceğini belirtir. Mevcut dosya gruplarını ve hangi dosya grubunun mevcut varsayılan olduğunu göstermek için sys.filegroups katalog görünümünü kullanın.
LOG DOSYASI EKLE Belirtilen veritabanına bir günlük dosyası eklenebilir.
DOSYAYI KALDIR logical_file_name SQL Server örneğinden mantıksal dosya tanımını kaldırır ve fiziksel dosyayı siler. Dosya boş olmadıkça kaldırılamaz.
logical_file_name SQL Server'da dosyaya referans verirken kullanılan mantıksal isimdir.
Uyarı
Yedekleri olan bir veritabanı dosyasının FILE_SNAPSHOT kaldırılması başarılı olur, ancak veritabanı dosyasına atıfta bulunan yedeklerin geçersiz kılılması için ilgili anlık görüntüler silinmez. Dosya kısaltılır, ancak FILE_SNAPSHOT yedeklemeleri korunmak için fiziksel olarak silinmez. Daha fazla bilgi için bkz. Microsoft Azure Blob Depolama ile SQL Server Yedekleme ve Geri Yükleme.
Geçerlidir: SQL Server (SQL Server 2016 (13.x) ve sonrası).
DOSYAYI DEĞIŞTIR Değiştirilmesi gereken dosyayı belirtir. Aynı anda yalnızca bir <filespec> özelliği değiştirilebilir. Değiştirilecek dosyayı tanımlamak için dosya spec'inde< her zaman NAME belirtilmelidir>. SIZE belirtilmişse, yeni boyut mevcut dosya boyutundan daha büyük olmalıdır.
Bir veri dosyasının veya günlük dosyasının mantıksal adını değiştirmek için, cümlede NAME yeniden adlandırılacak mantıksal dosya adını belirtin ve dosyanın yeni mantıksal adını belirtin NEWNAME . Örneğin:
MODIFY FILE ( NAME = logical_file_name, NEWNAME = new_logical_name )
Bir veri dosyasını veya günlük dosyasını yeni bir konuma taşımak için, maddede NAME mevcut mantıksal dosya adını belirtin ve cümlede yeni yol ile işletim sistemi dosya adını FILENAME belirtin. Örneğin:
MODIFY FILE ( NAME = logical_file_name, FILENAME = ' new_path/os_file_name ' )
Tam metin kataloğunu taşıdığınızda, FILENAME maddesinde yalnızca yeni yolu belirtin. İşletim sistemi dosya adını belirtmeyin.
Daha fazla bilgi için Veritabanı Dosyalarını Taşıma bölümüne bakınız.
Bir FILESTREAM dosya grubu için, NAME çevrimiçi olarak değiştirilebilir. FILENAME çevrimiçi olarak değiştirilebilir; ancak bu değişiklik, konteyner fiziksel olarak taşındıktan ve sunucu kapatıldığından ve yeniden başlatıldığından sonra yürürlüğe girer.
Bir FILESTREAM dosyasını ÇEVRIMDİRİR olarak ayarlayabilirsiniz. Bir FILESTREAM dosyası çevrimdışı olduğunda, ana dosya grubu dahili olarak çevrimdışı olarak işaretlenir; bu nedenle, o dosya grubundaki FILESTREAM verilerine tüm erişim başarısız olacaktır.
Uyarı
<add_or_modify_files> seçenekler Kapsamlı Veritabanında mevcut değildir.
<filespec>::=
Dosya özelliklerini denetler.
NAME logical_file_name Dosyanın mantıksal adını belirtir.
logical_file_name SQL Server örneklerinde dosyaya atıfta bulunurken kullanılan mantıksal isimdir.
NEWNAME new_logical_file_name Dosya için yeni bir mantıksal isim belirtir.
new_logical_file_name Mevcut mantıksal dosya adının yerine geçecek bir isimdir. İsim, veritabanında benzersiz olmalı ve tanımlayıcı kurallarına uygun olmalıdır. İsim, bir karakter veya Unicode sabiti, normal bir tanımlayıcı veya sınırlandırılmış bir tanımlayıcı olabilir.
FILENAME { 'os_file_name' | ''filestream_path' | ''memory_optimized_data_path'} İşletim sistemi (fiziksel) dosya adını belirtir.
' os_file_name ' Standart (ROWS) dosya grubu için, dosyayı oluştururken işletim sistemi tarafından kullanılan yol ve dosya adıdır. Dosya, SQL Server'ın kurulduğu sunucuda bulunmalıdır. ALTER DATABASE ifadesi çalıştırılmadan önce belirtilen yol bulunmalıdır.
Uyarı
SIZE, MAXSIZE, ve FILEGROWTH parametreler dosya için UNC yolu belirlendiğinde ayarlanamaz.
Sistem veritabanları UNC paylaşım dizinlerinde yer alamaz.
Veri dosyaları, yalnızca okunabilir ikincil dosyalar veya veritabanı sadece okunabilir değilse sıkıştırılmış dosya sistemlerine yerleştirilmemelidir. Günlük dosyaları hiçbir zaman sıkıştırılmış dosya sistemlerine yerleştirilmemelidir.
Dosya bir ham bölümdeyse, os_file_name yalnızca mevcut bir ham bölümün sürücü harfini belirtmelidir. Her ham bölüme sadece bir dosya koyulabilir.
'filestream_path' Bir FILESTREAM dosya grubu için, FILENAME FILESTREAM verilerinin saklanacağı bir yolu ifade eder. Son klasöre kadar olan yol mevcut olmalı ve son klasör mevcut olmamalıdır. Örneğin, yolu C:\MyFiles\MyFilestreamDatabelirtirseniz, C:\MyFiles ALTER DATABASE çalıştırmadan önce var olmalıdır, ancak klasör MyFilestreamData olmamalıdır.
Uyarı
SIZE ve FILEGROWTH özellikleri bir FILESTREAM dosya grubuna uygulanmaz.
'memory_optimized_data_path' Bellek optimize edilmiş bir dosya grubu için, FILENAME bellek optimize edilmiş verilerin saklanacağı bir yolu ifade eder. Son klasöre kadar olan yol mevcut olmalı ve son klasör mevcut olmamalıdır. Örneğin, yolu C:\MyFiles\MyDatabelirtirseniz, C:\MyFiles ALTER DATABASE çalıştırmadan önce var olmalıdır, ancak klasör MyData olmamalıdır.
Dosya grubu ve dosya (<filespec>) aynı deyimde oluşturulmalıdır.
Uyarı
SIZE ve FILEGROWTH özellikleri MEMORY_OPTIMIZED_DATA dosya grubuna uygulanmaz.
Bellek optimize edilmiş dosya grupları hakkında daha fazla bilgi için bkz. Bellek Optimize Edilmiş Dosya Grubu.
SIZE size Dosya boyutunu belirtir. SIZE, FILESTREAM dosya grupları için geçerli değildir.
boyut Dosyanın boyutu.
ADD FILE ile belirtildiğinde, boyut dosyanın başlangıç boyutudur. MODIFY FILE ile belirtildiğinde, boyut dosyanın yeni boyutudur ve mevcut dosya boyutundan daha büyük olmalıdır.
Birincil dosya için boyut sağlanmadığında, SQL Server model veritabanındaki birincil dosyanın boyutunu kullanır. İkincil bir veri dosyası veya log dosyası belirtildiğinde ancak dosya için boyut belirtilmediğinde, Veritabanı Motoru dosyayı 1 MB yapar.
KB, MB, GB ve TB ekleri kilobayt, megabayt, gigabayt veya terabayt belirtmek için kullanılabilir. Varsayılan değer MB'tır. Tam sayı belirtin ve ondalık eklemeyin. Bir megabaytın bir kesirini belirtmek için, değeri kilobayta çevirerek sayıyı 1024 ile çarpın. Örneğin, 1,5 MB yerine 1536 KB belirtin (1,5 x 1024 = 1536).
Uyarı
SIZE ayarlanamaz:
- Dosya için bir UNC yolu belirtildiğinde
- For
FILESTREAMveMEMORY_OPTIMIZED_DATAfilegroups
MAXSIZE { max_size| UNLIMITED } Dosyanın büyüyebileceği maksimum dosya boyutunu belirtir.
max_size Maksimum dosya boyutu. KB, MB, GB ve TB ekleri kilobayt, megabayt, gigabayt veya terabayt belirtmek için kullanılabilir. Varsayılan değer MB'tır. Tam sayı belirtin ve ondalık eklemeyin. Eğer max_size belirtilmemişse, dosya boyutu disk dolana kadar artar.
UNLIMITED Dosyanın disk dolmadan büyümesini belirtir. SQL Server'da sınırsız büyümeyle belirtilen bir günlük dosyasının boyutu en fazla 2 TB ve veri dosyasının boyutu en fazla 16 TB'dir. Bu seçenek bir FILESTREAM konteyneri için belirtildiğinde maksimum boyut yoktur. Disk dolana kadar büyümeye devam eder.
Uyarı
MAXSIZE dosya için bir UNC yolu belirtildiğinde ayarlanamaz.
FILEGROWTH growth_increment Dosyanın otomatik büyüme artışını belirtir. Bir dosya için FILEGROWTH ayarı MAXSIZE ayarını aşamaz. FILEGROWTH, FILESTREAM dosya grupları için geçerli değildir.
growth_increment Her yeni alan gerektiğinde dosyaya eklenen alan miktarıdır.
Değer MB, KB, GB, TB veya yüzde (%) olarak belirtilebilir. Bir sayı MB, KB veya % eki olmadan belirtilmişse, varsayılan MB'dir. % belirtildiğinde, büyüme artışı boyutu, artışın gerçekleştiği anki dosya boyutunun belirlenen yüzdesidir. Belirtilen boyut en yakın 64 KB'ye yuvarlanmıştır.
0 değeri, otomatik büyümenin kapalı olarak ayarlandığını ve ek alan izni verilmediğini gösterir.
FILEGROWTH belirtilmemişse, varsayılan değerler şunlardır:
| Sürüm | Varsayılan değerler |
|---|---|
| SQL Server 2016'dan (13.x) başlayarak | Veri 64 MB. Günlük dosyaları 64 MB. |
| SQL Server 2005 (9.x) ile başlayarak | Veri 1 MB. Günlük dosyaları 10%. |
| SQL Server 2005'in (9.x) öncesinde | Veri 10%. Günlük dosyaları 10%. |
Uyarı
FILEGROWTH ayarlanamaz:
- Dosya için bir UNC yolu belirtildiğinde
- For
FILESTREAMveMEMORY_OPTIMIZED_DATAfilegroups
ÇEVRIMDİRİLİK Dosyayı çevrimdışı hale getirir ve dosya grubundaki tüm nesneleri erişilmez hale getirir.
Dikkat
Bu seçeneği yalnızca dosya bozulduğunda ve geri getirilebiliyorsa kullanın. ÇİÇTERe ayarlanmış bir dosya, yalnızca dosya yedekten geri yüklenerek çevrimiçi ayarlanabilir. Tek bir dosyanın geri yüklemesi hakkında daha fazla bilgi için bkz. RESTORE
<dosya spec> seçenekleri Içinde Veritabanında bulunmaz.
<add_or_modify_filegroups>::=
Veritabanına bir dosya grubu ekleyin, değiştirin veya kaldırın.
DOSYA GRUBU filegroup_name Veritabanına bir dosya grubu ekler.
CONTAINS FILESTREAM Dosya grubunun dosya sisteminde FILESTREAM ikili büyük nesneleri (BLOB'ları) sakladığını belirtir.
MEMORY_OPTIMIZED_DATA IÇERIR
Geçerlidir: SQL Server (SQL Server 2014 (12.x) ve sonrası)
Dosya grubunun bellek optimize edilmiş verileri dosya sisteminde sakladığını belirtir. Daha fazla bilgi için In-Memory OLTP - In-Memory Optimizasyonu bölümüne bakınız. Veritabanı başına yalnızca bir MEMORY_OPTIMIZED_DATA dosya grubuna izin verilir. Bellek optimize edilmiş tablolar oluşturulduğunda, dosya grubu boş olamaz. En az bir dosya olmalı.
filegroup_name bir yolu ifade eder. Son klasöre kadar olan yol mevcut olmalı ve son klasör mevcut olmamalıdır.
DOSYA GRUBUNU KALDIR filegroup_name Veritabanından bir dosya grubunu kaldırır. Dosya grubu boş olmadıkça kaldırılamaz. Önce dosya grubundaki tüm dosyaları kaldırın. Daha fazla bilgi için, bu konunun başındaki " DOSYA logical_file_name'NI KALDIR" bölümüne bakınız.
Uyarı
FILESTREAM Çöp Toplayıcı tüm dosyaları bir FILESTREAM konteynerinden kaldırmadıkça, ALTER DATABASE REMOVE FILE FILESTREAM konteynerini kaldırma işlemi başarısız olur ve hata döndürür. Bu konunun ilerleyen bölümlerinde Dosya Akışı Konteynerini Kaldırma bölümüne bakınız.
DOSYA GRUBUNU filegroup_name { <filegroup_updatability_option> | VARSAYILAN | NAME =new_filegroup_name } Dosya grubunu durumu READ_ONLY veya READ_WRITE olarak ayarlayarak, dosya grubunu veritabanı için varsayılan dosya grubu yaparak veya dosya grubu adını değiştirerek değiştirir.
<filegroup_updatability_option> Dosya grubuna yalnızca okunur veya okuma/yazma özelliğini ayarlar.
DEFAULT Varsayılan veritabanı dosya grubunu filegroup_name olarak değiştirir. Veritabanındaki yalnızca bir dosya grubu varsayılan dosya grubu olabilir. Daha fazla bilgi için Veritabanı Dosyaları ve Dosya Grupları bölümünü ziyaret edin.
NAME = new_filegroup_name Dosya grubu adını new_filegroup_name olarak değiştirir.
AUTOGROW_SINGLE_FILE Uygulanır: SQL Server (SQL Server 2016 (13.x) ve sonrası)
Dosya grubundaki bir dosya otomatik büyüme eşiğine ulaştığında, sadece o dosya büyür. Bu varsayılan seçenektir.
AUTOGROW_ALL_FILES
Geçerlidir: SQL Server (SQL Server 2016 (13.x) ve sonrası)
Dosya grubundaki bir dosya otomatik büyüme eşiğini karşıladığında, dosya grubundaki tüm dosyalar büyür.
Uyarı
Bu, TempDB için varsayılan değerdir.
<filegroup_updatability_option>::=
Dosya grubuna yalnızca okunur veya okuma/yazma özelliğini ayarlıyor.
READ_ONLY | READONLY Dosya grubunun yalnızca okunabilir olduğunu belirtir. İçindeki nesnelere güncelleme yapılmasına izin verilmez. Ana dosya grubu yalnızca okunabilir hale getirilemez. Bu durumu değiştirmek için veritabanına özel erişime sahip olmanız gerekir. Daha fazla bilgi için SINGLE_USER yan tümcesine bakın.
Çünkü yalnızca okunabilir bir veritabanı veri değişikliklerine izin vermemektedir:
- Otomatik kurtarma sistem başlatıldığında atlanır.
- Veritabanını küçültmek mümkün değil.
- Yalnızca okunabilir veritabanlarında kilitlenme olmaz. Bu, sorgu performansının hızlanmasına neden olabilir.
Uyarı
Bu anahtar kelime READONLY , Microsoft SQL Server'ın gelecekteki bir sürümünde kaldırılacaktır. Yeni geliştirme çalışmalarında kullanmaktan READONLY kaçının ve şu anda READONLY. Bunun yerine READ_ONLY kullanın.
READ_WRITE | READWRITE Grubun READ_WRITE olduğunu belirtir. Dosya grubundaki nesneler için güncellemeler etkinleştirilmiştir. Bu durumu değiştirmek için veritabanına özel erişime sahip olmanız gerekir. Daha fazla bilgi için SINGLE_USER yan tümcesine bakın.
Uyarı
Bu anahtar kelime READWRITE , Microsoft SQL Server'ın gelecekteki bir sürümünde kaldırılacaktır. Yeni geliştirme çalışmalarında kullanmaktan READWRITE kaçının ve mevcut READWRITEREAD_WRITE uygulamaları değiştirmeyi planlayın.
Tavsiye
Bu seçeneklerin durumu, sys.databases katalog görünümündeki is_read_only sütununu veya fonksiyonun DATABASEPROPERTYEX özelliğini inceleyerek belirlenebilir.
Açıklamalar
Veritabanının boyutunu küçültmek için dbcc SHRINKDATABASE
Bir BACKUP ifade çalışırken dosya ekleyemez veya kaldıramazsınız.
Her veritabanı için en fazla 32.767 dosya ve 32.767 dosya grubu belirtilebilir.
SQL Server 2005 (9.x) ile itibaren, bir veritabanı dosyasının durumu (örneğin, çevrimiçi veya çevrimdışı) veritabanının durumundan bağımsız olarak korunur. Daha fazla bilgi için bkz. Dosya Durumları.
- Dosya grubu içindeki dosyaların durumu, tüm dosya grubunun kullanılabilirliğini belirler. Bir dosya grubunun kullanılabilir olması için dosya grubundaki tüm dosyaların çevrimiçi olması gerekir.
- Bir dosya grubu çevrimdışıysa, SQL ifadesi ile dosya grubuna erişmek için yapılan herhangi bir girişim hata ile başarısız olur. Ifadeler için sorgu planları
SELECToluştururken, sorgu optimizleyicisi kümelenmiş olmayan indekslerden ve çevrimdışı dosya gruplarında bulunan indekslenmiş görünümlerden kaçınır. Bu, bu deyimlerin başarılı olmasını sağlar. Ancak, çevrimdışı dosya grubu hedef tablonun heap veya kümelenmiş indeksini içeriyorsa, ifadelerSELECTbaşarısız olur. Ayrıca, çevrimdışı dosya grubundaki herhangi bir indeksli tabloyu değiştiren herhangiINSERTbir ,UPDATE, veyaDELETEifade başarısız olur.
SIZE, MAXSIZE ve FILEGROWTH parametreleri, dosya için UNC yolu belirlendiğinde ayarlanamaz.
SIZE ve FILEGROWTH parametreleri bellek optimize edilmiş dosya grupları için ayarlanamaz.
Bu anahtar kelime READONLY , Microsoft SQL Server'ın gelecekteki bir sürümünde kaldırılacaktır. Yeni geliştirme çalışmalarında kullanmaktan READONLY kaçının ve şu anda READONLY kullanan uygulamaları değiştirmeyi planlayın. Bunun yerine READ_ONLY kullanın.
Bu anahtar kelime READWRITE , Microsoft SQL Server'ın gelecekteki bir sürümünde kaldırılacaktır. Yeni geliştirme çalışmalarında kullanmaktan READWRITE kaçının ve mevcut READWRITEREAD_WRITE uygulamaları değiştirmeyi planlayın.
Dosyaları Taşıma
Sistem veya kullanıcı tanımlı verileri ve günlük dosyalarını FILENAME'de yeni konumu belirterek taşıyabilirsiniz. Bu aşağıdaki senaryolarda faydalı olabilir:
- Arıza iyileştirmesi. Örneğin, veritabanı donanım arızası nedeniyle şüpheli modda veya kapanma modunda.
- Planlanan taşınma.
- Planlı disk bakımı için taşınma.
Daha fazla bilgi için Veritabanı Dosyalarını Taşıma bölümüne bakınız.
Dosyaların Başlatılması
Varsayılan olarak, veri ve günlük dosyaları, aşağıdaki işlemlerden birini gerçekleştirdiğinizde dosyaları sıfırlarla doldurarak başlatılır:
- Veritabanı oluşturma.
- Mevcut bir veritabanına dosya ekleyin.
- Mevcut bir dosyanın boyutunu artırın.
- Bir veritabanı veya dosya grubunu geri yüklemek.
Veri dosyaları anında başlatılabilir. Bu, bu dosya işlemlerinin hızlı yürütülmesini sağlar. Daha fazla bilgi için bkz. Veritabanı Dosyası Başlatma.
FILESTREAM Konteynerinin Kaldırılması
FILESTREAM konteyneri "DBCC SHRINKFILE" işlemiyle boşalmış olsa da, veritabanı çeşitli sistem bakım nedenleriyle silinmiş dosyalara referansları korumaya devam etmek zorunda kalabilir. sp_filestream_force_garbage_collection , güvenli olduğunda bu dosyaları kaldırmak için FILESTREAM Çöp Toplayıcısını çalıştırır. FILESTREAM Çöp Toplayıcısı tüm dosyaları bir FILESTREAM konteynerinden kaldırmadıysa, ALTER DATABASE REMOVE FILE işlemi bir FILESTREAM konteynerini kaldırmada başarısız olur ve hata döndürür. FILESTREAM konteynerini kaldırmak için aşağıdaki işlem önerilir.
- DBCC SHRINKFILE'ı EMPTYFILE seçeneğiyle çalıştırarak bu konteynerin aktif içeriğini diğer konteynerlere taşıyabilirsiniz.
- Günlük yedeklemelerinin TAM veya BULK_LOGGED kurtarma modelinde alındığından emin olun.
- Eğer uygunsa, replikasyon günlüğü okuyucu işinin çalıştırıldığından emin olun.
- Çöp toplayıcıyı bu konteynerde artık gerekmeyen dosyaları silmeye zorlamak için sp_filestream_force_garbage_collection çalıştırın.
- Bu konteyneri kaldırmak için DOSYAYI KALDIR seçeneğiyle ALTER DATABASE çalıştırın.
- Çöp toplamayı tamamlamak için 2'den 4'e kadar olan adımları bir kez daha tekrarlayın.
- ALTER Veritabanını kullan... Bu konteyneri çıkarmak için DOSYAYI KALDIRIN.
Örnekler
A. Veritabanına dosya ekleme
Aşağıdaki örnek, AdventureWorks2025 veritabanına 5 MB'lık bir veri dosyası ekler.
USE master;
GO
ALTER DATABASE AdventureWorks2022
ADD FILE
(
NAME = Test1dat2,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\t1dat2.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
);
GO
B. Veritabanına iki dosyalı dosya grubu eklemek
Aşağıdaki örnek, AdventureWorks2025 veritabanında dosya grubunu Test1FG1 oluşturur ve dosya grubuna iki 5 MB dosya ekler.
USE master
GO
ALTER DATABASE AdventureWorks2022
ADD FILEGROUP Test1FG1;
GO
ALTER DATABASE AdventureWorks2022
ADD FILE
(
NAME = test1dat3,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\t1dat3.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
),
(
NAME = test1dat4,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\t1dat4.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)
TO FILEGROUP Test1FG1;
GO
C. Veritabanına iki günlük dosyası ekleme
Aşağıdaki örnek, AdventureWorks2025 veritabanına iki 5 MB'lik log dosyası ekler.
USE master;
GO
ALTER DATABASE AdventureWorks2022
ADD LOG FILE
(
NAME = test1log2,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\test2log.ldf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
),
(
NAME = test1log3,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\test3log.ldf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
);
GO
D. Veritabanından dosya kaldırma
Aşağıdaki örnek, örnek B'de eklenen dosyalardan birini kaldırır.
USE master;
GO
ALTER DATABASE AdventureWorks2022
REMOVE FILE test1dat4;
GO
E. Bir dosyayı değiştirmek
Aşağıdaki örnek, örnek B'de eklenen dosyalardan birinin boyutunu artırır. MODIFY FILE komutlu ALTER DATABASE sadece dosya boyutunu büyütebilir, bu yüzden dosya boyutunu küçültmeniz gerekiyorsa DBCC SHRINKFILE kullanmanız gerekir.
USE master;
GO
ALTER DATABASE AdventureWorks2022
MODIFY FILE
(NAME = test1dat3,
SIZE = 200MB);
GO
Bu örnek, bir veri dosyasının boyutunu 100 MB'a kadar küçültüyor ve ardından bu miktardaki boyutu belirtiyor.
USE AdventureWorks2022;
GO
DBCC SHRINKFILE (AdventureWorks2022_data, 100);
GO
USE master;
GO
ALTER DATABASE AdventureWorks2022
MODIFY FILE
(NAME = test1dat3,
SIZE = 200MB);
GO
F. Dosyayı yeni bir konuma taşımak
Aşağıdaki örnek, örnek A'da oluşturulan dosyayı Test1dat2 yeni bir dizine taşır.
Uyarı
Bu örneği çalıştırmadan önce dosyayı fiziksel olarak yeni dizine taşımanız gerekir. Sonrasında SQL Server örneğini durdurup başlatın veya veritabanını AdventureWorks2025 ÇEVRIMİŞTİRİŞİ ve sonra ÇEVRIMİÇİNE alarak değişikliği uygulayın.
USE master;
GO
ALTER DATABASE AdventureWorks2022
MODIFY FILE
(
NAME = Test1dat2,
FILENAME = N'c:\t1dat2.ndf'
);
GO
G. Tempdb'yi yeni bir konuma taşımak
Aşağıdaki örnek, diskteki mevcut konumundan başka bir disk konumuna taşınır tempdb .
tempdb MSSQLSERVER hizmeti her başlatıldığında yeniden oluşturulduğu için, veri ve log dosyalarını fiziksel olarak taşımanıza gerek kalmaz. Dosyalar, servis 3. adımda yeniden başlatıldığında oluşturulur. Hizmet yeniden başlatılana kadar tempdb mevcut konumunda çalışmaya devam etmektedir.
Veritabanının
tempdbmantıksal dosya adlarını ve diskteki mevcut konumlarını belirleyin.SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('tempdb'); GOHer dosyanın konumunu kullanarak
ALTER DATABASEdeğiştirin.USE master; GO ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf'); GO ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'E:\SQLData\templog.ldf'); GOSQL Server örneğini durdurup yeniden başlatın.
Dosya değişikliğini doğrulayın.
SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('tempdb');tempdb.mdf ve templog.ldf dosyalarını orijinal konumlarından silin.
H. Bir dosya grubunun varsayılan haline getirilmesi
Aşağıdaki örnek, örneğin B'de oluşturulan dosya grubunu Test1FG1 varsayılan dosya grubu yapar. Sonra, varsayılan dosya grubu dosya grubuna PRIMARY sıfırlanır. Bunun parantez veya tırnak işaretiyle sınırlandırılması gerektiğini unutmayın PRIMARY .
USE master;
GO
ALTER DATABASE AdventureWorks2022
MODIFY FILEGROUP Test1FG1 DEFAULT;
GO
ALTER DATABASE AdventureWorks2022
MODIFY FILEGROUP [PRIMARY] DEFAULT;
GO
I. ALTER DATABASE kullanarak bir dosya grubu ekleme
Aşağıdaki örnek, veritabanına bu maddeyi FILEGROUPFILESTREAM içeren bir FileStreamPhotoDB madde ekler.
--Create and add a FILEGROUP that CONTAINS the FILESTREAM clause.
ALTER DATABASE FileStreamPhotoDB
ADD FILEGROUP TodaysPhotoShoot
CONTAINS FILESTREAM;
GO
--Add a file for storing database photos to FILEGROUP
ALTER DATABASE FileStreamPhotoDB
ADD FILE
(
NAME= 'PhotoShoot1',
FILENAME = 'C:\Users\Administrator\Pictures\TodaysPhotoShoot.ndf'
)
TO FILEGROUP TodaysPhotoShoot;
GO
Aşağıdaki örnek, veritabanına bu maddeyi FILEGROUPMEMORY_OPTIMIZED_DATA içeren bir xtp_db madde ekler. Dosya grubu, bellek optimize edilmiş verileri saklar.
--Create and add a FILEGROUP that CONTAINS the MEMORY_OPTIMIZED_DATA clause.
ALTER DATABASE xtp_db
ADD FILEGROUP xtp_fg
CONTAINS MEMORY_OPTIMIZED_DATA;
GO
--Add a file for storing memory optimized data to FILEGROUP
ALTER DATABASE xtp_db
ADD FILE
(
NAME='xtp_mod',
FILENAME='d:\data\xtp_mod'
)
TO FILEGROUP xtp_fg;
GO
J. Dosya grubunu değiştirin, böylece dosya grubundaki bir dosya otomatik büyüme eşiğine ulaştığında, dosya grubundaki tüm dosyalar büyür
Aşağıdaki örnek, okuma-yazma dosya gruplarını ayarla ALTER DATABASE değiştirmek için gerekli AUTOGROW_ALL_FILES ifadeleri oluşturur.
--Generate ALTER DATABASE ... MODIFY FILEGROUP statements
--so that all read-write filegroups grow at the same time.
SET NOCOUNT ON;
DROP TABLE IF EXISTS #tmpdbs
CREATE TABLE #tmpdbs (id INT IDENTITY(1,1), [dbid] INT, [dbname] sysname, isdone BIT);
DROP TABLE IF EXISTS #tmpfgs
CREATE TABLE #tmpfgs (id INT IDENTITY(1,1), [dbid] INT, [dbname] sysname, fgname sysname, isdone BIT);
INSERT INTO #tmpdbs ([dbid], [dbname], [isdone])
SELECT database_id, name, 0 FROM master.sys.databases (NOLOCK) WHERE is_read_only = 0 AND state = 0;
DECLARE @dbid INT, @query VARCHAR(1000), @dbname sysname, @fgname sysname
WHILE (SELECT COUNT(id) FROM #tmpdbs WHERE isdone = 0) > 0
BEGIN
SELECT TOP 1 @dbname = [dbname], @dbid = [dbid] FROM #tmpdbs WHERE isdone = 0
SET @query = 'SELECT ' + CAST(@dbid AS NVARCHAR) + ', ''' + @dbname + ''', [name], 0 FROM [' + @dbname + '].sys.filegroups WHERE [type] = ''FG'' AND is_read_only = 0;'
INSERT INTO #tmpfgs
EXEC (@query)
UPDATE #tmpdbs
SET isdone = 1
WHERE [dbid] = @dbid
END;
IF (SELECT COUNT(ID) FROM #tmpfgs) > 0
BEGIN
WHILE (SELECT COUNT(id) FROM #tmpfgs WHERE isdone = 0) > 0
BEGIN
SELECT TOP 1 @dbname = [dbname], @dbid = [dbid], @fgname = fgname FROM #tmpfgs WHERE isdone = 0
SET @query = 'ALTER DATABASE [' + @dbname + '] MODIFY FILEGROUP [' + @fgname + '] AUTOGROW_ALL_FILES;'
PRINT @query
UPDATE #tmpfgs
SET isdone = 1
WHERE [dbid] = @dbid AND fgname = @fgname
END
END;
GO
Ayrıca Bkz.
* SQL Yönetilen Örneği *
Azure SQL Yönetilen Varlık
Bu ifadeyi Azure SQL Managed Instance'da bir veritabanı ile kullanın.
Azure SQL Yönetilen Örneği söz dizimi
ALTER DATABASE database_name
{
<add_or_modify_files>
| <add_or_modify_filegroups>
}
[;]
<add_or_modify_files>::=
{
ADD FILE <filespec> [ ,...n ]
[ TO FILEGROUP { filegroup_name } ]
| REMOVE FILE logical_file_name
| MODIFY FILE <filespec>
}
<filespec>::=
(
NAME = logical_file_name
[ , SIZE = size [ KB | MB | GB | TB ] ]
[ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ]
[ , FILEGROWTH = growth_increment [ KB | MB | GB | TB| % ] ]
)
<add_or_modify_filegroups>::=
{
| ADD FILEGROUP filegroup_name
| REMOVE FILEGROUP filegroup_name
| MODIFY FILEGROUP filegroup_name
{ <filegroup_updatability_option>
| DEFAULT
| NAME = new_filegroup_name
| { AUTOGROW_SINGLE_FILE | AUTOGROW_ALL_FILES }
}
}
<filegroup_updatability_option>::=
{
{ READONLY | READWRITE }
| { READ_ONLY | READ_WRITE }
}
Arguments
<add_or_modify_files>::=
Eklenecek, çıkarılacak veya değiştirilecek dosyayı belirtir.
database_name Veritabanının adı değiştirilecek mi?
DOSYA EKLE Veritabanına bir dosya ekler.
TO FILEGROUP { filegroup_name } Belirtilen dosyanın hangi dosya grubuna ekleneceğini belirtir. Mevcut dosya gruplarını ve hangi dosya grubunun mevcut varsayılan olduğunu göstermek için sys.filegroups katalog görünümünü kullanın.
DOSYAYI KALDIR logical_file_name SQL Server örneğinden mantıksal dosya tanımını kaldırır ve fiziksel dosyayı siler. Dosya boş olmadıkça kaldırılamaz.
logical_file_name SQL Server'da dosyaya referans verirken kullanılan mantıksal isimdir.
DOSYAYI DEĞIŞTIR Değiştirilmesi gereken dosyayı belirtir. Aynı anda yalnızca bir <filespec> özelliği değiştirilebilir. Değiştirilecek dosyayı tanımlamak için dosya spec'inde< her zaman NAME belirtilmelidir>. SIZE belirtilmişse, yeni boyut mevcut dosya boyutundan daha büyük olmalıdır.
<filespec>::=
Dosya özelliklerini denetler.
NAME logical_file_name Dosyanın mantıksal adını belirtir.
logical_file_name SQL Server örneklerinde dosyaya atıfta bulunurken kullanılan mantıksal isimdir.
NEWNAME new_logical_file_name Dosya için yeni bir mantıksal isim belirtir.
new_logical_file_name Mevcut mantıksal dosya adının yerine geçecek bir isimdir. İsim, veritabanında benzersiz olmalı ve tanımlayıcı kurallarına uygun olmalıdır. İsim, bir karakter veya Unicode sabiti, normal bir tanımlayıcı veya sınırlandırılmış bir tanımlayıcı olabilir.
SIZE size Dosya boyutunu belirtir.
boyut Dosyanın boyutu.
ADD FILE ile belirtildiğinde, boyut dosyanın başlangıç boyutudur. MODIFY FILE ile belirtildiğinde, boyut dosyanın yeni boyutudur ve mevcut dosya boyutundan daha büyük olmalıdır.
Birincil dosya için boyut sağlanmadığında, SQL Server model veritabanındaki birincil dosyanın boyutunu kullanır. İkincil bir veri dosyası veya log dosyası belirtildiğinde ancak dosya için boyut belirtilmediğinde, Veritabanı Motoru dosyayı 1 MB yapar.
KB, MB, GB ve TB ekleri kilobayt, megabayt, gigabayt veya terabayt belirtmek için kullanılabilir. Varsayılan değer MB'tır. Tam sayı belirtin ve ondalık eklemeyin. Bir megabaytın bir kesirini belirtmek için, değeri kilobayta çevirerek sayıyı 1024 ile çarpın. Örneğin, 1,5 MB yerine 1536 KB belirtin (1,5 x 1024 = 1536).
MAXSIZE { max_size| UNLIMITED } Dosyanın büyüyebileceği maksimum dosya boyutunu belirtir.
max_size Maksimum dosya boyutu. KB, MB, GB ve TB ekleri kilobayt, megabayt, gigabayt veya terabayt belirtmek için kullanılabilir. Varsayılan değer MB'tır. Tam sayı belirtin ve ondalık eklemeyin. Eğer max_size belirtilmemişse, dosya boyutu disk dolana kadar artar.
UNLIMITED Dosyanın disk dolmadan büyümesini belirtir. SQL Server'da sınırsız büyümeyle belirtilen bir günlük dosyasının boyutu en fazla 2 TB ve veri dosyasının boyutu en fazla 16 TB'dir.
FILEGROWTH growth_increment Dosyanın otomatik büyüme artışını belirtir. Bir dosya için FILEGROWTH ayarı MAXSIZE ayarını aşamaz.
growth_increment Her yeni alan gerektiğinde dosyaya eklenen alan miktarıdır.
Değer MB, KB, GB, TB veya yüzde (%) olarak belirtilebilir. Bir sayı MB, KB veya % eki olmadan belirtilmişse, varsayılan MB'dir. % belirtildiğinde, büyüme artışı boyutu, artışın gerçekleştiği anki dosya boyutunun belirlenen yüzdesidir. Belirtilen boyut en yakın 64 KB'ye yuvarlanmıştır.
0 değeri, otomatik büyümenin kapalı olarak ayarlandığını ve ek alan izni verilmediğini gösterir.
FILEGROWTH belirtilmemişse, varsayılan değerler şunlardır:
- Veri 16 MB
- Log dosyaları 16 MB
<add_or_modify_filegroups>::=
Veritabanına bir dosya grubu ekleyin, değiştirin veya kaldırın.
DOSYA GRUBU filegroup_name Veritabanına bir dosya grubu ekler.
Aşağıdaki örnek, sql_db_mi adlı bir veritabanına eklenen bir dosya grubu oluşturur ve dosya grubuna bir dosya ekler.
ALTER DATABASE sql_db_mi ADD FILEGROUP sql_db_mi_fg;
GO
ALTER DATABASE sql_db_mi ADD FILE (NAME='sql_db_mi_mod') TO FILEGROUP sql_db_mi_fg;
DOSYA GRUBUNU KALDIR filegroup_name Veritabanından bir dosya grubunu kaldırır. Dosya grubu boş olmadıkça kaldırılamaz. Önce dosya grubundaki tüm dosyaları kaldırın. Daha fazla bilgi için, bu konunun başındaki " DOSYA logical_file_name'NI KALDIR" bölümüne bakınız.
DOSYA GRUBUNU filegroup_name { <filegroup_updatability_option> | VARSAYILAN | NAME =new_filegroup_name } Dosya grubunu durumu READ_ONLY veya READ_WRITE olarak ayarlayarak, dosya grubunu veritabanı için varsayılan dosya grubu yaparak veya dosya grubu adını değiştirerek değiştirir.
<filegroup_updatability_option> Dosya grubuna yalnızca okunur veya okuma/yazma özelliğini ayarlar.
DEFAULT Varsayılan veritabanı dosya grubunu filegroup_name olarak değiştirir. Veritabanındaki yalnızca bir dosya grubu varsayılan dosya grubu olabilir. Daha fazla bilgi için Veritabanı Dosyaları ve Dosya Grupları bölümünü ziyaret edin.
NAME = new_filegroup_name Dosya grubu adını new_filegroup_name olarak değiştirir.
AUTOGROW_SINGLE_FILE
Dosya grubundaki bir dosya otomatik büyüme eşiğine ulaştığında, sadece o dosya büyür. Bu varsayılan seçenektir.
AUTOGROW_ALL_FILES
Dosya grubundaki bir dosya otomatik büyüme eşiğini karşıladığında, dosya grubundaki tüm dosyalar büyür.
<filegroup_updatability_option>::=
Dosya grubuna yalnızca okunur veya okuma/yazma özelliğini ayarlıyor.
READ_ONLY | READONLY Dosya grubunun yalnızca okunabilir olduğunu belirtir. İçindeki nesnelere güncelleme yapılmasına izin verilmez. Ana dosya grubu yalnızca okunabilir hale getirilemez. Bu durumu değiştirmek için veritabanına özel erişime sahip olmanız gerekir. Daha fazla bilgi için SINGLE_USER yan tümcesine bakın.
Çünkü yalnızca okunabilir bir veritabanı veri değişikliklerine izin vermemektedir:
- Otomatik kurtarma sistem başlatıldığında atlanır.
- Veritabanını küçültmek mümkün değil.
- Yalnızca okunabilir veritabanlarında kilitlenme olmaz. Bu, sorgu performansının hızlanmasına neden olabilir.
Uyarı
READONLY anahtar kelimesi, Microsoft SQL Server'ın gelecekteki bir sürümünde kaldırılacaktır. Yeni geliştirme çalışmalarında READONLY kullanmaktan kaçının ve şu anda READONLY kullanan uygulamaları değiştirmeyi planlayın. Bunun yerine READ_ONLY kullanın.
READ_WRITE | READWRITE Grubun READ_WRITE olduğunu belirtir. Dosya grubundaki nesneler için güncellemeler etkinleştirilmiştir. Bu durumu değiştirmek için veritabanına özel erişime sahip olmanız gerekir. Daha fazla bilgi için SINGLE_USER yan tümcesine bakın.
Uyarı
Bu anahtar kelime READWRITE , Microsoft SQL Server'ın gelecekteki bir sürümünde kaldırılacaktır. Yeni geliştirme çalışmalarında kullanmaktan READWRITE kaçının ve mevcut READWRITEREAD_WRITE uygulamaları değiştirmeyi planlayın.
Bu seçeneklerin durumu, sys.databases katalog görünümündeki is_read_only sütununu veya fonksiyonun DATABASEPROPERTYEX özelliğini inceleyerek belirlenebilir.
Açıklamalar
Veritabanının boyutunu küçültmek için dbcc SHRINKDATABASE
Bir BACKUP ifade çalışırken dosya ekleyemez veya kaldıramazsınız.
Her veritabanı için en fazla 32.767 dosya ve 32.767 dosya grubu belirtilebilir.
Örnekler
A. Veritabanına dosya ekleme
Aşağıdaki örnek, AdventureWorks2025 veritabanına 5 MB'lık bir veri dosyası ekler.
USE master;
GO
ALTER DATABASE AdventureWorks2022
ADD FILE
(
NAME = Test1dat2,
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
);
GO
B. Veritabanına iki dosyalı dosya grubu eklemek
Aşağıdaki örnek, AdventureWorks2025 veritabanında dosya grubunu Test1FG1 oluşturur ve dosya grubuna iki 5 MB dosya ekler.
USE master
GO
ALTER DATABASE AdventureWorks2022
ADD FILEGROUP Test1FG1;
GO
ALTER DATABASE AdventureWorks2022
ADD FILE
(
NAME = test1dat3,
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
),
(
NAME = test1dat4,
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)
TO FILEGROUP Test1FG1;
GO
C. Veritabanından dosya kaldırma
Aşağıdaki örnek, örnek B'de eklenen dosyalardan birini kaldırır.
USE master;
GO
ALTER DATABASE AdventureWorks2022
REMOVE FILE test1dat4;
GO
D. Bir dosyayı değiştirmek
Aşağıdaki örnek, örnek B'de eklenen dosyalardan birinin boyutunu artırır. MODIFY FILE komutlu ALTER DATABASE sadece dosya boyutunu büyütebilir, bu yüzden dosya boyutunu küçültmeniz gerekiyorsa DBCC SHRINKFILE kullanmanız gerekir.
USE master;
GO
ALTER DATABASE AdventureWorks2022
MODIFY FILE
(NAME = test1dat3,
SIZE = 200MB);
GO
Bu örnek, bir veri dosyasının boyutunu 100 MB'a kadar küçültüyor ve ardından bu miktardaki boyutu belirtiyor.
USE AdventureWorks2022;
GO
DBCC SHRINKFILE (AdventureWorks2022_data, 100);
GO
USE master;
GO
ALTER DATABASE AdventureWorks2022
MODIFY FILE
(NAME = test1dat3,
SIZE = 200MB);
GO
E. Bir dosya grubunun varsayılan haline getirilmesi
Aşağıdaki örnek, örneğin B'de oluşturulan dosya grubunu Test1FG1 varsayılan dosya grubu yapar. Sonra, varsayılan dosya grubu dosya grubuna PRIMARY sıfırlanır. Bunun parantez veya tırnak işaretiyle sınırlandırılması gerektiğini unutmayın PRIMARY .
USE master;
GO
ALTER DATABASE AdventureWorks2022
MODIFY FILEGROUP Test1FG1 DEFAULT;
GO
ALTER DATABASE AdventureWorks2022
MODIFY FILEGROUP [PRIMARY] DEFAULT;
GO
F. ALTER DATABASE kullanarak bir dosya grubu ekleme
Aşağıdaki örnek veritabanına FILEGROUP bir MyDB a'yı ekler.
--Create and add a FILEGROUP
ALTER DATABASE MyDB
ADD FILEGROUP NewFG;
GO
--Add a file to FILEGROUP
ALTER DATABASE MyDB
ADD FILE
(
NAME= 'MyFile',
)
TO FILEGROUP NewFG;
GO
G. Dosya grubunu değiştirin, böylece dosya grubundaki bir dosya otomatik büyüme eşiğine ulaştığında, dosya grubundaki tüm dosyalar büyür
Aşağıdaki örnek, okuma-yazma dosya gruplarını ayarla ALTER DATABASE değiştirmek için gerekli AUTOGROW_ALL_FILES ifadeleri oluşturur.
--Generate ALTER DATABASE ... MODIFY FILEGROUP statements
--so that all read-write filegroups grow at the same time.
SET NOCOUNT ON;
DROP TABLE IF EXISTS #tmpdbs
CREATE TABLE #tmpdbs (id INT IDENTITY(1,1), [dbid] INT, [dbname] sysname, isdone BIT);
DROP TABLE IF EXISTS #tmpfgs
CREATE TABLE #tmpfgs (id INT IDENTITY(1,1), [dbid] INT, [dbname] sysname, fgname sysname, isdone BIT);
INSERT INTO #tmpdbs ([dbid], [dbname], [isdone])
SELECT database_id, name, 0 FROM master.sys.databases (NOLOCK) WHERE is_read_only = 0 AND state = 0;
DECLARE @dbid INT, @query VARCHAR(1000), @dbname sysname, @fgname sysname
WHILE (SELECT COUNT(id) FROM #tmpdbs WHERE isdone = 0) > 0
BEGIN
SELECT TOP 1 @dbname = [dbname], @dbid = [dbid] FROM #tmpdbs WHERE isdone = 0
SET @query = 'SELECT ' + CAST(@dbid AS NVARCHAR) + ', ''' + @dbname + ''', [name], 0 FROM [' + @dbname + '].sys.filegroups WHERE [type] = ''FG'' AND is_read_only = 0;'
INSERT INTO #tmpfgs
EXEC (@query)
UPDATE #tmpdbs
SET isdone = 1
WHERE [dbid] = @dbid
END;
IF (SELECT COUNT(ID) FROM #tmpfgs) > 0
BEGIN
WHILE (SELECT COUNT(id) FROM #tmpfgs WHERE isdone = 0) > 0
BEGIN
SELECT TOP 1 @dbname = [dbname], @dbid = [dbid], @fgname = fgname FROM #tmpfgs WHERE isdone = 0
SET @query = 'ALTER DATABASE [' + @dbname + '] MODIFY FILEGROUP [' + @fgname + '] AUTOGROW_ALL_FILES;'
PRINT @query
UPDATE #tmpfgs
SET isdone = 1
WHERE [dbid] = @dbid AND fgname = @fgname
END
END;
GO
Ayrıca Bkz.
- VERİTABANI OLUŞTUR
- DATABASEPROPERTYEX
- DROP DATABASE
- sp_spaceused
- sys.databases
- sys.database_files
- sys.data_spaces
- sys.filegroups
- sys.master_files
- DBCC SHRINKFILE
- Memory-Optimized Dosya Grubu