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

4

2 回答 2

1

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

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

而且,希望,你走了

于 2013-05-12T17:14:33.150 回答
0

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

我假设当前数据库更改回master当您使SSDPrototypeV3数据库脱机时。您有两种选择来解决此问题:

  • use SSDPrototypeV3通过执行或更改当前数据库
  • 关闭并重新打开连接。
于 2013-05-12T15:54:23.090 回答