2010-05-26 86 views
0

我正在将经典ASP Web应用程序迁移到新服务器。数据库后端正在从SQL Server 2000迁移到SQL Server 2008,并且该应用程序正在从Win2000 x86迁移到Win2003R2 x64。我在应用程序内的每个存储过程调用中都收到上述错误。用于SQL Server的Microsoft OLE DB提供程序错误“80040e14”找不到存储过程

我已经验证:

  • 是,SQL用户设置,使用正确的用户名和密码,
  • 是,SQL用户在数据库
  • 执行对存储过程的权限是,我已将TypeLib引用更新为新的UUID。是的,我已通过SSMS使用SQL用户标识登录到数据库,它可以在SSMS中看到并执行存储过程,但不能从Web应用程序中执行。
  • 是的,SQL用户将数据库设置为其默认数据库。

最令人沮丧的是它在DEV服务器上正常工作,但不在生产服务器上。我经历了每次IIS设置5次或6次,并且在两种环境中都设置了完全相同的Web应用程序。唯一的区别是连接字符串中的数据库服务器名称(DEV vs prod)

编辑:我也试过在dev数据库服务器上指向prod web box,并得到相同的错误,所以我相当确定问题不在数据库端。

+0

你检查过生产箱和SQL服务器之间的Windows防火墙和其他防火墙吗?您将需要打开端口1433和1434(可能还有135)。 – Oded 2010-05-26 13:55:14

+0

它实际上使用不同的自定义端口。然而,我相信这不是问题,因为在同一个prod框上有几个ASP.NET应用程序,它们连接到相同的prod SQL框上的数据库,工作得很好。 – BBlake 2010-05-26 14:00:43

回答

0

你确定你真的连接到你认为你的实例和数据库(在App中)吗?它只会在连接字符串中使用错误的数据库来覆盖用户的默认数据库。

您可以执行类似的连接部分内嵌SQL:

SELECT @@SERVERNAME AS SERVERNAME 
    ,DB_NAME() AS [DB_NAME] 
    ,CURRENT_USER AS [CURRENT_USER] 
+1

是的,我是个白痴。该应用程序连接到SQL框上的两个不同的数据库,并且我以一种复制/粘贴愚蠢的方式将global.asa文件中的两个连接字符串都设置为相同的名称,因此它为每个连接使用第二个连接字符串。找不到存储的特效,因为它正在查看错误的数据库。谢谢.... – BBlake 2010-05-26 14:29:49

+1

@BBlake我们都是白痴 - 这就是我们来这里的原因。 – 2010-05-26 14:31:29

0

这可能是模式。您是否在您使用的数据库中设置了用户的默认模式?

相关问题