ALTER DATABASE dosyası ve dosya grubu seçenekleri (Transact-SQL)

Dosyaları ve dosya gruplarını veritabanıyla ilişkili değiştirir.Ekler veya dosyaları ve dosya gruplarını bir veritabanından, değişiklikleri bir veritabanı veya dosya ve dosya gruplarını özniteliklerini kaldırır.ALTER DATABASE diğer seçenekler için bkz: ALTER DATABASE Transact-SQL).

Topic link iconTransact-SQL sözdizimi kuralları

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' } ] 
    [ , 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 ]
    | REMOVE FILEGROUP filegroup_name 
    | MODIFY FILEGROUP filegroup_name
        { <filegroup_updatability_option> 
        | DEFAULT
        | NAME = new_filegroup_name 
        }
}
<filegroup_updatability_option>::=
{
    { READONLY | READWRITE } 
    | { READ_ONLY | READ_WRITE }
}

Bağımsız değişkenler

<add_or_modify_files>::=

Eklediyseniz, kaldırdıysanız değiştirilmiş veya için dosyayı belirtir.

  • database_name
    Değiştirilecek veritabanının adıdır.

  • DOSYA EKLEME
    Bir dosya, veritabanına ekler.

    • {dosya grubufilegroup_name }
      Belirtilen dosya eklenecek dosya grubu belirtir.Geçerli dosya gruplarını ve geçerli varsayılan hangi dosya grubu görüntülemek için , sys.Filegroups kataloğunu görüntüleyin.
  • GÜNLÜK DOSYASI EKLEME
    Bir günlük dosyası eklenir belirtilen veritabanına ekler.

  • logical_file_name FILE REMOVE
    Mantıksal dosya açıklama bir örneğinden kaldırır. SQL Server ve fiziksel dosyayı siler. Boş değilse, dosya kaldırılamıyor.

    • logical_file_name
      Mantıksal ad olarak kullanılır SQL Server dosyayı başvururken.
  • DOSYA DEĞİŞTİRME
    Değiştirilmesi gereken dosyayı belirtir.Yalnızca bir <dosyabelirtimi> özellik, bir anda değiştirilebilir. AD her zaman belirtilmelidir <dosyabelirtimi> Değiştirilecek dosyayı tanımlamak için . Yeni boyutu, SIZE belirtilmezse, geçerli dosya boyutundan daha büyük olmalıdır.

    Mantıksal bir veri dosyası veya günlük dosyası adını değiştirmek için , olarak yeniden adlandırılacak mantıksal dosya adını belirtin: NAME yan tümce ve dosyayı yeni mantıksal adını belirtin NEWNAME yan tümce. Örneğin:

    MODIFY FILE ( NAME = logical_file_name, NEWNAME = new_logical_name ) 
    

    Bir veri dosyası veya günlük dosyası, yeni bir konuma taşımak için geçerli mantıksal dosya adını belirtmek için NAME yan tümce ve yeni yol ve işletim sistemi dosya adında FILENAME yan tümce. Örneğin:

    MODIFY FILE ( NAME = logical_file_name, FILENAME = ' new_path/os_file_name ' )
    

    Bir tam metin kataloğu taşıdığınızda, yalnızca yeni yol DOSYAADı yan tümcesinde belirtin.Işletim sistemi ve dosya adını belirtin.

    Daha fazla bilgi için bkz: Veritabanı dosyalarını taşıma.

    FILESTREAM dosya grubu için AD çevrimiçi değiştirilebilir.FILENAME çevrimiçi değiştirilebilir; Bununla birlikte, değişiklik kadar kapsayıcı fiziksel konumlandırılarak sunucu kapatma, daha sonra yeniden sonra etkili olmaz.

    Yapabilecekleriniz küme OFFLINE FILESTREAM dosyaya.FILESTREAM dosya, çevrimdışı durumdayken, ana dosya grubu dahili çevrimdışı olarak işaretlenir; bu nedenle, bu dosya grubu FILESTREAM verileri tüm erişimi başarısız olacaktır.

<dosyabelirtimi>::=

Dosya özelliklerini denetler.

  • logical_file_name Adı
    Belirtir mantıksal ad dosyasının.

    • logical_file_name
      Mantıksal ad içinde bir örneğini kullanılır SQL Server dosyayı başvururken.
  • new_logical_file_name NEWNAME
    Dosya için yeni bir mantıksal adını belirtir.

    • new_logical_file_name
      Varolan bir mantıksal dosyanın adını değiştirmek için adıdır.Adı veritabanı içinde benzersiz olması gerekir ve için kurallarıyla uyumlu tanımlayıcılar.Ad, bir karakteri Unicode sabit, normal bir tanıtıcı veya sınırlandırılmış bir tanımlayıcı olabilir.Daha fazla bilgi için bkz:Tanıtıcıları, nesne adları kullanma.
  • DOSYAADı {'os_file_name' | 'filestream_path' }
    Işletim sisteminin (fiziksel) dosya adını belirtir.

    • ' os_file_name '
      Bir standart dosya (SATıRSAY) grubu için dosyayı oluşturduğunuzda işletim sistemi tarafından kullanılan yol ve dosya adı budur.Dosya, sunucuda bulunması gerekir SQL Server yüklü. Belirtilen yol, ALTER VERITABANı çalıştırmadan önce varolmalıdır deyim.

      SIZE MAXSIZE ve FILEGROWTH parametreleri olamaz küme olduğunda, bir UNC yol dosyası için belirtilen.

      Veri dosyaları sıkıştırılmış bir dosya sistemlerinde dosyaları salt okunur ikincil dosyaları değilseniz veya veritabanı salt okunur ise konması değil.Günlük dosyaları sıkıştırılmış bir dosya sistemlerinde hiçbir zaman konması.Daha fazla bilgi için bkz:Salt okunur Filegroups ve sıkıştırma.

      Dosya bir Ham bölüme ise os_file_name Varolan bir Ham bölümü yalnızca sürücü harfini belirtmeniz gerekir. Yalnızca bir dosya, ham her bölüme koyabilirsiniz.

    • 'filestream_path'
      FILESTREAM dosya grubu için FILENAME FILESTREAM verilerin depolanacağı yol belirtir.En çok son klasör yol var olmalıdır ve son klasörü var olmalıdır.Örneğin, C:\MyFiles\MyFilestreamData yol belirtirseniz, C:\MyFiles, ALTER DATABASE çalıştırılmadan önce mevcut olması gerekir, ancak MyFilestreamData klasörü var olmalıdır.

      Dosya grubu ve dosya (<filespec>) aynı deyiminde oluşturulmalıdır. Tek bir dosya olabilir <filespec>, FILESTREAM dosya grubu için.

      SIZE MAXSIZE ve FILEGROWTH özelliklerini bir FILESTREAM dosya grubu için geçerli değildir.

  • size SIZE
    Dosya boyutunu belirtir.SIZE FILESTREAM dosya grupları için geçerli değildir.

    • size
      Dosya boyutudur.

      ADD, FILE belirtildiğinde size dosyanın ilk boyutudur. MODIFY, FILE belirtildiğinde size dosya için yeni boyutu ve geçerli dosya boyutundan daha büyük olmalıdır.

      Ne zaman size birincil dosya için sağlanan SQL Server birincil dosyasının boyutu kullanan modeli veritabanıdır.Bir ikincil veri dosyası veya günlük dosyası belirtilir, ancak size dosya için belirtilen Database Engine Dosya yaptığı 1 MB.

      KB, MB, GB ve TB soneklerini kilobayt, megabayt, gigabayt veya terabayt belirtmek için kullanılır.Varsayılan değer MB'dir.Bir tamsayı belirtmek ve ondalık sayı içerir.Bir bölümü bir megabayt belirtmek için , değer için kilobayt 1024 sayı çarpılarak dönüştürün.Örneğin, 1.5 MB (1.5 x 1024 = 1536) yerine 1536 KB belirtin.

  • MAXSIZE {max_size| SINIRSIZ}
    Dosyayı büyüyebileceği en büyük dosya boyutunu belirtir.MAXSIZE FILESTREAM dosya grupları için geçerli değildir.

    • max_size
      En büyük dosya boyutudur.KB, MB, GB ve TB soneklerini kilobayt, megabayt, gigabayt veya terabayt belirtmek için kullanılır.Varsayılan değer MB'dir.Bir tamsayı belirtmek ve ondalık sayı içerir.If max_size belirtilmemişse, disk dolu olduğu kadar dosya boyutunu artırır.

    • SINIRSIZ
      Disk dolu olduğu kadar dosya büyür belirtir.Içinde SQL Server, sınırsız büyüme ile belirtilen günlük dosyası en büyük boyutu 2 olan bir en büyük boyutu 16 TB ve bir veri dosyasına sahip TB.

  • growth_increment FILEGROWTH
    Otomatik büyüme artışı dosyasının belirtir.Bir dosya FILEGROWTH ayarı MAXSIZE ayarı geçemez.FILEGROWTH FILESTREAM dosya grupları için geçerli değildir.

    • growth_increment
      Alanı her saat yeni alan gereklidir, dosyaya eklenen tutardır.

      Değer, MB, BB, GB, TB veya yüzde (%) belirtilebilir.Bir MB, KB veya % soneki bir sayı belirtilmişse, varsayılan değer MB'dir.% Belirtildiğinde, büyüme artışı boyutu belirtilen dosya boyutunu artırma oluşuyor saat yüzdesidir.Belirtilen boyut en yakın 64 KB olarak yuvarlanır.

      0 Değeri, otomatik büyüme off olarak ayarlanmışsa ve hiçbir ek alan izin gösterir.

      FILEGROWTH belirtilmezse, varsayılan değer 1 MB veri dosyalarının ve günlük dosyaları için % 10; en düşük değer 64 KB'dir.

      Not

      Başlatılıyor SQL Server 2005, veri dosyaları için varsayılan büyüme artışı, % 10 ' 1 MB olarak değiştirildi. Günlük dosyasının varsayılan % 10 değişmeden kalır.

  • ÇEVRİMDIŞI
    Dosyayı çevrimdışı olarak ayarlar ve dosya grubu tüm nesneleri erişilmez hale getirir.

    Uyarı

    Dosya bozuktur ve geri bu seçeneği kullanın.OFFLINE için küme olan BIR dosyayı yalnızca dosyadan geri yükleyerek çevrimiçi ayarlanabilir yedek.Tek bir dosya geri yükleme hakkında daha fazla bilgi için bkz: geri yükleme (Transact-SQL).

<add_or_modify_filegroups>::=

Ekleme, değiştirme veya veritabanından dosya grubu kaldırın.

  • filegroup_name ADD dosya grubu
    Bir dosya grubu veritabanına ekler.

  • filestream İÇERİR.
    Dosya sistemindeki dosya grubu FILESTREAM ikili büyük nesne (BLOB'lar) depolayan belirtir.

  • filegroup_name dosya grubu REMOVE
    Bir dosya grubu veritabanından kaldırır.Boş değilse, dosya grubu kaldırılamıyor.Tüm dosyalar dosya grubu kaldırın.Daha fazla bilgi için bkz: "FıLE REMOVE logical_file_name"Bu konunun önceki.

  • MODIFY FILEGROUP filegroup_name { <filegroup_updatability_option> | DEFAULT | NAME **=**new_filegroup_name }
    READ_ONLY veya READ_WRITE durumunu ayarlama, veritabanı için varsayılan dosya grubu dosya grubu yapma veya dosya grubunun adını değiştirme, dosya grubu değiştirir.

    • <filegroup_updatability_option>
      Salt okunur veya okuma/yazma özellik için dosya grubu belirler.

    • VARSAYILAN
      Varsayılan veritabanı dosya grubu için değiştirir. filegroup_name. Veritabanında tek bir dosya grubu, varsayılan dosya grubu olabilir.Daha fazla bilgi için bkz:Anlama dosyaları ve Filegroups.

    • NAME = new_filegroup_name
      Dosya grubu adı için değiştirir new_filegroup_name.

<filegroup_updatability_option>::=

Salt okunur veya okuma/yazma özellik için dosya grubu belirler.

  • read_only | readonly
    Salt okunur dosya grubu olduğunu belirtir.Içindeki nesneler için izin verilmez.Birincil dosya grubu salt okunur yapılamıyor.Bu durumu değiştirmek için , veritabanını özel kullanım erişiminiz olmalıdır.Daha fazla bilgi için bkz: SINGLE_USER yan tümce.

    Salt okunur bir veritabanında veri değişikliklerini izin vermediğinden:

    • Otomatik Kurtarma, sistem başlangıcında atlanır.

    • Veritabanı daraltma mümkün değildir.

    • Yok bir kilitleme, salt okunur veritabanlarından oluşur.Bu, daha hızlı sorgu performansı neden olabilir.

    Not

    The keyword READONLY will be removed in a future version of Microsoft SQL Server.Yeni iş geliştirme READONLY kullanmaktan kaçının ve READONLY kullanan uygulamalar değiştirmek planlama.Bunun yerine, READ_ONLY kullanın.

  • read_write | OKUNUR
    Grup READ_WRITE belirtir.Güncelleştirme, dosya grubu nesneleri için etkinleştirilir.Bu durumu değiştirmek için , veritabanını özel kullanım erişiminiz olmalıdır.Daha fazla bilgi için bkz: SINGLE_USER yan tümce.

    Not

    The keyword READWRITE will be removed in a future version of Microsoft SQL Server.Yeni iş geliştirme OKUMAYAZMA kullanmaktan kaçının ve OKUMAYAZMA kullanan uygulamalar değiştirmek planlama.Bunun yerine, READ_WRITE kullanın.

Bu seçenekler durumunu incelenerek belirlenebilir is_read_only sütunsys.Databases kataloğunu görüntüleme ya daUpdateability özellik DATABASEPROPERTYEX işlev.

Remarks

Bir veritabanının boyutunu azaltmak için kullanın. dbcc shrinkdatabase.

Bir YEDEKLE deyim çalışırken bir dosya ekleyip edemiyor.

En fazla 32.767 dosyaları 32.767 dosya gruplarını ve her veritabanı için belirtilebilir.

Içinde SQL Server 2005 veya daha sonra bir veritabanı durumunu (örneğin, çevrimiçi veya çevrimdışı) dosya veritabanının durumundan bağımsız olarak korunur. Daha fazla bilgi için bkz:Dosya durumlar.Bir dosya grubu içindeki dosyalar durumunu, tüm dosya grubu kullanılabilirliğini belirler.Kullanılabilir olması bir dosya grubu için tüm dosyaları içindeki dosya grubunu çevrimiçi olması gerekir.Bir dosya grubu çevrimdışıysa, bir SQL deyim tarafından dosya grubunu erişmek için herhangi bir deneme bir hata ile başarısız olur.Sorgu planları için SELECT deyimlerine oluşturduğunuzda, sorgu iyileştiricisi, kümelenmemiş dizin ve çevrimdışı dosya grupları bulunan dizin oluşturulmuş görünümler önler.Bu, başarılı olması için bu ifadeleri sağlar.Ancak, çevrimdışı dosya grubu öbek ya da hedefin kümelenmiş dizin varsa tablo, SELECT deyimlerinin başarısız.Ayrıca, çevrimdışı bir dosya grubu içindeki herhangi bir dizini olan bir tabloyu değiştirir INSERT, UPDATE veya DELETE deyim başarısız olur.

Dosyaları taşıma

Içinde SQL Server 2005 veya daha sonra sistem veya kullanıcı tanımlı veri taşıma ve DOSYAADı yeni bir konum belirterek, günlük dosyaları. Bu, aşağıdaki senaryolarda yararlı olabilir:

  • Hata kurtarma.Örneğin, veritabanı şüpheli modu tarafından bir donanım hatası nedeniyle başlamasının veya kapanmasının birimindedir.

  • Planlanan yerleştirme.

  • Zamanlanmış bir disk bakım yerleştirme.

Daha fazla bilgi için bkz:Veritabanı dosyalarını taşıma.

Dosyalar başlatılıyor

Varsayılan olarak, veri ve günlük dosyaları, aşağıdaki işlemlerden birini gerçekleştirdiğinizde dosyaları sıfır ile doldurarak başlatılır:

  • Bir veritabanı oluşturun.

  • Dosyaları, varolan bir veritabanına ekleyin.

  • Varolan bir dosyanın boyutunu artırın.

  • Bir veritabanı veya dosya grubu geri yükleme yükleyin.

Veri dosyalarını instantaneously başlatılabilir.Bu işlem için bu dosya işlemleri hızlı yürütülmesini sağlar.Daha fazla bilgi için bkz:Veritabanı dosyası başlatma.

Örnekler

C.Bir veritabanı için bir dosya ekleme

Aşağıdaki örnekte, 5 MB veri dosyaya ekler AdventureWorks Veritabanı.

b.Bir dosya grubu için bir veritabanı ile iki dosya ekleme

Aşağıdaki örnek, dosya grubu oluşturur. Test1FG1 içinde AdventureWorks Veritabanı ve dosya grubu için iki 5 MB dosya ekler.

c.Bir veritabanı için iki günlük dosyaları ekleme

Aşağıdaki örnek, iki 5 MB'LıK günlük dosyalarına ekler AdventureWorks Veritabanı.

d.Bir dosyayı bir veritabanından kaldırılıyor.

Aşağıdaki örnek, B örnekte eklenen dosyaların herhangi birini kaldırır

e.Bir dosyayı değiştirme

Aşağıdaki örnek b örnekte eklenen dosyaları birinin boyutunu artırır.

f.Bir dosyayı yeni bir konuma taşıma

Aşağıdaki örnek taşır Test1dat2 Yeni bir dizin için BIR örnekte, oluşturulan dosya.

Not

Bu örnek çalıştırmadan önce yeni bir dizin için fiziksel dosya taşımanız gerekir.Daha sonra durdurup örnek başlatın. SQL Server veya AdventureWorks Veritabanı değişiklikleri uygulamak için OFFLıNE'ı ve sonra ÇEVRIMIÇI.

USE master;
GO
ALTER DATABASE AdventureWorks
MODIFY FILE
(
    NAME = Test1dat2,
    FILENAME = N'c:\t1dat2.ndf'
);
GO

g.Tempdb yeni bir konuma taşıma

Aşağıdaki örnek taşır. tempdb geçerli konumundan başka bir disk konumuna disk üzerinde. Çünkü tempdb MSSQLSERVER hizmetini her başlatıldığında, fiziksel olarak veri ve günlük dosyalarını taşımak zorunda yeniden var. Dosyalar, adım 3'te hizmet yeniden başlatıldığında oluşturulur.Hizmet yeniden başlatılıncaya kadar tempdb devam işlev varolan konumunda.

  1. Mantıksal dosya adlarını belirlemek tempdb Veritabanı ve geçerli disk konumlarını.

    SELECT name, physical_name
    FROM sys.master_files
    WHERE database_id = DB_ID('tempdb');
    GO
    
  2. Her dosyanın konumunu kullanarak değiştirme ALTER DATABASE.

    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');
    GO
    
  3. Durdurun ve yeniden örnek, SQL Server.

  4. Dosya değişikliği doğrulayın.

    SELECT name, physical_name
    FROM sys.master_files
    WHERE database_id = DB_ID('tempdb');
    
  5. Tempdb.mdf ve templog.ldf dosyaları özgün konumlarına silin.

h.dosya grubu varsayılan yapma

Aşağıdaki örnek yapar Test1FG1 B varsayılan dosya grubu örnekte oluşturulmuş bir dosya grubu. Sonra varsayılan dosya grubu olarak sıfırlanıyor PRIMARY dosya grubu. Dikkat PRIMARY köşeli ayraç veya tırnak işaretleri ile sınırlandırılmış gerekir.

İ.ALTER DATABASE'nı kullanarak bir dosya grubu ekleme

Aşağıdaki örnek ekler bir FILEGROUP içeren FILESTREAM yan tümcesinin FileStreamPhotoDB Veritabanı.

--Create and add a FILEGROUP that CONTAINS the FILESTREAM clause to
--the FileStreamPhotoDB database.
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