的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