Αρκετές φορές έχω ερωτηθεί για το πώς μπορεί κάποιος να μεταφέρει μια βάση ή ένα αρχείο της (data / log file) από ένα σημείο (disk/folder/…) σε άλλο.
Η εύκολη απάντηση που δίνω καθώς δεν είναι πάντα εύκολο να γνωρίζω τα skills του ερωτώμενου είναι detach & attach database. Αρκετά ξεκάθαρή διαδικασία και χωρίς ίχνος παρερμηνείας.
Παρόλα αυτά όμως υπάρχει και άλλος τρόπος που σε κάποιες περιπτώσεις είναι λίγο πιο γρήγορος αλλά πρέπει να κάνεις περισσότερα βήματα υλοποίησης.
Το τρόπος αυτό είναι ο παρακάτω όπως δείχνω και στο παράδειγμα μου
- Με ALTER DATABASE λες που θέλεις να πάει το αρχείο
- Με ALTER DATABASE κάνεις OFFLINE την βάση
- Κάνεις copy το αρχείο από παλαιό σημείο στο νέο
- Με ALTER DATABASE κάνεις ONLINE την βάση
USE [master]
GO
-- Sample database
CREATE DATABASE [DemoDB]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N'DemoDB_data', FILENAME = N'C:\SQLData\DemoDB_data.mdf' )
LOG ON
( NAME = N'DemoDB_log', FILENAME = N'C:\SQLData\DemoDB_log.ldf' )
GO
-- STEP 1
alter database DemoDB
modify file (name='DemoDB_log', filename='C:\SQLData\a\DemoDB_log.ldf');
-- STEP 2
alter database DemoDB set offline;
-- STEP 3
-- copy file
-- STEP 4
alter database DemoDB set online;
/*antonch*/