SQLCMD Restore 没有恢复所有存储过程
SQLCMD Restore is not restoring all sprocs
作为程序安装的一部分,我正在使用以下命令来恢复数据库。
SqlCmd -S .\<SqlInstance> -h -1 -U <username> -P <password> -Q "RESTORE DATABASE <Database> FROM DISK=<FilePath>"
当我运行这个命令时,数据库恢复成功,但是有一个存储过程不存在。但是,当我使用相同的文件并通过 SSMS 恢复数据库时,存储过程确实存在并且数据库恢复正确。这是两种恢复数据库的方法之间的唯一区别,我无法手动管理每个安装,因为这将安装到 300 多台机器上。
如果我可以提供任何其他信息以进行澄清,我很乐意提供。
编辑:
根据评论,我发现正在执行 T-SQL 命令
USE [master]
RESTORE DATABASE [ErplyAnalysis] FROM DISK = N'<FilePath>' WITH FILE = 2, NOUNLOAD, STATS = 5
GO
您在不同的命令中恢复不同的备份集。如果我们只看您的 2 条陈述:
RESTORE DATABASE <Database> FROM DISK=<FilePath>
然后在 SSMS 中:
RESTORE DATABASE [ErplyAnalysis] FROM DISK = N'<FilePath>' WITH FILE = 2, NOUNLOAD, STATS =
在 SSMS 中通知您 FILE = 2
。
默认情况下,如果 FILE
被省略,那么它将使用其默认值 1
(参见 RESTORE Arguments (Transact-SQL))。因此,在 sqlcmd
中,您正在恢复旧版本的数据库。
您有 2 组,因为您在创建备份时没有重新初始化备份。这不是问题,但这意味着您需要确保检查需要为 FILE
传递哪个值是您正在使用备份集。
作为程序安装的一部分,我正在使用以下命令来恢复数据库。
SqlCmd -S .\<SqlInstance> -h -1 -U <username> -P <password> -Q "RESTORE DATABASE <Database> FROM DISK=<FilePath>"
当我运行这个命令时,数据库恢复成功,但是有一个存储过程不存在。但是,当我使用相同的文件并通过 SSMS 恢复数据库时,存储过程确实存在并且数据库恢复正确。这是两种恢复数据库的方法之间的唯一区别,我无法手动管理每个安装,因为这将安装到 300 多台机器上。
如果我可以提供任何其他信息以进行澄清,我很乐意提供。
编辑:
根据评论,我发现正在执行 T-SQL 命令
USE [master]
RESTORE DATABASE [ErplyAnalysis] FROM DISK = N'<FilePath>' WITH FILE = 2, NOUNLOAD, STATS = 5
GO
您在不同的命令中恢复不同的备份集。如果我们只看您的 2 条陈述:
RESTORE DATABASE <Database> FROM DISK=<FilePath>
然后在 SSMS 中:
RESTORE DATABASE [ErplyAnalysis] FROM DISK = N'<FilePath>' WITH FILE = 2, NOUNLOAD, STATS =
在 SSMS 中通知您 FILE = 2
。
默认情况下,如果 FILE
被省略,那么它将使用其默认值 1
(参见 RESTORE Arguments (Transact-SQL))。因此,在 sqlcmd
中,您正在恢复旧版本的数据库。
您有 2 组,因为您在创建备份时没有重新初始化备份。这不是问题,但这意味着您需要确保检查需要为 FILE
传递哪个值是您正在使用备份集。