我有一个6 6GB的*.sql脚本备份文件,当我加载到数据库时:
sqlcmd -S .\SQLEXPRESS -U SA -d testdbb -i whole_DB_backup.sql -o result.log完成这个脚本需要几天的时间。相反,对于同一数据库的*.bak备份文件,从SQL Server Management Studio内部加载到数据库服务器只需要5分钟。幕后有什么问题吗?如何加快sqlcmd恢复操作?
发布于 2021-11-11 14:35:48
原因是您不是在加载6G备份,而是在运行6G SQL脚本。每个INSERT、每个CREATE TABLE、UPDATE、SELECT等等都必须由SQL Server解析,为每个语句生成一个查询计划,并且几乎可以肯定的是,几乎每个SQL语句都不会被缓存--这不会进入事务开销和运行SQL时需要做的其他事情。
另一方面,除了从.bak创建一个完整的数据库所需的开销之外,在大多数情况下,执行RESTORE并不需要处理任何这些问题。
基本上,这个过程会很慢,唯一的解决方法是编写一个脚本来解析.SQL文件,并将其转换为您可以在BCP或其他地方使用的文件。只需运行脚本并咬紧牙关。
https://stackoverflow.com/questions/69908753
复制相似问题