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.
SQL Server'da, FILENAME deyiminin yan tümcesinde yeni dosya konumunu belirterek kullanıcı veritabanının veri, günlük ve tam metin katalog dosyalarını yeni bir konuma taşıyabilirsiniz. Bu yöntem, veritabanı dosyalarını aynı örnek SQL Server içinde taşımak için geçerlidir. Veritabanını başka bir SQL Server örneğine veya başka bir sunucuya taşımak için yedekleme ve geri yükleme ya da ayırma ve ekleme işlemlerini kullanın.
Uyarı
Bu makale, kullanıcı veritabanı dosyalarını taşımayı kapsar. Sistem veritabanı dosyalarını taşımak için bkz. Sistem veritabanlarını taşıma.
Değerlendirmeler
Bir veritabanını başka bir sunucu örneğine taşıdığınızda, kullanıcılara ve uygulamalara tutarlı bir deneyim sağlamak için veritabanının meta verilerinin bir kısmını veya tümünü yeniden oluşturmanız gerekebilir. Daha fazla bilgi için bkz. Veritabanını Başka Bir Sunucuda Kullanılabilir Hale Getirirken Meta Verileri Yönetme.
SQL Server Veritabanı Altyapısı'nın bazı özellikleri, Veritabanı Altyapısı'nın bilgileri veritabanı dosyalarında depolama biçimini değiştirir. Bu özellikler SQL Server'ın belirli sürümleriyle sınırlıdır. Bu özellikleri içeren bir veritabanı, bunları desteklemeyen bir SQL Server sürümüne taşınamaz.
sys.dm_db_persisted_sku_features Geçerli veritabanında etkinleştirilen sürüme özgü tüm özellikleri listelemek için dinamik yönetim görünümünü kullanın.
Bu makaledeki yordamlar, veritabanı dosyalarının mantıksal adını gerektirir. Adı almak için , sys.master_files katalog görünümünde ad sütununu sorgular.
Tam metin katalogları, dosya sisteminde depolanmak yerine veritabanıyla tümleştirilir. Veritabanını taşıdığınızda tam metin katalogları otomatik olarak taşınır.
Uyarı
Windows hizmet hesaplarını ve izinlerini yapılandırma için hizmet hesabının dosya sistemindeki yeni dosya konumuna yönelik izinlere sahip olduğundan emin olun. Daha fazla bilgi için bkz. Veritabanı Altyapısı erişimi için dosya sistemi izinlerini yapılandırma.
Planlı yeniden konumlandırma prosedürü
Bir verileri veya günlük dosyasını planlı bir yeniden konumlandırmanın parçası olarak taşımak için şu adımları izleyin:
Taşınacak her dosya için aşağıdaki deyimi çalıştırın.
ALTER DATABASE database_name MODIFY FILE (NAME = logical_name, FILENAME = 'new_path\os_file_name');Veritabanını çevrimdışına almak için aşağıdaki deyimi çalıştırın.
ALTER DATABASE database_name SET OFFLINE;Bu eylem veritabanına özel erişim gerektirir. Veritabanına başka bir bağlantı açıksa, tüm bağlantılar kapatılana kadar
ALTER DATABASEifadesi engellenir. Bu davranışı geçersiz kılmak için yan tümcesiniWITH <termination>kullanın. Örneğin, otomatik olarak geri almak ve veritabanına diğer tüm bağlantıları kesmek için şunu kullanın:ALTER DATABASE database_name SET OFFLINE WITH ROLLBACK IMMEDIATE;Dosyayı veya dosyaları yeni konuma taşıyın.
Aşağıdaki deyimi çalıştırın.
ALTER DATABASE database_name SET ONLINE;Aşağıdaki sorguyu çalıştırarak dosya değişikliğini doğrulayın.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');
Zamanlanmış disk bakımı için yeniden konumlandırma
Zamanlanmış disk bakım işleminin bir parçası olarak dosyayı yeniden dağıtmak için şu adımları izleyin:
Taşınacak her dosya için aşağıdaki deyimi çalıştırın.
ALTER DATABASE database_name MODIFY FILE (NAME = logical_name, FILENAME = 'new_path\os_file_name');Bakım yapmak için SQL Server örneğini durdurun veya sistemi kapatın. Daha fazla bilgi için bkz. SQL Server hizmetlerini başlatma, durdurma, duraklatma, sürdürme ve yeniden başlatma.
Dosyayı veya dosyaları yeni konuma taşıyın.
SQL Server örneğini veya sunucuyu yeniden başlatın. Daha fazla bilgi için bkz. SQL Server hizmetlerini başlatma, durdurma, duraklatma, sürdürme ve yeniden başlatma
Aşağıdaki sorguyu çalıştırarak dosya değişikliğini doğrulayın.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');
Hata kurtarma prosedürü
Donanım hatası nedeniyle bir dosyanın taşınması gerekiyorsa, dosyayı yeni bir konuma değiştirmek için aşağıdaki adımları kullanın.
Önemli
Veritabanı başlatılamıyorsa, yani şüpheli modda veya kurtarılmamış bir durumdaysa, dosyayı yalnızca sysadmin sabit rol tanımı üyeleri taşıyabilir.
Zaten başlatıldıysa SQL Server örneğini durdurun.
Komut istemine
masteraşağıdaki komutlardan birini girerek SQL Server örneğini yalnızca kurtarma modunda başlatın.Varsayılan (MSSQLSERVER) örneği için aşağıdaki komutu çalıştırın.
NET START MSSQLSERVER /f /T3608Adlandırılmış örnek için aşağıdaki komutu çalıştırın.
NET START MSSQL$instancename /f /T3608Daha fazla bilgi için bkz. SQL Server hizmetlerini başlatma, durdurma, duraklatma, sürdürme ve yeniden başlatma. Linux hakkında bilgi için bkz. Linux üzerinde SQL Server hizmetlerini başlatma, durdurma ve yeniden başlatma.
Taşınacak her dosya için sqlcmd komutlarını veya SQL Server Management Studio'yu kullanarak aşağıdaki deyimi çalıştırın.
ALTER DATABASE database_name MODIFY FILE (NAME = logical_name, FILENAME = 'new_path\os_file_name');sqlcmd yardımcı programını kullanma hakkında daha fazla bilgi için bkz. sqlcmd - yardımcı programını kullanma.
sqlcmd yardımcı programı veya SQL Server Management Studio'dan çıkın.
SQL Server örneğini durdurun.
Dosyayı veya dosyaları yeni konuma taşıyın.
SQL Server örneğini başlatın. Örneğin şunu çalıştırın:
NET START MSSQLSERVER.Aşağıdaki sorguyu çalıştırarak dosya değişikliğini doğrulayın.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');
Örnekler
Aşağıdaki örnek, AdventureWorks2025 günlük dosyasını planlanan yeniden konumlandırmanın bir parçası olarak yeni bir konuma taşır.
masterVeritabanı bağlamında olduğunuzdan emin olun.USE master; GOMantıksal dosya adını döndürür.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'AdventureWorks2022') AND type_desc = N'LOG'; GOVeritabanını çevrimdışı olarak ayarlayın.
ALTER DATABASE AdventureWorks2022 SET OFFLINE; GODosyayı fiziksel olarak yeni bir konuma taşıyın. Aşağıdaki deyimde, içinde
FILENAMEbelirtilen yolu sunucunuzdaki dosyanın yeni konumuna değiştirin.ALTER DATABASE AdventureWorks2022 MODIFY FILE (NAME = AdventureWorks2022_Log, FILENAME = 'C:\NewLoc\AdventureWorks2022_Log.ldf'); GO ALTER DATABASE AdventureWorks2022 SET ONLINE; GOYeni konumu doğrulayın.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'AdventureWorks2022') AND type_desc = N'LOG';
İlgili içerik
- VERİ TABANINI DEĞİŞTİR (Transact-SQL)
- VERİTABANI OLUŞTUR
- Veritabanı ayırma ve ekleme (SQL Server)
- Sistem veritabanlarını taşıma
- Veritabanı dosyalarını taşıma
- BACKUP (Transact-SQL)
- RESTORE Deyimleri (Transact-SQL)
- SQL Server hizmetlerini başlatma, durdurma, duraklatma, sürdürme ve yeniden başlatma