2013-05-12 86 views
0

我有我的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语句的表上。但是,如果我在关闭后重新加载应用程序,它将完全恢复。我怎样才能摆脱这个问题?

回答

1

假设你正在使用SqlClient(和你正在使用连接池):

  • 开关掌握第一
  • 做你恢复
  • 清洁你的连接池:使用SqlConnection.ClearAllPools(清除提供者的所有池)或ClearPool(只清除与特定连接字符串关联的池)
  • 运行命令对原数据库

,并希望您去

0

数据库连接有一个当前数据库所有查询都是针对执行的。连接字符串的初始数据库参数确定打开连接时使用的当前数据库。

我假设当您将SSDPrototypeV3数据库脱机时,当前数据库将更改回master。你有两个选择,以解决这个问题:

  • 改变当前数据库重新通过执行use SSDPrototypeV3
  • 关闭并重新打开连接。
+0

我试过关上我的应用程序的连接,并打开它掌握,但我仍然得到了同样的问题/错误。 – 2013-05-12 16:10:04

+0

@DustineTolete:你不应该切换到'master',你应该切换到你的数据库! 'select * from SSDPrototypeV3.dbo.someTable'工作吗? – Heinzi 2013-05-12 16:49:04

相关问题