有没有办法在一个命令(数据库,数据和用户)备份和恢复整个SQL Server? 我已经用MySql服务器成功实现了这一点,但是只能findSQL Server单一数据库导出的例子。
从我自己的答案窃取,:)我已经成功地使用这个脚本来迁移数百个数据库。 (该脚本需要服务器之间的networking连接。)
@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')
来获得。
备份/恢复是最安全的方法,但是当您获得大量数据库时,detach / attach会更快。
你将不得不分别处理login(和可能的sid问题)。 这个链接可能有帮助。 同上JoeQwerty的链接。