Menggunakan mode SQLCMD, Anda dapat dengan mudah membuat skrip ini:
:setvar dbname YourDatabaseName
:setvar dbfile N'E:\DATA\YourDatabase.mdf'
:setvar logfile N'E:\TLOG\YourDatabase_log.ldf'
USE [master]
GO
CREATE DATABASE $(dbname) ON
( FILENAME = $(dbfile) ),
( FILENAME = $(logfile) )
FOR ATTACH
GO
Ini berfungsi baik dari sqlcmd.exe
dari baris perintah (Anda bahkan dapat memberikan nilai untuk variabel dbname, dbfile, logfile
dari baris perintah juga), atau berfungsi di SQL Server Management Studio jika Anda mengaktifkan Tools > Options > Query Execution > by default, open new queries in SQLCMD mode
.
Baca selengkapnya tentang utilitas SQLCMD dan semua parameternya di MSDN.
PS:tentu saja, pendekatan ini dengan skrip yang diaktifkan SQLCMD juga berfungsi untuk siklus CADANGAN/KEMBALIKAN :-) (seperti yang direkomendasikan oleh Aaron)
PPS:jika Anda memiliki konvensi penamaan yang baik, dan file data selalu $(dbname).mdf
dan file log selalu $(dbname)_log.ldf
, Anda juga dapat menggunakan skrip SQLCMD singkat ini:
:setvar dbname YourDatabaseName
USE [master]
GO
CREATE DATABASE $(dbname) ON
( FILENAME = N'E:\DATA\$(dbfile).mdf' ),
( FILENAME = N'E:\TLOG\$(logfile)_log.ldf' )
FOR ATTACH
GO
lalu panggil saja ini dari baris perintah:
C:\> sqlcmd.exe -S yourserver -E -i attach.sql -v dbname=YourDb1
dan seterusnya, sekali untuk setiap database Anda perlu melampirkan kembali.
PPPS:kalau mau restore backup, cuma sedikit lebih ribet :
:setvar dbname YourDatabaseName
USE [master]
GO
RESTORE DATABASE $(dbname)
FROM DISK = N'E:\Backup\$(dbname).bak'
WITH FILE = 1,
MOVE N'$(dbname)' TO N'E:\DATA\$(dbname).mdf',
MOVE N'$(dbname)_Log' TO N'E:\TLOG\$(dbname)_Log.ldf',
NOUNLOAD, REPLACE
GO
Ini berfungsi, selama Anda memberi nama .bak
. Anda file yang sama dengan nama database Anda, dan Anda meletakkannya di lokasi tetap (saya kira E:\Backup
di sini - sesuaikan sesuai kebutuhan).