的SQL Server 2005/2008,DB =用戶=架構=所有者= '約翰',ASP.net 2.0.50727,VB,IIS7SQL服務器「找不到存儲的過程,而不架構名稱
我將網站從一臺服務器移動到另一臺。這段代碼在SQL Server 2005的舊服務器上運行良好。
Dim sqlCmdVehicle As SqlCommand = New System.Data.SqlClient.SqlCommand("SP_Name", sqlConn)
Dim dtVehicle As New DataTable
With sqlCmdVehicle
.Parameters.AddWithValue("FullStockNo", "N102010")
.CommandType = CommandType.StoredProcedure
End With
sqlConn.Open()
sqlAdapter.SelectCommand = sqlCmdVehicle
sqlAdapter.Fill(dtVehicle)
數據庫在新服務器上備份併成功恢復。當我嘗試用新的SQL Server 2008上運行我得到了一個錯誤:
Could not find stored procedure 'SP_Name'. pointing at last line.
我可以看到「MS SQL管理工作室」不是dbo.SP_Name但John.SP_Name
當我改變程序
System.Data.SqlClient.SqlCommand("SP_Name", sqlConn)
到
System.Data.SqlClient.SqlCommand("John.SP_Name", sqlConn)
一切運作良好,但它與其他所有的程序和同樣的很多這樣的地方在代碼:(
我得到http://msdn.microsoft.com/en-us/library/ms189915.aspx,但調用者的默認架構是正確的。 再一次,所有在舊箱子上運作良好。
我應該在SQL中修復哪些內容以允許在沒有明確提到的用戶/模式名稱的情況下運行SP?
謝謝。
=======================================
不幸的是,我沒有找到好的解決方案。我採用的方式是將整個項目的SP_Name替換爲John.SP_Name。感謝所有參與者。
從您發佈的幫助文件'的SQL Server 2008系統的匹配過程名稱時使用調用數據庫歸類。因此,您應該始終在應用程序中使用系統過程名稱的確切大小寫。 ' – JonH
:例如,如果在具有區分大小寫的歸類的數據庫的上下文中執行該代碼將失敗「例如,如果在具有區分大小寫的歸類的數據庫的上下文中執行該代碼將失敗:」 - 評論結束或我看不到結尾。 我剛剛檢查**登錄**(不是用戶)約翰,發現沒有映射到約翰DB。我可以標記複選框,正確的用戶名和模式apear,按'確定',再次打開此登錄,並查看此複選框是否乾淨。沒有錯誤信息,日誌中沒有錯誤。請指教。 – Putnik
@JonH「例如,如果在具有區分大小寫的排序規則的數據庫的上下文中執行,則此代碼將失敗:」 - 並且註釋已結束或我看不到結尾。 – Putnik