2

我正在切換我的Web主機並備份了我的數據庫。由於我的新主機受到一些限制,我無法恢復.bak文件並必須發送給他們,以便他們恢復它。一旦他們恢復了它,我跑我的應用程序獲取此恢復SQL Server 2008數據庫後「無效的對象名稱」

System.Data.SqlClient.SqlException: Invalid object name "<table name>"

每當我試圖從應用程序查詢表。但是,通過使用相同用戶名和密碼的管理工作室登錄並查詢表格,我沒有任何問題。

我運行一個MVC 3網站與SQL Server 2008

有誰知道爲什麼試圖運行我的應用程序時,我可能會得到這些例外?

編輯:

一些詳細信息:

我是用我的舊數據庫的用戶名是Kimpo54321所以我創造了前綴得到這樣Kimpo54321所有表。所以我嘗試將它添加到我的Web應用程序中的第一個查詢中,所以它將是SELECT * FROM Kimpo54321.<tablename>,並且查詢通過而沒有異常。

現在我不必在每個表名前面加上前綴在我的應用程序中,我不想將它應用於我的所有查詢。有沒有辦法來解決這個問題?

編輯:

我跑這讓爲每個表ALTER架構線,改變了一切dbo及其最後的工作。日Thnx阿龍指着我在正確的方向找到了答案,

SELECT 'ALTER SCHEMA dbo TRANSFER ' + s.Name + '.' + o.Name 
    FROM sys.Objects o 
    INNER JOIN sys.Schemas s on o.schema_id = s.schema_id 
    WHERE s.Name = 'yourschema' 
    And (o.Type = 'U' Or o.Type = 'P' Or o.Type = 'V') 

回答

4

您是否參考模式(例如dbo.table與表)?新主機上的用戶有可能與您的舊主機有不同的默認模式。你如何「查詢表」 - 右鍵單擊​​並選擇其中一個選項,或使用應用程序發出的完全相同的查詢?

+0

啊,是的,編輯我的問題,而你的答案發布。這一切都開始有意義了,現在我剛剛右鍵單擊管理工作室選擇top 1000中的表格,實際上它將表格名稱與舊架構(kimpo54321)作爲前綴。我嘗試單擊管理工作室菜單樹中的登錄文件夾,然後單擊試圖在用戶映射中添加kimpo54321模式。我收到一條錯誤消息「無法更改用戶dbo」,當我嘗試添加兩個模式時,什麼都沒有發生,默認模式仍然是dbo。這如何改變? – Kimpo

0

這可能是Web應用程序的用戶需要重新添加到還原的數據庫的問題。某些用戶在將數據庫恢復到其他SQL Server時不保留其權限。

相關問題