2013-05-12 46 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

相關問題