Attach and Detach Database
Những câu lệnh t-sql thêm và loại bỏ database MS SQL Server
1. Attach Database ( Thêm database vào SQL SERVER)
Chú ý cần phân quyền cho file .MDF và .LDF có quyền thì mới attach vào được, ví dụ Add Everyone vào 2 file này.
Lệnh 1: hay dùng
-- Khai báo các biến hệ thống
Declare @database_name nvarchar(100); -- Tên database
Declare @pathdb nvarchar(300); -- Đường dẫn thư mục databsae
Declare @sql nvarchar(max)=N''; -- Câu lệnh sql query
Declare @err_state int =0; -- Trạng thái lỗi trả về
-- Điền thông tin attach db vào:
set @database_name=N'DTECH_HN'; --Tên database cần Attach vào
set @pathdb=N'D:\DATA' -- Đường dẫn thư mục chứa databse và log cần Attach vào
-- Thực thi câu lệnh
set @sql=@sql+'EXEC sp_attach_db @dbname = N'''+@database_name+''',
@filename1 = N'''+@pathdb+'\'+@database_name+'.mdf'',
@filename2 =N'''+@pathdb+'\'+ @database_name +'_log.ldf'''
BEGIN TRY
print @sql
exec(@sql)
END TRY
BEGIN CATCH
SELECT @err_state = ERROR_STATE()
END CATCH;
------------------------------------------------------------------------------------------------
if @err_state=3 -- Đã tồn tại Database cần attach vào rồi, thông báo, ko làm gì nữa
BEGIN
Print N'Đã tồn tại database ['+@database_name+'] trên SQL SERVER.'
END
------------------------------------------------------------------------------------------------
if @err_state=101 -- Thực hiện câu lệnh Attach lại khi file mdf không có _LOG trong tên file
BEGIN
-- Thực thi câu lệnh
set @sql='EXEC sp_attach_db @dbname = N'''+@database_name+''',
@filename1 = N'''+@pathdb+'\'+@database_name+'.mdf'',
@filename2 =N'''+@pathdb+'\'+ @database_name +'.ldf'''
print @sql
exec(@sql)
ENDLệnh 2:
Lệnh 3:
2. Detach Database ( Gỡ bỏ database khỏi SQL SERVER)
Lệnh 1: hay dùng
Lệnh 2: gỡ bỏ bỏ qua bước kiểm tra
3. ATTACH , DETACH NHIỀU DATABASES
ATTACH NHIỀU DATABASE
Cách 1: Thêm 1 Proc mới trên SQL và chạy lệnh gọi Proc đó với đường dẫn:
Cách 2:
DETACH NHIỀU DATABASE
Cách 1:
Cách 2:
Cách 3: Áp dụng truyền thêm tham số 1 hoặc 0 để xác định Detach hoặc Attach
Last updated