今天工作遇到一个问题:数据库本来再SQL Server2008中,现在需要备份一个数据库到另一台服务器上,这台服务器装的事SQL Server2005。首先想到的是数据库分离和数据库备份,结果两种方法都出现异常。最后想到将数据导出未SQL脚本,然后使用系统命令执行大文件SQL脚本。

因数据库较大,数据较多,导出SQL脚本时选中分表存储,最后导出的SQL文件基本都是2G左右,并且有大约50个文件,所以写了一个批处理文件,进行批量执行,最后跑了大约5小时。

下面将附一个缩减版的批处理:

::SQL2005使用osql命令,若是SQL2008使用sqlcmd命令
    osql -S localhost -U sa -P 123456 -i E:\LgBigData\db\02sql\dbo.*.Table.sql
    osql -S localhost -U sa -P 123456 -i E:\LgBigData\db\02sql\dbo.*.Table.sql
    osql -S localhost -U sa -P 123456 -i E:\LgBigData\db\02sql\dbo.*.Table.sql
    osql -S localhost -U sa -P 123456 -i E:\LgBigData\db\02sql\dbo.*.Table.sql
echo 执行完成
pause
osql -S 服务器 -U 用户名 -P 密码 -i SQL路径




附:SQL Server 2008执行大文件SQL脚本命令

cd C:\Program Files\Microsoft SQL Server\100\Tools\Binn


sqlcmd -S . -U sa -P 123 -d test -i data.sql

参数说明:-S 服务器地址 -U 用户名 -P 密码 -d 数据库名称 -i 脚本文件路径

本地服务器地址可以写 . 比较轻松,也可写(local)或者IP地址