Attach i detach (przypinanie i odpinanie) bazy danych w SQL Server
Przypinanie i odpinanie bazy danych od serwera jest niezwykle przydatne przy przenoszeniu bazy do innego serwera. Przypięta baza jest widoczna w węźle Databases w SQL Server Management Studio
, odpiętej nie zobaczymy, ale fizycznie tkwi w katalogu Data
serwera.
Do odpinania bazy służy Detach.
Aby wykonać to zadanie klikamy prawym przyciskiem myszy na węźle z nazwą bazy, którą chcemy odpiąć. Z menu kontekstowego wybieramy Task->Detach
.
Pojawi się okno Detach Databse
.
Klikamy na przycisk OK
.
W oknie Object Explorer
w węźle Databases
baza już nie jest widoczna. Fizycznie pliki tej bazy nadal znajdują się w katalogu Data
SQL Servera.
Aby bazę przypiąć do serwera, klikamy prawym przyciskiem myszy na węzeł Databases
i z menu kontekstowego wybieramy Attach
.
Pojawi się okno Attach Databases
.
Klikamy przycisk Add
. W oknie Locate Database Files
jest widoczna lista plików mdf wszystkich baz serwera. Zaznaczamy plik bazy, którą chcemy podpiąć.
Klikamy na przycisk OK
. W oknie Attach Databases
widzimy także plik ldf
. Plik istnieje w katalogu Data, więc go pozostawiamy. Jeśli jednak baza wcześniej w tym miejscu nie istniała, a plik ldf nie został tu skopiowany, wtedy pojawi się w kolumnie Message
Not found. należy wówczas usunąć wiersz za pomocą przycisku Remove
.
Klikamy na przycisk OK
. W oknie Object Explorer
w węźle Databases
zobaczymy podpiętą bazę AdventureWorks2012
.
Innym sposobem na podpięcie bazy danych w postaci pliku mdf jest użycie polecenia T-SQL.
USE master GO CREATE DATABASE [AdventureWorks2012test] ON ( FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\AdventureWorks2012_Data.mdf') FOR ATTACH GO
W powyższym przykładzie jest podpięta baza AdventureWorks2012 z nową nazwą: AdventureWorks2012test. Jeśli plik ldf nie jest skopiowany zostanie utworzony automatycznie po podpięciu bazy do serwera.
Ponżej skrypt SQLz dodatkowym plikiem LDF:
USE master GO CREATE DATABASE [AdventureWorks2012test] ON ( FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\AdventureWorks2012_Data.mdf'), ( FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\AdventureWorks2012_log.ldf') FOR ATTACH GO