有没有办法用一个命令 (数据库、数据和用户) 备份和恢复整个 SQL Server?我已经成功地用 MySql 服务器实现了这一点,但只能找到 SQL Server 单个数据库导出的示例。
答案1
窃取我自己的一个答案:)我已经成功使用此脚本迁移了数百个数据库。 (此脚本需要服务器之间的网络连接。)
@ECHO ON
set controlfile=control.txt
set oldserver=
set oldmdfpath=
set newmdfpath=
set newserver=
set oldlogpath=
set newlogpath=
set movedmdfpath=
set movedldfpath=
SETLOCAL DISABLEDELAYEDEXPANSION
FOR /F %%L IN (%controlfile%%) DO (
SET "line=%%L"
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO !line!
sqlcmd -E -S!oldserver! -Q"EXEC master.dbo.sp_detach_db @dbname = N'!line!'"
copy "!oldmdfpath!\!line!.mdf" !newmdfpath!
copy "!oldlogpath!\!line!_log.ldf" !newlogpath!
sqlcmd -E -S!newserver! -Q"CREATE DATABASE [!line!] ON ( FILENAME = N'!newmdfpath!\!line!.mdf' ),( FILENAME = N'!newlogpath!\!line!_log.ldf' ) FOR ATTACH"
move "!oldmdfpath!\!line!.mdf" !movedmdfpath!
move "!oldlogpath!\!line!_log.ldf" !movedldfpath!
ENDLOCAL
)
ENDLOCAL
(文件 control.txt 包含要移动的数据库列表。您可以通过 获取这些列表select name from sys.databases where name not in ('master','msdb','model','tempdb')
。)
备份/恢复是最安全的方法,但是当您拥有大量数据库时,分离/附加的速度会快得多。
您必须单独处理登录(以及可能的 sid 问题)。 此链接可能会有帮助。同上,JoeQwerty 的链接也一样。