今天工作遇到一个问题:数据库本来再SQL Server2008中,现在需要备份一个数据库到另一台服务器上,这台服务器装的事SQL Server2005。首先想到的是数据库分离和数据库备份,结果两种方法都出现异常。最后想到将数据导出未SQL脚本,然后使用系统命令执行大文件SQL脚本。
因数据库较大,数据较多,导出SQL脚本时选中分表存储,最后导出的SQL文件基本都是2G左右,并且有大约50个文件,所以写了一个批处理文件,进行批量执行,最后跑了大约5小时。
下面将附一个缩减版的批处理:
::SQL2005使用osql命令,若是SQL2008使用sqlcmd命令 osql -S localhost -U sa -P 123456 -i E:LgBigDatadb 2sqldbo.*.Table.sql osql -S localhost -U sa -P 123456 -i E:LgBigDatadb 2sqldbo.*.Table.sql osql -S localhost -U sa -P 123456 -i E:LgBigDatadb 2sqldbo.*.Table.sql osql -S localhost -U sa -P 123456 -i E:LgBigDatadb 2sqldbo.*.Table.sql echo 执行完成 pause
osql -S 服务器 -U 用户名 -P 密码 -i SQL路径
附:SQL Server 2008执行大文件SQL脚本命令
cd C:Program FilesMicrosoft SQL Server100ToolsBinn
sqlcmd -S . -U sa -P 123 -d test -i data.sql
参数说明:-S 服务器地址 -U 用户名 -P 密码 -d 数据库名称 -i 脚本文件路径
本地服务器地址可以写 . 比较轻松,也可写(local)或者IP地址