【问题标题】:Invalid object name after restoring a database还原数据库后对象名称无效
【发布时间】:2013-05-12 15:48:16
【问题描述】:

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

【问题讨论】:

    标签: c# sql sql-server restore


    【解决方案1】:

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

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

    而且,希望你走吧

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 我已经尝试关闭我的应用程序上的连接,并将其切换到 master,但我仍然遇到同样的问题/错误。
      • @DustineTolete:你不应该切换到master,你应该切换到你的数据库! select * from SSDPrototypeV3.dbo.someTable 有效吗?
      猜你喜欢
      • 2011-10-06
      • 2015-07-28
      • 2014-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多