我正在使用执行以下操作的 bat 文件将一些数据导入 SQL Server 2008 R2:
sqlcmd -E -S fooserver -d fooDB -e -i foo.sql -o foo.output
sqlcmd -E -S fooserver -d fooDB -e -i bar.sql -o bar.output
sqlcmd -E -S fooserver -d fooDB -e -i baz.sql -o baz.output
sqlcmd -E -S fooserver -d fooDB -e -i qux.sql -o qux.output
当我指向开发人员版本实例时,一切正常。然而,如果我指向一个 SQL Express 实例,前几个命令运行正常,而下一个命令失败并出现身份验证错误:
Login failed for user 'MYDOMAIN\FOOUSER'. Reason: Failed to open the explicitly specified database. [CLIENT: <local machine>]
但是,如果我一次运行一个上述命令,那么它们都运行没有错误。
另外值得注意的是,目标数据库短暂进入恢复模式(在 SQL Server 管理控制台中,在数据库旁边可以看到“恢复中”),因此登录失败似乎是因为目标数据库暂时处于恢复模式。我将重申此问题不会发生在开发人员版本实例上。
针对 SQL Express 2008 R2 RTM 和 SP2 观察到的相同问题(尚未测试 SP1)。