Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Đính kèm nhiều cơ sở dữ liệu bằng T-SQL

Sử dụng chế độ SQLCMD, bạn có thể dễ dàng tập lệnh này:

: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

Điều này hoạt động từ sqlcmd.exe từ dòng lệnh (bạn thậm chí có thể cung cấp các giá trị cho các biến dbname, dbfile, logfile từ dòng lệnh), hoặc nó hoạt động trong SQL Server Management Studio nếu bạn bật Tools > Options > Query Execution > by default, open new queries in SQLCMD mode .

Đọc thêm về tiện ích SQLCMD và tất cả các tham số của nó trên MSDN.

Tái bút:tất nhiên, cách tiếp cận này với tập lệnh kích hoạt SQLCMD cũng hoạt động cho các chu kỳ SAO LƯU / KHÔI PHỤC :-) (theo khuyến nghị của Aaron)

PPS:nếu bạn có quy ước đặt tên tốt và tệp dữ liệu luôn là $(dbname).mdf và tệp nhật ký luôn là $(dbname)_log.ldf , bạn cũng có thể sử dụng tập lệnh SQLCMD rút gọn này:

: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

và sau đó chỉ cần gọi nó từ dòng lệnh:

C:\>  sqlcmd.exe -S yourserver -E -i attach.sql -v dbname=YourDb1

v.v., một lần đối với mỗi cơ sở dữ liệu, bạn cần đính kèm lại.

PPPS:nếu bạn muốn khôi phục các bản sao lưu, nó chỉ phức tạp hơn một chút:

: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

Điều này hoạt động, miễn là bạn đặt tên cho .bak của mình các tệp giống như tên cơ sở dữ liệu của bạn và bạn đặt chúng ở một vị trí cố định (tôi cho rằng E:\Backup tại đây - điều chỉnh khi cần thiết).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khám phá Nguyên nhân &Giải pháp Lỗi Cơ sở dữ liệu Máy chủ SQL

  2. Nhận bù đắp datetimeoffset trong SQL Server

  3. Làm thế nào để phát hiện xem một chuỗi có chứa ít nhất một số hay không?

  4. Làm cách nào để tìm các truy vấn hoạt động kém nhất trong SQL Server 2008?

  5. Kết nối ứng dụng cốt lõi ASP.NET của bạn với phiên bản cục bộ của SQLServer