Aracılığıyla paylaş


alter database dosya ve dosya grubu seçenekleri (Transact-SQL)

Veritabanı ile ilişkili filegroups ve dosya değiştirir.Ekler veya dosyaları ve dosya gruplarını değişiklikleri bir veritabanı veya dosya ve dosya gruplarını özniteliklerinin bir veritabanından kaldırır.alter database diğer seçenekler için bkz: ALTER DATABASE (Transact-SQL).

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

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' } ] 
    [ , 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>:: =

Eklenen, kaldırılan veya değiştirilen dosyayı belirtir.

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

  • DOSYA EKLE
    Bir dosyayı veritabanına ekler.

    • FILEGROUP için { filegroup_name }
      Belirtilen dosya eklenecek dosya grubu belirtir.Geçerli dosya gruplarını ve dosya grubu hangi geçerli varsayılan değeri görüntülemek için sys.filegroups Katalog görünümü.
  • GÜNLÜK DOSYASI EKLE
    Günlük dosyası belirtilen veritabanına eklenmesi ekler.

  • DOSYA KALDIRlogical_file_name
    Mantıksal dosya açıklama örnek kaldırır SQL Server ve siler fiziksel bir dosya.Boş olmadığı sürece dosya kaldırılamıyor.

    • logical_file_name
      Kullanılan mantıksal ad SQL Server , başvuran dosya.
  • DOSYA DEĞİŞTİRME
    Değiştirilmesi gereken bir dosya belirtir.Tek bir <dosyabelirtimi> özellik her saatdeğiştirilebilir.ADI her zaman belirtilmelidir <dosyabelirtimi> değiştirilecek dosyayı tanımlamak için.BOYUT belirtilmezse, yeni boyutu geçerli dosya boyutundan daha büyük olmalıdır.

    Bir veri dosyası veya günlük dosyası mantıksal ad değiştirmek için yeniden adlandırılması mantıksal dosya adını belirtin NAME yan tümceve dosyayı yeni mantıksal ad NEWNAME yan tümce.Örneğin:

    MODIFY FILE ( NAME = logical_file_name, NEWNAME = new_logical_name ) 
    

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

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

    tam metin kataloğutaşıdığınızda, yalnızca yeni yol dosya adı yan tümcetümcesinde belirtin.İşletim sistemi dosya adını belirtmeyin.

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

    FILESTREAM dosya grubuiçin çevrimiçi adı değiştirilebilir.Dosya adı çevrimiçi değiştirilebilir; Ancak, değişiklik kadar kapsayıcı fiziksel yeri ve sunucu kapatma ve yeniden başlatılır sonra etkili olmaz.

    Çevrimdışı FILESTREAM dosyaya küme yapabilirsiniz.FILESTREAM dosya çevrimdışı olduğunda, kendi üst dosya grubu dahili olarak çevrimdışı olarak işaretlenir; Bu nedenle, tüm bu dosya grubu içinde FILESTREAM verilere erişim başarısız olur.

<dosyabelirtimi>:: =

Dosya özelliklerini denetler.

  • ADIlogical_file_name
    Dosya mantıksal ad belirtir.

    • logical_file_name
      örnek kullanılan mantıksal ad SQL Server , başvuran dosya.
  • YENİ ADnew_logical_file_name
    Dosya için yeni bir mantıksal ad belirtir.

    • new_logical_file_name
      Varolan mantıksal dosya adını değiştirmek için adıdır.Adı veritabanı içinde benzersiz olması ve kurallarına uymanız tanımlayıcıları.Ad, bir karakter veya Unicode sabit, normal bir tanımlayıcı veya sınırlandırılmış tanımlayıcıolabilir.Daha fazla bilgi için, bkz. Nesne adları olarak tanımlayıcıları kullanarak.
  • Dosya adı { 'os_file_name' | 'filestream_path' }
    İşletim sistemi (fiziksel) dosyasının adını belirtir.

    • ' os_file_name '
      Bir standart (satırlar) dosya grubuiçin bu dosyayı oluştururken, işletim sistemi tarafından kullanılan yol ve dosya adıdır.Dosya, bir sunucuda bulunması gerekir SQL Server yüklenir.Belirtilen yol alter database deyimyürütmeden önce varolmalıdır.

      Dosya için bir unc yol belirtilmediğinde BOYUTU, MAXSIZE ve FILEGROWTH parametrelerini küme olamaz.

      Not

      Sistem veritabanları unc paylaşımına dizinlerin alamıyor.

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

      Dosya ham bir bölüme ise os_file_name belirtmeniz gerekir yalnızca sürücü harfi bir varolan ham bölüm.Tek bir dosya ham her bölüme koyabilirsiniz.

    • 'filestream_path'
      FILESTREAM dosya grubuiçin dosya adı FILESTREAM verilerinin depolandığı yol belirtir.Son klasör kadar yol var olmalıdır ve son var olmalıdır.Örneğin, yol C:\MyFiles\MyFilestreamData belirtirseniz, C:\MyFiles, alter database çalıştırılmadan önce mevcut olmalıdır, ancak MyFilestreamData var olmalıdır.

      dosya grubu ve dosya (<filespec>) aynı deyimoluşturulmalıdır.Tek bir dosya olabilir <filespec>, FILESTREAM dosya grubuiçin.

      BOYUT MAXSIZE ve FILEGROWTH özelliklerini FILESTREAM dosya grubugeçerli değildir.

  • BOYUTUsize
    Dosya boyutunu belirtir.BOYUTU FILESTREAM filegroups için geçerli değildir.

    • size
      Dosya boyutudur.

      Dosya Ekle belirtildiğinde size olan başlangıç boyutu dosya.DEĞİŞTİRMEK dosya ile belirtilen size ise dosya için yeni boyutu ve'den büyük olmalıdırgeçerli dosya boyutu.

      Zaman size birincil dosya için sağlanan SQL Server birincil dosya boyutunu kullanır modeli veritabanı.Ne zaman bir ikincil veri dosyası veya günlük dosyası belirtilen ancak size dosyasında belirtilmemiş Veritabanı Altyapısı Dosya yapar 1 mb.

      kb, mb, gb ve tb sonekleri kilobayt, megabayt, gigabayt veya terabayt belirtmek için kullanılır.Varsayılan değer MB'dir.Bir tamsayı belirtirseniz ve ondalık eklemeyin.Bir megabayt bir bölümünü belirtmek için değer 1024 tarafından sayısını çarparak kilobayta.Örneğin, 1.5 mb (1.5 x 1024 = 1536) yerine 1536 kb belirtin.

  • MAXSIZE { max_size| SINIRSIZ}
    Dosyasının büyüyebileceği maksimum dosya boyutunu belirtir.MAXSIZE FILESTREAM filegroups için geçerli değildir.

    • max_size
      En büyük dosya boyutu büyük.kb, mb, gb ve tb sonekleri kilobayt, megabayt, gigabayt veya terabayt belirtmek için kullanılır.Varsayılan değer MB'dir.Bir tamsayı belirtirseniz ve ondalık eklemeyin.max_size Belirtilmezse, dosya boyutunu artırır kadar disktir dolu.

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

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

    • growth_increment
      Her saat yeni bir alan gerekli boşluk miktarını dosyaya eklenen olur.

      Değer, mb, kb, gb, tb veya yüzde (%) olarak belirtilebilir.mb, kb veya % sonek bir numarası belirtilmezse, varsayılan değer MB'dir.% Belirtildiğinde, büyüme artışı saat artışı dosyasının boyutunu belirtilen yüzdesi oluşur boyutudur.Belirtilen boyutta yakın 64 kb olarak yuvarlanır.

      0 Değeri, kapalı olarak küme otomatik büyüme olduğunu ve ek boşluk izin gösterir.

      FILEGROWTH belirtilmezse, varsayılan değer 1 veri dosyalarının ve günlük dosyalarının % 10 MB'dir ve minimum değeri 64 KB'tır.

      Not

      Başlangıç SQL Server 2005, veri dosyaları için varsayılan büyüme artışı %10 değişti1 mb. için% 10 Günlük dosyası varsayılan değişmeden kalır.

  • ÇEVRİMDIŞI
    Dosyayı çevrimdışı ayarlar ve dosya grubu tüm nesneleri erişilemez yapar.

    Dikkat notuDikkat

    Dosya bozuktur ve geri yüklenebilir olduğunda bu seçeneği kullanın.Bir dosya küme çevrimdışı yalnızca küme çevrimiçi dosya yedekgeri yükleyerek yapılabilir.Tek bir dosya geri yükleme hakkında daha fazla bilgi için bkz: RESTORE (Transact-SQL).

<add_or_modify_filegroups>:: =

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

  • DOSYA GRUBU EKLEfilegroup_name
    Bir dosya grubu veritabanına ekler.

  • FILESTREAM İÇERİR
    dosya grubu FILESTREAM ikili büyük nesneleri (BLOB) dosya sisteminde depolar belirtir.

  • FILEGROUP KALDIRMAfilegroup_name
    Bir dosya grubu veritabanından kaldırır.Boş olmadığı sürece dosya grubu kaldırılamaz.Tüm dosyaları dosya grubu ' önce kaldırın.Daha fazla bilgi için bkz: "remove dosya logical_file_name," Bu konunun önceki kısımlarında.

  • Değiştir FILEGROUP filegroup_name { <filegroup_updatability_option> | VARSAYILAN | NAME =new_filegroup_name }
    dosya grubu read_only veya READ_WRITE durumu ayarlamak, veritabanı için varsayılan dosya grubu dosya grubu yapma veya dosya grubu adını değiştirerek değiştirir.

    • <filegroup_updatability_option>
      Salt okunur veya okuma/yazma özellik ' % s'filegroup dosya grubuiçin ayarlar.

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

    • ADI =new_filegroup_name
      dosya grubu adı değiştirir new_filegroup_name.

<filegroup_updatability_option>:: =

Salt okunur veya okuma/yazma özellik ' % s'filegroup dosya grubuiçin ayarlar.

  • READ_ONLY | SALT OKUNUR
    dosya grubu salt okunur olduğunu belirtir.İçindeki nesneler için izin verilmez.Birincil dosya grubu salt okunur yapılamaz.Bu durumu değiştirmek için veritabanına özel kullanım erişiminiz olmalıdır.Daha fazla bilgi için bkz: SINGLE_USER yan tümce.

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

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

    • Veritabanı daraltılması mümkün değildir.

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

    Not

    Salt okunur, gelecekteki bir sürüm kaldırılır anahtar sözcük Microsoft SQL Server.Yeni geliştirme çalışması readonly kullanmaktan kaçının ve şu anda salt okunur kullanan uygulamaları değiştirmek plan.read_only yerine kullanın.

  • READ_WRITE | READWRITE
    Grup READ_WRITE belirtir.Güncelleştirmeleri dosya grubunesneleri için etkinleştirilir.Bu durumu değiştirmek için veritabanına özel kullanım erişiminiz olmalıdır.Daha fazla bilgi için bkz: SINGLE_USER yan tümce.

    Not

    READWRITE, gelecekteki bir sürüm kaldırılır anahtar sözcük Microsoft SQL Server.Yeni geliştirme çalışması OKUMAYAZMA kullanmaktan kaçının ve şu anda OKUMAYAZMA kullanan uygulamaları değiştirmek plan.Bunun yerine READ_WRITE kullanın.

Bu seçenek durumunu incelenerek belirlenebilir is_read_onlysütun sys.databases Katalog görünümü veya Updateability işlevdatabasepropertyexözellik .

Açıklamalar

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

Ekleyemez veya backup deyim çalışırken dosyayı kaldırın.

En fazla 32.767 dosyaları ve 32.767 filegroups her veritabanı için belirtilebilir.

De SQL Server 2005 veya daha sonra veritabanı dosyası (örneğin, çevrimiçi veya çevrimdışı), durumu saklanır veritabanı durumundan bağımsız olarakDaha fazla bilgi için, bkz. Dosya Devletleri.dosya grubu içindeki dosyalar durumunu tüm dosya grubukullanılabilirliğini belirler.Kullanılabilmesi bir dosya grubu için dosya grubu içindeki tüm dosyaları çevrimiçi olması gerekir.dosya grubu çevrimdışıysa, dosya grubu bir SQLdeyim erişim çalışırsanız bir hata ile başarısız olur. select deyimlerinin sorgu planları oluştururken, sorgu iyileştiricisi kümelenmemiş dizinleri ve çevrimdışı dosya bulunan dizin oluşturulmuş görünümler önler.Bu başarılı olması bu ifadeler sağlar.Ancak, çevrimdışı dosya grubu öbek veya kümelenmiş dizin hedef tabloiçeriyorsa, select deyimleri başarısız.Ayrıca, herhangi bir çevrimdışı dosya grubu dizinde bir tablo değiştiren herhangi bir INSERT, update veya delete deyim başarısız olur.

Dosyaları taşıma

De SQL Server 2005 ya da daha sonra gidebilirsiniz sistem veya kullanıcı tanımlı veri ve günlük dosyalarını belirterek yeni konumda dosya adı.Bu, aşağıdaki senaryolarda yararlı olabilir:

  • Hata kurtarma.Örneğin, şüpheli modunda veya donanım hatası nedeniyle kapatma veritabanıdır.

  • Planlı yerleştirme.

  • Zamanlanmış disk bakım için 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ırlarla doldurarak başlatılır:

  • Bir veritabanı oluşturun.

  • Dosyaları varolan bir veritabanına ekleyin.

  • Varolan bir dosyanın boyutunu büyütür.

  • Veritabanı veya dosya grubugeri yükleyin.

Veri dosyaları eşzamanlı olarak başlatılabilir.Bu dosya işlemlerini hızlı yürütülmesini sağlar.Daha fazla bilgi için, bkz. Veritabanı dosyasını başlatma.

Örnekler

A.Bir veritabanı için bir dosya ekleme

Aşağıdaki örnek, bir 5 MB'lık veri dosyasına ekler AdventureWorks2008R2 veritabanı.

USE master;
GO
ALTER DATABASE AdventureWorks2008R2 
ADD FILE 
(
    NAME = Test1dat2,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\t1dat2.ndf',
    SIZE = 5MB,
    MAXSIZE = 100MB,
    FILEGROWTH = 5MB
);
GO

B.dosya grubu bir veritabanına sahip iki dosyayı ekleme

Aşağıdaki örnek, dosya grubuoluştururTest1FG1 , AdventureWorks2008R2 veritabanı ve dosya grubuiçin iki 5 mb dosya ekler.

USE master
GO
ALTER DATABASE AdventureWorks2008R2
ADD FILEGROUP Test1FG1;
GO
ALTER DATABASE AdventureWorks2008R2 
ADD FILE 
(
    NAME = test1dat3,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\t1dat3.ndf',
    SIZE = 5MB,
    MAXSIZE = 100MB,
    FILEGROWTH = 5MB
),
(
    NAME = test1dat4,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\t1dat4.ndf',
    SIZE = 5MB,
    MAXSIZE = 100MB,
    FILEGROWTH = 5MB
)
TO FILEGROUP Test1FG1;
GO

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

Aşağıdaki örnek, iki 5 mb günlük dosyalarına ekler AdventureWorks2008R2 veritabanı.

USE master;
GO
ALTER DATABASE AdventureWorks2008R2 
ADD LOG FILE 
(
    NAME = test1log2,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.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.Bir veritabanından bir dosya kaldırma

Aşağıdaki örnek, örnek b. eklenen dosyaların birini kaldırır

USE master;
GO
ALTER DATABASE AdventureWorks2008R2
REMOVE FILE test1dat4;
GO

E.Bir dosyayı değiştirme

Aşağıdaki örnek, örnek b. eklenen dosyaların boyutunu artırır

USE master;
GO
ALTER DATABASE AdventureWorks2008R2 
MODIFY FILE
    (NAME = test1dat3,
    SIZE = 20MB);
GO

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

Aşağıdaki örnek taşır Test1dat2 Dosya oluşturulan örnekte a yeni bir dizin.

Not

Bu örneği çalıştırmadan önce yeni bir dizine fiziksel dosya taşımanız gerekir.Sonra durdurmak ve örnek başlatmak SQL Server veya AdventureWorks2008R2 veritabanı çevrimdışı ve sonra çevrimiçi uygulamak Değiştir.

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

G.Tempdb veritabanını yeni bir konuma taşıma

Aşağıdaki örnek taşır tempdb geçerli konumundan diskteki başka bir disk konumu.Çünkü tempdb oluşturulur her saat mssqlserver hizmet başlatıldığında, fiziksel olarak, verileri taşımak ve günlük dosyaları. gerekmez3. Adımda hizmet yeniden başlatıldığında dosyalar oluşturulur.' % S'hizmeti hizmet yeniden başlatılıncaya kadar tempdb devam eder işlev varolan kendi konum.

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

    SELECT name, physical_name
    FROM sys.master_files
    WHERE database_id = DB_ID('tempdb');
    GO
    
  2. Her dosyanın konumunu kullanarak değiştirmek 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. Durdurma ve yeniden başlatma ö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. Özgün konumlarından tempdb.mdf ve templog.ldf dosyalarını silin.

H.Varsayılan dosya grubu yapma

Aşağıdaki örnek oluşturur Test1FG1 dosya grubu dosya grubuvarsayılan b örnekte oluşturulmuş.Ardından, varsayılan dosya grubu için Sıfırla PRIMARY dosya grubu.Unutmayın PRIMARY gerekir sınırlı köşeli ayraç veya tırnak işaretleri.

USE master;
GO
ALTER DATABASE AdventureWorks2008R2 
MODIFY FILEGROUP Test1FG1 DEFAULT;
GO
ALTER DATABASE AdventureWorks2008R2 
MODIFY FILEGROUP [PRIMARY] DEFAULT;
GO

Ö.alter database kullanarak bir dosya grubu ekleme

Aşağıdaki örnek ekler bir FILEGROUP içeren FILESTREAM yan tümce 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