Câu trả lời:
Tạo một tệp .sql bằng (các) câu lệnh sao lưu / khôi phục của bạn và sử dụng SQLCMD
Khoảng một nửa bài viết đó có một ví dụ về việc sao lưu.
Bạn có thể tham khảo các trang sau với thông tin về T-SQL để thực hiện sao lưu và khôi phục:
Khi bạn phải di chuyển cơ sở dữ liệu từ máy chủ cũ sang máy chủ mới, bên dưới là tập lệnh sẽ tự động hóa nó ..
Quan trọng: Kiểm tra nó trước khi sử dụng Máy chủ TEST, để bạn hiểu kịch bản làm gì ... Tôi không chịu trách nhiệm hoặc nghĩa vụ đối với bất kỳ số lượng DỮ LIỆU DỮ LIỆU nào !!!
set nocount on
/******************************************************************************
Author :: Kin
Desc :: Transfer Logins, Databases from one instance/Server to another
*******************************************************************************/
declare @datafile varchar(255),
@logfile varchar(255),
@dbid tinyint,
@SQLText varchar(8000),
@dbname varchar(255),
@destserver varchar(255),
@SQLText2 varchar(8000)
set @destserver ='' --Destination Server Name goes here.
--1.Transfer Logins
select @SQLText='exec master..xp_cmdshell ''sqlcmd -S'+@@servername+' -E -Q"execute master.dbo.sp_help_revlogin" -oD:\logs\revloginout.sql'''
--print @sqltext
exec (@sqltext)
-- Create on Destination Server.
select @SQLText='exec master..xp_cmdshell ''sqlcmd -S'+@destserver+' -E -iD:\logs\revloginout.sql'''
--print @sqltext
exec (@sqltext)
--2. Detach All Local Databases and prepare for Attach on dest.
--- if you want to filer only some database, then you can do it here !!
if exists(select 1 from tempdb..sysobjects where name like '%#filetable%')
begin
drop table #filetable
end
create table #filetable (mdf varchar(255),ldf varchar(255),dbid tinyint,dbname varchar(100),fileid tinyint)
--
insert #filetable (mdf,dbid,fileid)
select physical_name,database_id,data_space_id from sys.master_files where data_space_id=1
insert #filetable (ldf,dbid,fileid)
select physical_name,database_id,data_space_id from sys.master_files where data_space_id=0
update u
set u.dbname = s.name
from #filetable u
inner join master..sysdatabases s
on u.dbid = s.dbid
select @dbid = min(dbid) from #filetable where dbid > 4
while @dbid is not null
begin
select @SQLText = 'alter database '+ dbname from #filetable where dbid = convert(varchar,@dbid)
select @SQLText = @SQLText+' set single_user with rollback immediate'
select @SQLText = @SQLText+' exec master..sp_detach_db ' + dbname from #filetable where dbid = convert(varchar,@dbid)
print @SQLText
Exec(@SQLText)
select @SQLText2 = 'exec opendatasource(''SQLNCLI'',''Datasource='+@destserver+';Persist Security Info=False;Integrated Security=SSPI'').master.dbo.sp_attach_db '''+dbname+'''' from #filetable where dbid = @dbid
select @SQLText2= @SQLText2+','''+ mdf+'''' from #filetable where dbid = @dbid and mdf is not null
select @SQLText2=@SQLText2+','''+ ldf+'''' from #filetable where dbid = @dbid and ldf is not null
print @SQLText2
Exec(@SQLText)
select @dbid = min(dbid) from #filetable where dbid > 4 and dbid > @dbid
end
select * from #filetable
drop table #filetable
--Finally Shutdown SQL Server
shutdown with nowait