使用命令行迁移 SQL 数据库

如果你有几十个 SQL 数据库 并且手动备份/恢复每个数据库对您的项目来说太耗时了? 没问题! 我们可以编写一个无需人工干预即可一次导出和导入所有数据库的方法。 有关转移 SQL 登录和存储过程和视图的帮助,请查看我们的 MSSQL 迁移与 SSMS 文章。

在源服务器上备份数据库

1. 在源服务器上打开 SSMS(Microsoft SQL Server Management Studio),登录 SQL 实例并打开一个 New Query 窗口。 运行以下查询:

SELECT name FROM master.sys.databases

此命令将输出服务器上所有 MSSQL 数据库的列表。 要复制此列表,请单击结果中的任意位置并使用键盘快捷键 CTRL+A(Mac 用户为 Command + A)选择所有数据库。 突出显示所有数据库后,右键单击并选择复制。

2. 打开记事本,粘贴结果并删除您不想迁移的所有数据库(在新复制的记事本文本中),并删除以下条目:

  • 掌握
  • 临时数据库
  • 模型
  • 数据库

这些条目是系统的数据库,不需要复制它们。 确保删除除明确需要迁移的数据库之外的所有内容。 您现在应该有一个由一行分隔的所有必需数据库的列表。 IE

  • AdventureWorks2012
  • AdventureWorks2014
  • AdventureWorks2016

3. Save 此结果在计算机上为 C:databases。文本文件.

4.新建一个记事本窗口,将以下内容复制/粘贴到文档中并保存为C:db-backup。蝙蝠

mkdir %systemdrive%dbbackups
for /F "tokens=*" %%a in (databases.txt) do ( sqlcmd.exe -Slocalhost -Q"BACKUP DATABASE %%a TO DISK ='%systemdrive%dbbackups%%a.bak' WITH STATS" )

5. 现在您已将文件保存为 C:db-backup.bat,导航到 开始 菜单和类型 命令 并右键单击 命令提示符 选择 以管理员身份运行.键入以下命令:

cd C:

并点击进入。 之后,输入 数据库备份.bat 并再次点击进入。

此时,您的数据库已经开始导出,您将看到每个数据库导出的百分比进度(如下图所示)。

记下任何失败的数据库,因为您可以在完成后重新运行批处理文件,只使用可能失败的数据库。 如果数据库备份失败,请注意命令提示符中显示的错误消息,通过修改现有 C:databases.txt 文件以仅包含失败的数据库来解决错误并重新运行 db-backup.bat直到所有数据库都成功导出。

将数据库恢复到目标服务器

现在你已经有了文件夹 C:dbbackups 包含要迁移的每个数据库的 .bak 文件。 您需要复制文件夹 你的 C:databases.txt 文件到目标服务器。 有多种方法可以将数据移动到目标服务器; 您可以使用 USB、Robocopy 或 FTP。 目标服务器 C 盘上的文件夹应该被调用 C:dbbackups . 准确命名文件很重要,因为我们的脚本将在此处查找 .bak 文件。 确保目标服务器也有您的 C:databases.txt 文件,因为我们的脚本将在此处查找数据库名称。

1. 打开记事本并将以下内容复制/粘贴到文档中并保存为 C:db-restore。蝙蝠

for /F "tokens=*" %%a in (C:databases.txt) do (
sqlcmd.exe -E -Slocalhost -Q"RESTORE DATABASE %%a FROM DISK='%systemdrive%dbbackups%%a.bak' WITH RECOVERY"
)

2. Save 文件为 C:db-restore.bat

3.导航到开始菜单并输入 命令.

4.右键单击 命令提示符 并选择 以管理员身份运行. 键入以下命令:

cd C:

并击中 Enter. 现在输入 db-restore.bat 并击中 Enter.

您的数据库现在已开始导入。 您将看到每个数据库的恢复百分比和消息“RESTORE DATABASE 已成功处理” 对于每个已成功处理的数据库。

记下任何失败的数据库,因为您可以在完成后重新运行批处理文件,只使用失败的数据库。 如果数据库备份失败,请注意命令提示符中显示的错误消息,解决错误(您可以根据需要更改批处理文件),修改 C:databases.txt 以仅包含失败的数据库并重新-运行 db-restore.bat 直到成功导出所有数据库。

恭喜,您现在已将所有数据库备份并恢复到新服务器。 如果在目标服务器上测试 SQL 连接时遇到任何登录问题,请参阅 迁移 Microsoft SQL 登录(锚链接) 本文的部分并按照其中的步骤操作。 要迁移视图或存储过程,请参阅 迁移视图和存储过程 部分。 每个 SQL Server 都会有其配置和面临的障碍,但我们希望本文为您的 Microsoft SQL Server 迁移奠定了坚实的基础。