SQL Server'daki Detach ve Attach işlevlerini kullanarak SQL Server veritabanlarını yeni bir konuma taşıma

Makale çevirileri Makale çevirileri
Makale numarası: 224071 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu makalede, Microsoft SQL Server 2005, SQL Server 2000 veya SQL Server 7.0 veritabanları için veri dosyalarının ve günlük dosyalarının konumunun nasıl değiştirileceği açıklanır.

SQL Server 2005'te sistem veritabanlarını taşıma hakkında daha fazla bilgi için, SQL Server Books Online'da "Moving System Databases" (Sistem Veritabanlarını Taşıma) konusuna bakın. Bu konuyu görüntülemek için, aşağıdaki Microsoft Developer Network (MSDN) Web sitesini ziyaret edin:
http://msdn2.microsoft.com/en-us/library/ms345408.aspx

Daha fazla bilgi

Bazı SQL Server sistem veritabanlarının konumunu değiştirmek için uygulamanız gereken adımlar, kullanıcı veritabanlarının konumunu değiştirmek için uygulamanız gereken adımlardan farklıdır. Bu özel durumlar ayrı ayrı açıklanmaktadır.

Not SQL Server 7.0 sistem veritabanları SQL Server 2000 ile uyumlu değildir. SQL Server 7.0 asıl, model, msdb veya dağıtım veritabanlarını SQL Server 2000'e iliştirmeyin. SQL Server 2005 kullanıyorsanız, bir örneğe yalnızca SQL Server 2005 veritabanları iliştirebilirsiniz. Bu makaledeki tüm örneklerde SQL Server'ın D:\Mssql7 klasöründe yüklü olduğu varsayılmaktadır. Bu örneklerde ayrıca tüm veri dosyalarının ve günlük dosyalarının varsayılan D:\Mssql7\Data klasöründe bulunduğu varsayılmaktadır. Örneklerde, tüm veritabanlarının veri dosyaları ve günlük dosyaları E:\Sqldata klasörüne taşınır.

Önkoşullar

  • Tüm veritabanlarının, özellikle de asıl veritabanının geçerli konumundan yedek kopyalarını oluşturun.
  • Sistem yöneticisi (sa) izinleriniz olmalıdır.
  • Veritabanının tüm veri dosyalarının ve günlük dosyalarının adını ve geçerli konumunu bilmeniz gerekir.

    Not Veritabanının kullandığı tüm dosyaların adını ve geçerli konumunu, sp_helpfile saklı yordamını kullanarak belirleyebilirsiniz:
    use <veritabanı_adı>
    go
    sp_helpfile
    go
  • Taşımakta olduğunuz veritabanına özel erişiminiz olmalıdır. Bu işlem sırasında sorunlarla karşılaşırsanız ve taşıdığınız bir veritabanına erişemezseniz veya SQL Server'ı başlatamazsanız, karşılaştığınız hatalar ile ilgili daha fazla bilgi için SQL Server hata günlüğünü ve SQL Server Books Online'ı inceleyin.

Kullanıcı veritabanlarını taşıma

Aşağıdaki örnekte, mydb adlı bir veritabanı taşınmaktadır. Bu veritabanı, Mydb.mdf adlı bir veri dosyası ve Mydblog.ldf adlı bir günlük dosyası içerir. Taşımakta olduğunuz veritabanında daha fazla veri dosyası veya günlük dosyası varsa, bu dosyaları sp_attach_db saklı yordamında virgülle ayrılmış bir listede belirtin. sp_detach_db yordamında dosyalar listelenmediği için, veritabanı kaç dosya içerirse içersin sp_detach_db yordamı değişmez.
  1. Veritabanının aşağıdaki şekilde bağlantısını kesin:
    use master
       go
       sp_detach_db 'mydb'
       go
  2. Ardından, veri dosyalarını ve günlük dosyalarını geçerli konumundan (D:\Mssql7\Data) yeni konumuna (E:\Sqldata) kopyalayın.
  3. Veritabanını yeniden iliştirin. Yeni konumdaki dosyalara aşağıdaki şekilde işaret edin:
    use master
      go
      sp_attach_db 'mydb','E:\Sqldata\mydbdata.mdf','E:\Sqldata\mydblog.ldf'
      go
    sp_helpfile saklı yordamını kullanarak, dosya konumlarındaki değişikliği doğrulayın:
    use mydb
       go
       sp_helpfile
       go
    Dosyaadı sütun değerlerinde yeni konumlar görünmelidir.
Not Microsoft Bilgi Bankası makalesi 922804'te, ağa bağlı depolama birimindeki SQL Server 2005 veritabanlarıyla ilgili bir sorun açıklanmaktadır. Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
922804 DÜZELTME: Ağa bağlı bir depolama biriminde bulunan bir Microsoft SQL Server 2005 veritabanının bağlantısı kesildikten sonra SQL Server veritabanı yeniden iliştirilemiyor (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir)
Bu sorunu ele alın. Ayrıca, SQL Server 2005 bağlantısı kesilen bir veritabanına uygulanan izinleri ele alın. Daha fazla bilgi için, SQL Server Books Online'daki "Securing Data and Log Files" (Veri ve Günlük Dosyalarının Güvenliğini Sağlama) konusunda "Detaching and Attaching a Database" (Veritabanı Bağlantısını Kesme ve İliştirme) bölümüne bakın. Bu konuyu görüntülemek için aşağıdaki Microsoft Developer Network (MSDN) Web sitesini ziyaret edin:
http://msdn2.microsoft.com/en-us/library/ms189128.aspx

Örnek veritabanlarını taşıma

SQL Server 2000 veya SQL Server 7.0'daki pubs ve Northwind örnek veritabanlarını ya da SQL Server 2005'teki AdventureWorks ve AdventureWorksDW örnek veritabanlarını taşımak için, kullanıcı veritabanlarını taşıma yordamını uygulayın.

Model veritabanını taşıma

SQL Server 7.0

  1. SQL Server Agent'ın çalışır durumda olmadığını doğrulayın.
  2. Kullanıcı veritabanlarını taşıma yordamının aynısını uygulayın.

SQL Server 2005 ve SQL Server 2000

SQL Server 2005 ve SQL Server 2000'de, sp_detach_db saklı yordamını kullanarak sistem veritabanlarının bağlantısını kesemezsiniz. sp_detach_db 'model' deyimini çalıştırmayı denediğinizde, aşağıdaki hata iletisini alırsınız:
Server: Msg 7940, Level 16, State 1, Line 1
System databases master, model, msdb, and tempdb cannot be detached.
Model veritabanını taşımak için, SQL Server'ı -c seçeneğiyle, -m seçeneğiyle ve izleme bayrağı 3608 ile başlatmanız gerekir. İzleme bayrağı 3608, SQL Server'ın asıl veritabanı dışındaki veritabanlarını kurtarmasını engeller.

Not Bunu yaptıktan sonra hiçbir kullanıcı veritabanına erişemezsiniz. Bu izleme bayrağını kullanırken aşağıdaki adımlar dışında hiçbir işlem gerçekleştirmemelisiniz. İzleme bayrağı 3608'i SQL Server başlangıç parametresi olarak eklemek için şu adımları izleyin:
  1. SQL Server Enterprise Manager'da, sunucu adını sağ tıklatın ve ardından Properties'i (Özellikler) tıklatın.
  2. General (Genel) sekmesinde Startup Parameters'ı (Başlangıç Parametreleri) tıklatın.
  3. Aşağıdaki yeni parametreyi ekleyin:
    -c -m -T3608
SQL Server 2005 kullanıyorsanız, SQL Server Configuration Manager'ı ((SQL Server Yapılandırma Yöneticisi) kullanarak SQL Server hizmetinin başlangıç parametrelerini değiştirin. Başlangıç parametrelerini değiştirme konusunda daha fazla bilgi için, aşağıdaki Microsoft Developer Network (MSDN) Web sitesini ziyaret edin:
http://msdn2.microsoft.com/en-us/library/ms190737.aspx
-c seçeneğini, -m seçeneğini ve izleme bayrağı 3608'i ekledikten sonra şu adımları izleyin:
  1. SQL Server'ı durdurup yeniden başlatın.
  2. Aşağıdaki komutları kullanarak model veritabanının bağlantısını kesin:
    use master
       go
       sp_detach_db 'model'
       go
  3. Model.mdf ve Modellog.ldf dosyalarını D:\Mssql7\Data klasöründen E:\Sqldata klasörüne taşıyın.
  4. Aşağıdaki komutları kullanarak model veritabanını yeniden iliştirin:
    use master
       go
       sp_attach_db 'model','E:\Sqldata\model.mdf','E:\Sqldata\modellog.ldf'
       go
  5. SQL Server Enterprise Manager veya SQL Server Configuration Manager'daki başlangıç parametrelerinden -c -m -T3608 parametresini kaldırın.
  6. SQL Server'ı durdurup yeniden başlatın. sp_helpfile saklı yordamını kullanarak, dosya konumlarındaki değişikliği doğrulayabilirsiniz. Örneğin, aşağıdaki komutu kullanın:
    use model
       go
       sp_helpfile
       go

MSDB veritabanını taşıma

SQL Server 7.0

Notmsdb ve model veritabanlarını taşırken bu yordamı kullanıyorsanız, ilk önce model veritabanını ve ardından msdb veritabanını yeniden iliştirmelisiniz. Şu adımları izleyin:
  1. SQL Server Agent'ın çalışır durumda olmadığını doğrulayın.
  2. Kullanıcı veritabanlarını taşıma yordamının aynısını uygulayın.
Not SQL Server Agent çalışıyorsa, sp_detach_db saklı yordamı başarısız olur ve aşağıdaki iletiyi alırsınız:
Server: Msg 3702, Level 16, State 1, Line 0
Cannot drop the database 'msdb' because it is currently in use.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

SQL Server 2005 ve SQL Server 2000

MSDB veritabanını taşımak için, SQL Server'ı -c seçeneğiyle, -m seçeneğiyle ve izleme bayrağı 3608 ile başlatmalısınız. İzleme bayrağı 3608, SQL Server'ın asıl veritabanı dışındaki veritabanlarını kurtarmasını engeller. -c seçeneğini, -m seçeneğini ve izleme bayrağı 3608'i eklemek için, "Model veritabanını taşıma" bölümündeki adımları izleyin. -c seçeneğini, -m seçeneğini ve izleme bayrağı 3608'i ekledikten sonra şu adımları izleyin:
  1. SQL Server'ı durdurup yeniden başlatın.
  2. SQL Server Agent hizmetinin çalışır durumda olmadığını doğrulayın.
  3. msdb veritabanının aşağıdaki şekilde bağlantısını kesin:
    use master
    go
    sp_detach_db 'msdb'
    go
  4. Msdbdata.mdf ve Msdblog.ldf dosyalarını geçerli konumlarından (D:\Mssql8\Data) yeni konumlarına (E:\Mssql8\Data) taşıyın.
  5. Enterprise Manager'daki başlangıç parametrelerinden -c -m -T3608 parametresini kaldırın.
  6. SQL Server'ı durdurup yeniden başlatın.

    Not SQL Server'ı -c seçeneğiyle, -m seçeneğiyle ve izleme bayrağı 3608 ile başlatarak msdb veritabanını yeniden iliştirmek isterseniz, aşağıdaki hata iletisini alabilirsiniz:
    Server: Msg 615, Level 21, State 1, Line 1
    Could not find database table ID 3, name 'model'.
  7. msdb veritabanını aşağıdaki şekilde yeniden iliştirin:
    use master
    go 
    sp_attach_db 'msdb','E:\Mssql8\Data\msdbdata.mdf','E:\Mssql8\Data\msdblog.ldf' 
    go
Notmodel veritabanını taşırken bu yordamı kullanırsanız, model veritabanıyla birlikte msdb veritabanının da bağlantısını kesmeye çalışmış olursunuz. Bunu yaptığınızda, ilk önce model veritabanını ve ardından msdb veritabanını yeniden iliştirmelisiniz. İlk önce msdb veritabanını yeniden iliştirirseniz, model veritabanını yeniden iliştirmeye çalıştığınızda aşağıdaki hata iletisini alırsınız:
Msg 0, Level 11, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded.
Bu durumda, msdb veritabanının bağlantısını kesmeniz, model veritabanını yeniden iliştirmeniz ve sonra da msdb veritabanını yeniden iliştirmeniz gerekir.

msdb veritabanını taşıdıktan sonra aşağıdaki hata iletisini alabilirsiniz:
Error 229: EXECUTE permission denied on object 'ObjectName', database 'master', owner 'dbo'.
Bu sorun, sahiplik zinciri koptuğu için oluşur. msdb veritabanının sahibi ve asıl veritabanının sahibi aynı kişi değildir. Bu durumda, msdb veritabanının sahipliği değişmiştir. Bu soruna geçici bir çözüm bulmak için, aşağıdaki Transact-SQL deyimlerini çalıştırın. Bunun için Osql.exe komut satırı yardımcı programını (SQL Server 7.0 ve SQL Server 2000) veya Sqlcmd.exe komut satırı yardımcı programını (SQL Server 2005) kullanabilirsiniz:
USE MSDB 
Go 
EXEC sp_changedbowner 'sa' 
Go
Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
272424 Veritabanları arasında nesne sahipliği zincir denetimi nesne sahipleriyle eşlenen oturuma bağlıdır (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir)

Asıl veritabanını taşıma

  1. SQL Server Enterprise Manager'da asıl veri dosyalarının ve asıl günlük dosyalarının yolunu değiştirin.

    Not Hata günlüğünün konumunu da buradan değiştirebilirsiniz.
  2. Enterprise Manager içinde SQL Server'ı sağ tıklatın ve ardından Properties'i (Özellikler) tıklatın.
  3. Aşağıdaki girdileri görüntülemek üzere Startup Parameters'ı (Başlangıç Parametreleri) tıklatın:
    -dD:\MSSQL7\data\master.mdf -eD:\MSSQL7\log\ErrorLog -lD:\MSSQL7\data\mastlog.ldf
    -d, asıl veritabanının veri dosyasının tam yoludur.

    -e, hata günlüğü dosyasının tam yoludur.

    -l, asıl veritabanının günlük dosyasının tam yoludur.
  4. Bu değerleri şu şekilde değiştirin:
    1. Master.mdf ve Mastlog.ldf dosyaları için geçerli girdileri kaldırın.
    2. Yeni konumu belirten yeni girdiler ekleyin:
      -dE:\SQLDATA\master.mdf
            -lE:\SQLDATA\mastlog.ldf
  5. SQL Server'ı durdurun.
  6. Master.mdf ve Mastlog.ldf dosyalarını yeni konuma kopyalayın (E:\Sqldata).
  7. SQL Server'ı yeniden başlatın.
Not SQL Server 2005 kullanıyorsanız, SQL Server Configuration Manager'ı kullanarak asıl veri dosyalarının ve asıl günlük dosyalarının yolunu değiştirin.

Tempdb veritabanını taşıma

Tempdb dosyalarını, ALTER DATABASE deyimini kullanarak taşıyabilirsiniz.
  1. sp_helpfile saklı yordamını aşağıdaki şekilde kullanarak tempdb veritabanı için mantıksal dosya adları belirleyin:
    use tempdb
    go
    sp_helpfile
    go
    Her bir dosyanın mantıksal adı name sütununda yer alır. Bu örnekte varsayılan dosya adları olarak tempdev ve templog kullanılmaktadır.
  2. ALTER DATABASE deyimini kullanarak, mantıksal dosya adını aşağıdaki gibi belirtin:
    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
    Değişikliğin onaylandığı aşağıdaki iletileri almalısınız:
    İleti 1
    File 'tempdev' modified in sysaltfiles. Delete old file after restarting SQL Server.
    İleti 2
    File 'templog' modified in sysaltfiles. Delete old file after restarting SQL Server.
  3. SQL Server yeniden başlatılıncaya kadar, tempdb veritabanında sp_helpfile saklı yordamı kullanılarak bu değişiklikler onaylanamaz.
  4. SQL Server'ı durdurup yeniden başlatın.

Asıl veritabanını ve Kaynak veritabanını taşıma

Asıl veritabanını ve Kaynak veritabanını taşıma hakkında daha fazla bilgi için, aşağıdaki Microsoft Developer Network (MSDN) Web sitesini ziyaret edin:
http://msdn2.microsoft.com/en-us/library/ms345408.aspx

Referanslar

Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
912397 SQL Server 2000 veya SQL Server 2005'in kümelenmiş örneğinin başlangıç parametresi geçerli olmayan bir değer olarak değiştirildiğinde SQL Server hizmeti başlatılamıyor (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir)
274188 SORUN: Çevrimiçi Kitaplar'daki "Artık Kullanıcı Sorunlarını Giderme" Konusu Tamamlanmamış
246133 SQL Server örnekleri arasında oturum ve parolalar nasıl aktarılır (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir)
168001 Veritabanı geri yüklendikten sonra veritabanında oturum açabilen kullanıcılar ve izinler hatalı olabilir (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir)

Daha fazla bilgi için şu kitaplara bakın:
Microsoft Corporation
Microsoft SQL Server 7.0 System Administration Training Kit
Microsoft Press, 2001
Microsoft Corporation
MCSE Training Kit: Microsoft SQL Server 2000 System Administration
Microsoft Press, 2001
Microsoft Corporation
Microsoft SQL Server 2000 Resource Kit
Microsoft Press, 2001

Özellikler

Makale numarası: 224071 - Last Review: 13 Mayıs 2011 Cuma - Gözden geçirme: 16.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Workgroup
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Anahtar Kelimeler: 
kbsqlmanagementtools kbinfo KB224071

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com