我使用sqlcmd
实用程序将7 GB大型SQL转储文件导入远程SQL Server。我使用的命令是:
sqlcmd -S IP address -U user -P password -t 0 -d database -i file.sql
大约20-30分钟后,服务器会定期回复:
Sqlcmd:错误:脚本错误。
有任何指示或建议吗?
答案 0 :(得分:1)
我认为file.sql
只是一堆INSERT
语句。对于大量行,我建议使用BCP命令行实用程序。这将比单个INSERT
语句执行快几个数量级。
您还可以使用T-SQL BULK INSERT
命令批量插入数据。在这种情况下,文件路径需要可由数据库服务器访问(即UNC路径或复制到服务器上的驱动器)以及所需的权限。请参阅http://msdn.microsoft.com/en-us/library/ms188365.aspx。
答案 1 :(得分:0)
为什么不使用SSIS。虽然我有一个DBA证书,但我总是尝试使用正确的工具。
以下是使用SSIS的一些原因。
1 - 使用仍然可以使用快速加载,批量复制。确保设置批量大小。
2 - 错误处理要好得多。
但是,如果您使用快速加载,则批量提交或被抛出。
如果您使用单个记录,则可以将每个错误行定向到单独的目标。
3 - 您可以在将源数据加载到目标之前对源数据执行转换。
简而言之,Extract Translate Load。
4 - SSIS喜欢记忆和缓冲。如果你想深入了解,请阅读Matt Mason或Brian Knight的一些文章。
最后但并非最不重要的一点是,如果作业未在目标服务器上运行且本地磁盘上的输入文件,则LAN / WAN始终会起作用。
如果你在一个好管道的同一个骨干上,事情就会很快。
总之,是的,你可以使用BCP。这对于快速工作来说非常棒。任何复杂的错误处理都应该通过SSIS完成。
祝你好运,