恢复数据库后无效的对象名称

时间:2013-05-12 15:48:17

标签: c# sql sql-server restore

我有我的c#应用程序,我想使用我的应用程序恢复数据库。我的sql代码是这样的:

alter database SSDPrototypeV3 set offline with rollback immediate
restore database SSDPrototypeV3
from disk = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Backup\dustinepogi.bak'
alter database SSDPrototypeV3 set online

当我在我的应用程序上运行它时,它成功恢复了我的数据库。但是当我尝试运行一个sql查询(比如一个select语句)时,它说我有一个无效的对象名,特别是在我执行我的select语句的表上。但是,如果我在关闭后重新加载我的应用程序,它将完全恢复。我怎么能摆脱这个问题?

2 个答案:

答案 0 :(得分:1)

假设您正在使用SqlClient(并且您正在使用连接池):

  • 首先切换到主人
  • 进行恢复
  • 清理连接池:使用SqlConnection.ClearAllPools(清除提供程序的所有池)或ClearPool(仅清除与特定连接字符串关联的池)
  • 对原始数据库运行命令

而且,希望你走了

答案 1 :(得分:0)

数据库连接具有当前数据库,执行所有查询。连接字符串的初始数据库参数确定打开连接时使用的当前数据库。

我假设当您使master数据库脱机时,当前数据库会更改回SSDPrototypeV3。您有两种方法可以解决此问题:

  • 执行use SSDPrototypeV3
  • 更改当前数据库
  • 关闭并重新打开连接。