™zet
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:
Daha fazla bilgi
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şımaAş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.
- Veritabanının aşağıdaki şekilde bağlantısını kesin:
use master
go
sp_detach_db 'mydb'
go
- Ardından, veri dosyalarını ve günlük dosyalarını geçerli konumundan (D:\Mssql7\Data) yeni konumuna (E:\Sqldata) kopyalayın.
- Veritabanını yeniden iliştirin. Yeni konumdaki dosyalara aşağıdaki şekilde işaret edin:sp_helpfile saklı yordamını kullanarak, dosya konumlarındaki değişikliği doğrulayın:
use master
go
sp_attach_db 'mydb','E:\Sqldata\mydbdata.mdf','E:\Sqldata\mydblog.ldf'
goDosyaadı sütun değerlerinde yeni konumlar görünmelidir.
use mydb
go
sp_helpfile
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:
Örnek veritabanlarını taşımaSQL 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
- SQL Server Agent'ın çalışır durumda olmadığını doğrulayın.
- Kullanıcı veritabanlarını taşıma yordamının aynısını uygulayın.
SQL Server 2005 ve SQL Server 2000SQL 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:
System databases master, model, msdb, and tempdb cannot be detached.
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:
- SQL Server Enterprise Manager'da, sunucu adını sağ tıklatın ve ardından Properties'i (Özellikler) tıklatın.
- General (Genel) sekmesinde Startup Parameters'ı (Başlangıç Parametreleri) tıklatın.
- Aşağıdaki yeni parametreyi ekleyin:-c -m -T3608
- SQL Server'ı durdurup yeniden başlatın.
- Aşağıdaki komutları kullanarak model veritabanının bağlantısını kesin:
use master
go
sp_detach_db 'model'
go
- Model.mdf ve Modellog.ldf dosyalarını D:\Mssql7\Data klasöründen E:\Sqldata klasörüne taşıyın.
- 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
- SQL Server Enterprise Manager veya SQL Server Configuration Manager'daki başlangıç parametrelerinden -c -m -T3608 parametresini kaldırın.
- 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.0Notmsdb 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:
- SQL Server Agent'ın çalışır durumda olmadığını doğrulayın.
- Kullanıcı veritabanlarını taşıma yordamının aynısını uygulayın.
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 2000MSDB 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:
- SQL Server'ı durdurup yeniden başlatın.
- SQL Server Agent hizmetinin çalışır durumda olmadığını doğrulayın.
- msdb veritabanının aşağıdaki şekilde bağlantısını kesin:
use master
go
sp_detach_db 'msdb'
go
- Msdbdata.mdf ve Msdblog.ldf dosyalarını geçerli konumlarından (D:\Mssql8\Data) yeni konumlarına (E:\Mssql8\Data) taşıyın.
- Enterprise Manager'daki başlangıç parametrelerinden -c -m -T3608 parametresini kaldırın.
- 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'.
- 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
A severe error occurred on the current command. The results, if any, should be discarded.
msdb veritabanını taşıdıktan sonra aşağıdaki hata iletisini alabilirsiniz:
USE MSDB
Go
EXEC sp_changedbowner 'sa'
Go
Asıl veritabanını taşıma
- 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.
- Enterprise Manager içinde SQL Server'ı sağ tıklatın ve ardından Properties'i (Özellikler) tıklatın.
- 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.
- Bu değerleri şu şekilde değiştirin:
- Master.mdf ve Mastlog.ldf dosyaları için geçerli girdileri kaldırın.
- Yeni konumu belirten yeni girdiler ekleyin:
-dE:\SQLDATA\master.mdf
-lE:\SQLDATA\mastlog.ldf
- SQL Server'ı durdurun.
- Master.mdf ve Mastlog.ldf dosyalarını yeni konuma kopyalayın (E:\Sqldata).
- SQL Server'ı yeniden başlatın.
Tempdb veritabanını taşımaTempdb dosyalarını, ALTER DATABASE deyimini kullanarak taşıyabilirsiniz.
- sp_helpfile saklı yordamını aşağıdaki şekilde kullanarak tempdb veritabanı için mantıksal dosya adları belirleyin: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.
use tempdb
go
sp_helpfile
go
- ALTER DATABASE deyimini kullanarak, mantıksal dosya adını aşağıdaki gibi belirtin:Değişikliğin onaylandığı aşağıdaki iletileri almalısınız:
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İleti 1İleti 2
- SQL Server yeniden başlatılıncaya kadar, tempdb veritabanında sp_helpfile saklı yordamı kullanılarak bu değişiklikler onaylanamaz.
- SQL Server'ı durdurup yeniden başlatın.
Asıl veritabanını ve Kaynak veritabanını taşımaAsı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:
Referanslar
Daha fazla bilgi için şu kitaplara bakın:
Microsoft SQL Server 7.0 System Administration Training Kit
Microsoft Press, 2001
MCSE Training Kit: Microsoft SQL Server 2000 System Administration
Microsoft Press, 2001
Microsoft SQL Server 2000 Resource Kit
Microsoft Press, 2001