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.
Bu makalede, SQL Server sistem veritabanlarının nasıl taşındığı açıklanır. Sistem veritabanlarını taşımak aşağıdaki durumlarda yararlı olabilir:
Arıza kurtarma. Örneğin, veritabanı şüpheli modunda veya donanım hatası nedeniyle kapatıldı.
Planlanan taşınma.
Planlı disk bakımı için taşınma.
Aşağıdaki yordamlar, veritabanı dosyalarını aynı SQL Server örneği 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 işlemini 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.
Important
Bir sistem veritabanını taşır ve daha sonra veritabanını yeniden oluşturursanız master , yeniden oluşturma işlemi tüm sistem veritabanlarını varsayılan konumlarına yüklediğinden sistem veritabanını yeniden taşımanız gerekir.
Sistem veritabanlarını taşıma
Sistem veritabanı verilerini veya günlük dosyasını planlı bir yeniden konumlandırma veya zamanlanmış bakım işleminin parçası olarak taşımak için aşağıdaki adımları izleyin. Bu, , modelve msdb sistem veritabanlarını içerirtempdb.
Important
Bu işlem, master ve Resource veritabanları hariç tüm sistem veritabanları için geçerlidir.
master veritabanını taşıma adımları için bu makalenin ilerleyen bölümlerine bakın. Veritabanı Resource taşınamaz.
sys.master_files katalog görünümünü gözden geçirerek, taşımak istediğiniz veritabanı dosyalarının mevcut konumunu kaydedin.
SQL Server Database Engine hizmet hesabının dosyaların yeni konumu için tam izinlere sahip olduğunu doğrulayın. Daha fazla bilgi için bkz. Windows hizmet hesaplarını ve izinlerini yapılandırma. Database Engine hizmet hesabı yeni konumundaki dosyaları denetleyemiyorsa, SQL Server örneği başlatılmaz.
Taşınacak her veritabanı dosyası 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');Hizmet yeniden başlatılana kadar veritabanı mevcut konumdaki verileri ve günlük dosyalarını kullanmaya devam eder.
Bakım gerçekleştirmek için SQL Server örneğini durdurun. Daha fazla bilgi için bkz. SQL Server hizmetlerini başlatma, durdurma, duraklatma, sürdürme ve yeniden başlatma.
Veritabanı dosyasını veya dosyalarını yeni konuma kopyalayın. Bu adım sistem veritabanı için
tempdbgerekli değildir; bu dosyalar yeni konumda otomatik olarak oluşturulur.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. Sistem veritabanları yeni fiziksel dosya konumlarını raporlamalıdır.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');5. Adımda veritabanı dosyalarını taşımak yerine kopyaladığınızdan, artık kullanılmayan veritabanı dosyalarını önceki konumlarından güvenle silebilirsiniz.
İzleme: Sistem veritabanını taşıdıktan msdb sonra
msdb Veritabanı taşınır ve Veritabanı Postası yapılandırılırsa aşağıdaki ek adımları tamamlayın.
Aşağıdaki sorguyu çalıştırarak,
msdbveritabanı için Service Broker'ın etkin olup olmadığını doğrulayın.SELECT is_broker_enabled FROM sys.databases WHERE name = N'msdb';Service Broker,
msdbiçin etkin değilse, Veritabanı Postası'in çalışabilmesi için yeniden etkinleştirilmelidir. Daha fazla bilgi için bkz ALTER DATABASE . ... SET ENABLE_BROKER.ALTER DATABASE msdb SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;değerinin
is_broker_enabledşimdi 1 olduğunu onaylayın.Bir test postası göndererek Veritabanı Postası çalıştığını doğrulayın.
Hata kurtarma prosedürü
Donanım hatası nedeniyle bir dosyanın taşınması gerekiyorsa, dosyayı yeni bir konuma yeniden dağıtmak için bu adımları izleyin. Bu prosedür, master ve Resource veritabanları dışındaki tüm sistem veritabanları için geçerlidir. Aşağıdaki örneklerde Windows komut satırı istemi ve sqlcmd Yardımcı Programı kullanılır.
Important
Veritabanı başlatılamıyorsa, şüpheli modundaysa veya kurtarılmamış durumdaysa, dosyayı yalnızca sysadmin sabit rolünün üyeleri taşıyabilir.
SQL Server Database Engine hizmet hesabının dosyaların yeni konumu için tam izinlere sahip olduğunu doğrulayın. Daha fazla bilgi için bkz. Windows hizmet hesaplarını ve izinlerini yapılandırma. Database Engine hizmet hesabı yeni konumundaki dosyaları denetleyemiyorsa, SQL Server örneği başlatılmaz.
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. 3608 başlangıç parametresinin kullanılması, SQL Server'ın otomatik olarak başlamasını vemasterveritabanı dışında herhangi bir veritabanını kurtarmasını engeller. Daha fazla bilgi için bkz . Başlangıç Parametreleri ve TF3608.Bu komutlarda belirtilen parametreler büyük/küçük harfe duyarlıdır. Parametreler gösterildiği gibi belirtilmediğinde komutlar başarısız olur.
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.
İzleme bayrağı 3608 ve
/folan hizmet başlatma işleminden hemen sonra, kullanılabilen tek bağlantıyı talep etmek için sunucuya bir sqlcmd bağlantısı başlatın. Örneğin, sqlcmd'yi varsayılan (MSSQLSERVER) örneğiyle aynı sunucuda yerel olarak yürütürken ve Active Directory tümleştirme kimlik doğrulamasıyla bağlanmak için aşağıdaki komutu çalıştırın:sqlcmdActive Directory tümleştirme kimlik doğrulamasıyla yerel sunucuda adlandırılmış bir örneğe bağlanmak için:
sqlcmd -S localhost\instancenamesqlcmd söz dizimi hakkında daha fazla bilgi için bkz. sqlcmd yardımcı programı.
Taşınacak her dosya için sqlcmd komutlarını veya SQL Server Management Studio'yu kullanarak aşağıdaki deyimi çalıştırın. sqlcmd yardımcı programını kullanma hakkında daha fazla bilgi için bkz. sqlcmd - yardımcı programını kullanma. sqlcmd oturumu açıldıktan sonra, her dosyanın taşınması için aşağıdaki deyimi bir kez çalıştırın:
ALTER DATABASE database_name MODIFY FILE (NAME = logical_name, FILENAME = 'new_path\os_file_name'); GOsqlcmd yardımcı programı veya SQL Server Management Studio'dan çıkın.
SQL Server örneğini durdurun. Örneğin, komut satırı isteminde
NET STOP MSSQLSERVERçalıştırın.Dosyayı veya dosyaları yeni konuma kopyalayın.
SQL Server örneğini yeniden başlatın. Örneğin, komut satırı isteminde
NET START MSSQLSERVERçalıştırın.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>');7. Adımda veritabanı dosyalarını taşımak yerine kopyaladığınızdan, artık kullanılmayan veritabanı dosyalarını önceki konumlarından güvenle silebilirsiniz.
master Veritabanını taşıma
Veritabanını taşımak master için şu adımları izleyin.
SQL Server Database Engine hizmet hesabının dosyaların yeni konumu için tam izinlere sahip olduğunu doğrulayın. Daha fazla bilgi için bkz. Windows hizmet hesaplarını ve izinlerini yapılandırma. Database Engine hizmet hesabı yeni konumundaki dosyaları denetleyemiyorsa, SQL Server örneği başlatılmaz.
Başlatmenüsünden SQL Server Yapılandırma Yöneticisi bulun ve başlatın. Beklenen konum hakkında daha fazla bilgi için bkz. SQL Server Yapılandırma Yöneticisi.
SQL Server Hizmetleri düğümünde, SQL Server örneğine sağ tıklayın (örneğin, SQL Server (MSSQLSERVER)) ve Özellikler'i seçin.
SQL Server (instance_name) Özellikler iletişim kutusunda Başlangıç Parametreleri sekmesini seçin.
Var olan parametreler kutusunda parametresini
-dseçin. Başlangıç parametresi belirtin kutusunda, parametresinimasterdosyasının yeni yoluna değiştirin. Değişikliği kaydetmek için Güncelleştir'i seçin.Var olan parametreler kutusunda parametresini
-lseçin. Başlangıç parametresi belirtin kutusunda, parametresinimasterdosyasının yeni yolu olarak değiştirin. Değişikliği kaydetmek için Güncelleştir'i seçin.Veri dosyasının parametre değeri,
-dparametresinden sonra gelmeli ve günlük dosyasının değeri de-lparametresinden sonra gelmelidir. Aşağıdaki örnekte, veri dosyasının varsayılan konumu için parametre değerleri gösterilmektedirmaster.-dC:\Program Files\Microsoft SQL Server\MSSQL<version>.MSSQLSERVER\MSSQL\DATA\master.mdf -lC:\Program Files\Microsoft SQL Server\MSSQL<version>.MSSQLSERVER\MSSQL\DATA\mastlog.ldfmasterveri dosyası için planlanan yeniden konumlandırmaE:\SQLDataise, parametre değerleri aşağıdaki gibi değiştirilir:-dE:\SQLData\master.mdf -lE:\SQLData\mastlog.ldfDeğişiklikleri kalıcı olarak kaydetmek ve SQL Server (instance_name) Özellikler iletişim kutusunu kapatmak için Tamam'ı seçin.
Örnek adına sağ tıklayıp Durdur'u seçerek SQL Server örneğini durdurun.
master.mdfvemastlog.ldfdosyalarını yeni konuma kopyalayın.SQL Server örneğini yeniden başlatın.
Aşağıdaki sorguyu
masterçalıştırarak veritabanı için 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('master');Bu noktada SQL Server normal şekilde çalıştırılmalıdır. Ancak Microsoft, instance_ID değerinin
MSSQL13.MSSQLSERVERgibi olduğuHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\instance_ID\Setupkonumundaki kayıt defteri girdisinin de ayarlanmasını önerir. Bu kovandaSQLDataRootdeğerini veritabanı dosyalarının yeni konumunun yeni yolu olarakmasterdeğiştirin. Kayıt defterinin güncelleştirilememesi, düzeltme eki uygulama ve yükseltmenin başarısız olmasına neden olabilir.9. Adımda veritabanı dosyalarını taşımak yerine kopyaladığınızdan, artık kullanılmayan veritabanı dosyalarını önceki konumlarından güvenle silebilirsiniz.
Kaynak veritabanını taşıma
Veritabanının Resource konumu şeklindedir \<drive>:\Program Files\Microsoft SQL Server\MSSQL\<version>.<instance_name>\MSSQL\Binn\. Veritabanı taşınamaz.
İzleme: Tüm sistem veritabanlarını taşıdıktan sonra
Tüm sistem veritabanlarını yeni bir sürücüye veya birime ya da farklı bir sürücü harfine sahip başka bir sunucuya taşıdıysanız aşağıdaki güncelleştirmeleri yapın.
SQL Server Agent günlük dosyası yolunu değiştirin. Bu yolu güncelleştirmezseniz SQL Server Agent başlatılamaz.
Veritabanının varsayılan konumunu değiştirin. Varsayılan konum olarak belirtilen sürücü harfi ve yol mevcut değilse yeni veritabanı oluşturma işlemi başarısız olabilir.
SQL Server Agent günlük dosyası yolunu değiştirme
Tüm sistem veritabanlarını yeni bir birime taşıdıysanız veya farklı bir sürücü harfiyle başka bir sunucuya geçtiyseniz ve SQL Aracısı hata günlüğü dosyasının SQLAGENT.OUT yolu artık yoksa aşağıdaki güncelleştirmeleri yapın.
SQL Server Management Studio’da, Nesne Gezgini içinde SQL Server Agent öğesini genişletin.
Hata Günlükleri’ne sağ tıklayın ve Yapılandır’ı seçin.
SQL Server Agent Hata Günlüklerini Yapılandır iletişim kutusunda, SQLAGENT.OUT dosyasının yeni konumunu belirtin. Varsayılan konum şeklindedir
C:\Program Files\Microsoft SQL Server\MSSQL\<version>.<instance_name>\MSSQL\Log\.
Veritabanı varsayılan konumunu değiştirme
SQL Server Management Studio'da, Nesne Gezgini bölümünden istenen SQL Server örneğine bağlanın. Örneğe sağ tıklayın ve özellikler seçin.
Sunucu Özellikleri iletişim kutusunda Veritabanı Ayarları'nı seçin.
Veritabanı Varsayılan Konumları'nın altında hem veri hem de günlük dosyaları için yeni konuma göz atın.
Değişikliği tamamlamak için SQL Server hizmetini durdurun ve başlatın.
Examples
A.
tempdb Veritabanını taşıma
Aşağıdaki örnek, verileri ve günlük dosyalarını planlanan yeniden konumlandırmanın bir parçası olarak yeni bir konuma taşır tempdb .
Tip
tempdb dosyalarınızı en uygun boyut ve konumlandırma açısından gözden geçirmek için bu fırsatı değerlendirin. Daha fazla bilgi için bkz. SQL Server tempdb performansını iyileştirme.
tempdb SQL Server örneği her başlatıldığında yeniden oluşturulur çünkü verileri ve günlük dosyalarını fiziksel olarak taşımanız gerekmez. Dosyalar, hizmet 4. adımda yeniden başlatıldığında yeni konumda oluşturulur. Hizmet yeniden başlatılana kadar mevcut tempdb konumdaki verileri ve günlük dosyalarını kullanmaya devam eder.
Veritabanının mantıksal dosya adlarını
tempdbve disk üzerindeki geçerli konumlarını belirleyin.SELECT name, physical_name AS CurrentLocation FROM sys.master_files WHERE database_id = DB_ID(N'tempdb'); GOSQL Server Database Engine hizmet hesabının dosyaların yeni konumu için tam izinlere sahip olduğunu doğrulayın. Daha fazla bilgi için bkz. Windows hizmet hesaplarını ve izinlerini yapılandırma. Database Engine hizmet hesabı yeni konumundaki dosyaları denetleyemiyorsa, SQL Server örneği başlatılmaz.
Her 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 = 'F:\SQLLog\templog.ldf'); GOHizmet yeniden başlatılana kadar mevcut
tempdbkonumdaki verileri ve günlük dosyalarını kullanmaya devam eder.SQL Server örneğini durdurup yeniden başlatın.
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'tempdb');Kullanılmayan
tempdbdosyaları özgün konumlarından silin.
İlgili içerik
- Kaynak veritabanı
- tempdb veritabanı
- ana veritabanı
- msdb veritabanı
- model veritabanı
- Kullanıcı veritabanlarını taşıyın
- Veritabanı dosyalarını taşıma
- SQL Server hizmetlerini başlatma, durdurma, duraklatma, sürdürme ve yeniden başlatma
- ALTER DATABASE (Transact-SQL)
- Sistem veritabanlarını yeniden oluşturma