Səhifələr

Blogroll

12 August 2014

SQL SERVER - Move user databases

SQL Server - də database fayllarının yerinin dəyişdirilməsi səbəbləri müxtəlif ola bilər. Database yerləşdiyi diskin dolması, disklə bağlı problem, faylları paylaşdıraraq İO sürətinin artırılması və s. Bu əməliyyatı etmək üçün müxtəlif üsullar var. Aşağıda bunlardan ikisi ilə sizi tanış etməyə çalışacam.

1 - ci üsul - SSMS vasitəsi ilə faylların  köçürülməsi. 

Bu üsulda SSMS - dan istifadə edildiyinə görə SQL dili ilə tanışlığı olmayanlar da asanlıqla bu əməliyyatı edə bilərlər. Köçerməyə başlamazdan qabaq ik növbədə köçürüləcək database fayllarının yerini və adını dəqiqləşdirmək lazımdır. Bunun üçün database üzərində sağ klik edib Properties menyusunu seçin və açılan pəncərənin soltərəfindəki menyudan Files bölməsinə keçin.

database-properties

 

database-files-path

 

Yuxarıdakı şəkildə göstərilmiş qovluğa keçdikdə həmin faylların orda olduğunu görə bilərsiniz. Nəzərə alın ki, bir database-ə aid olan faylları müxtəlif qovluqlarda, disklərdə də yerləşə bilər.

database-datafiles

 

Database SQL Server - də istifadə də olduğu halda onlar üzərində heç bir dəyişiklik etmək olmaz. Bu səbəbdən ilk növbədə database SQL Serverdən ayıraq. Bunun üçün aşağıdakı şəkildə göstərildiyi kimi Database üzərində sağ klik edib, Tasks bölməsindən Detach seçməklə etmək olar. Detach seçdikdən sonr açılan pəncərədə heç bir dəyişiklik etmədən OK düyməsini klikləyin. Pəncərə bağlandıqdan sonra həmin database Object Explorer pəncərəsindən itdiyini görəcəksiniz.

detach-database

 

detach-database-2

 

object-explorer-databaseDatabase detach edildikdən sonra faylların olduğu qovluğa qayıdıb orda olan faylların hamısını və ya yalnız köçürmək istədiklərinizi seçib yeni diskə və ya direktoriyaya köçürün. Bizim nümunədə mən DATA folderindən yeni yaradılmış olan DATA2 folderinə 3 fayl köçürəcəm. Digər 2 fayl öz əvvəlki yerində qalacaq.

old-and-new-folders

sql-datafiles-old

 

 

sql-datafiles-new

 

Fayllar kopyalandıqdan sonra Object Explorer - də Databases üzərində sağ klik edib açılan menyudan Attach seçin.

attach-databaseAçılan pəncərədə Add düyməsini klikləyin və Attach etmək istədiyiniz Database-ə aid olan MDF faylı seçin.

add-datafile-for-attach

 

 

database-mdf-file

 

MDF fayl seçildikdən sonra həmin database faylları barədə məlumatı görəcəksiniz. Message hissəsində Not Found yazılan fayllar köçürdüyümüz fayllarıdır. Həmin faylların bərpa olunmas üçün qırmızı ilə işarələnmiş düyməni vurub köçürdüyünüz qovluqdan adına uyğun olaraq faylı seçin.

notfound-datafiles

 

find-file-buttonselect-notfound-fileBütün faylları seçdikdən sonra Not Found yazısının itdiyini görəcəksiniz.

not-found-disappearBundan sonra sadəcə olaraq OK düyməsini vurmaq qalır. Əməliyyat yerinə yetirildikdən sonra Object Explorer-də Attach etdiyimiz database görsənəcək. Həmin database  fayllarının yerinə baxdıqda isə yeni qovluq barədə məlumatı da görəcksiniz.

database-files-new-path

2 - ci üsul - SQL sorğu ilə fayl adlarının database səviyyəsində dəyişdirilməsi və falların ƏS səviyysində kopyalanması. 

Birinci üsulda olduğu kimi bu dəfə də ilk növbədə faylların yerləşdiyi qovluqları (diskləri) müəyyənləşdirmək lazımdır. Bunun üçün aşağıdakı sorğudan istifadə edək.

[code language="sql"]SELECT name AS LogicalName, physical_name AS FileDir
FROM sys.master_files
WHERE database_id= DB_ID('MSSQLSUPPORT'); [/code]

 

 

Sorğu nəticəsi aşağıdakı kimi olacaq.

database-file-path

 

Faylların yerini öyrəndikdən sonra aşağıdakı sorğu ilə database - i offline moduna keçiririk. Database online olarsa onun əməliyyat sistem fayllarının yerini dəyişə bilmərik.

[code language="sql"] USE master
GO
ALTER DATABASE MSSQLSUPPORT SET OFFLINE WITH ROLLBACK IMMEDIATE
GO[/code]

database-offline
Database offline olduqdan sonra Əməliyyat sistemi tərəfdə nəzərdə tutulan dəyişikliyi edin, yəni faylların yerini dəyişin. Bizim halda DATA2 qovluğunda olan fayllar DATA qovluğuna köçürüldü.

copy-datafiles-to-data-folder
Fayllar fiziki olaraq köçürüldükdən sonra isə database səviyyəsində də aşağıdakı dəyişiklikləri edin. Eyni anda yalnız bir fayl adı dəyişmək olar.

[code language="sql"]USE master
GO
ALTER DATABASE MSSQLSUPPORT
MODIFY FILE
( NAME = MSSQLSUPPORT_log,
FILENAME = 'D:\DATA\MSSQLSUPPORT_log.ldf');

USE master
GO
ALTER DATABASE MSSQLSUPPORT
MODIFY FILE
( NAME = MSSQLSUPPORT2,
FILENAME = 'D:\DATA\MSSQLSUPPORT2.ndf');

USE master
GO
ALTER DATABASE MSSQLSUPPORT
MODIFY FILE
( NAME = MSSQLSUPPORT2_log,
FILENAME = 'D:\DATA\MSSQLSUPPORT2_log.ldf'); [/code]

Sorğu uğurla yerinə yetirilərsə aşağıdakı mesaj alınacaq.

move-datafile-message
Köçürmə işi bitdikdən sonra aşağıdakı soröu ilə database-i online edə bilərsiniz.

[code language="sql"]USE master
GO
ALTER DATABASE MSSQLSUPPORT SET ONLINE
GO [/code]

Ilk sorğunu yenidən versəniz faylların yerdəyişməsini görə bilərsiniz.

[code language="sql"]SELECT name AS LogicalName, physical_name AS FileDir
FROM sys.master_files
WHERE database_id= DB_ID('MSSQLSUPPORT'); [/code]

new-file-location
Database Administrator
Yusif Yusifov

 

 

 

 

0 şərh.:

Post a Comment