【问题标题】:IIS5 - ODBC - Data source name not found and no default driver specifiedIIS5 - ODBC - 未找到数据源名称且未指定默认驱动程序
【发布时间】:2011-07-30 00:01:41
【问题描述】:

我在使用 IIS 的 ODBC 连接时遇到了一些问题。
这是我的配置:

  • Windows XP 上的 IIS 5
  • ASP.NET 2.0
  • 甲骨文 9
  • VS 2005

当我尝试在 IIS 上使用我的 Web 应用程序时,我遇到了以下异常:
错误 [IM002] [Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序
但是,当我在VS2005中像网站一样使用它时,我没有任何错误。

所以,我会尝试使用以下代码制作一个非常小的应用程序:

using System;
using System.Data;
using System.Data.Odbc;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        OdbcConnection con = new OdbcConnection();
        con.ConnectionString = "DSN=<MyDSN>;Uid=<LOGIN>;Pwd=<PASSWORD>";

        IDbCommand com = new OdbcCommand();
        com.CommandText = "select sysdate from dual;";
        com.CommandType = CommandType.Text;
        com.CommandTimeout = 30;
        com.Connection = con;

        try
        {
            con.Open();
            Response.Write(com.ExecuteScalar());
        }
        finally
        {
            if (con.State == ConnectionState.Open)
                con.Close();
        }
    }
}

它在 VS 的 Web 服务器上运行良好(即:http://localhost:3715/Web/Default.aspx),但我在 IIS 上使用它时遇到了同样的异常(IM002)(即:http://localhost/Tester/default.aspx)。
我的 DSN 在“ODBC 数据源管理器”中声明,并且在我测试连接时运行良好……

ASPNET 帐户与我的用户帐户(管理员)在同一个组中。
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC 和 ASPNET 帐户的完整权利 HKEY_CURRENT_USER\Software\odbc 键。
我读过这个post,但没有任何作用......

我会在 stackoverflow(搜索、相关问题等)、谷歌上寻找答案……但我没有找到可行的解决方案……
有没有人有想法?...
我的错在哪里?...

更新:2011/04/06
到目前为止我做了什么:

  • 跟踪 ODBC:在 VS 的 Web 服务器上,我得到了日志;但在 IIS 上,没有...
  • 系统和用户 DSN 填写相同的信息
  • 允许 ASPNET、IUSR_XXX、IWAN_XXX 和所有用户(原文如此……)帐户拥有以下权限:%ORACLE_HOME%、HKEY_LOCAL_MACHINE\SOFTWARE\ODBC、HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE

Windows、VS 和 IIS 都是 32 位的(因此,没有 c:\windows\syswow64)。

检查 PATH 值,并将 %ORACLE_HOME% 放在首位。

每次我进行修改时都会重置 IIS,我的计算机会重新启动两次。

但是,现在,我收到了这条消息:
错误 [IM003] 由于系统错误 998 (Oracle dans OraHome92),无法加载指定的驱动程序。

我终于找到了... 管理员已安装所有驱动程序,仅供用户使用...
我会创建一个系统环境变量 ORACLE_HOME...
只有一个用户 var :s

感谢您的帮助。
由于系统/用户之间的差异,我验证了 Garry M. Biggs 的答案......

【问题讨论】:

    标签: visual-studio-2005 odbc c#-2.0 oracle9i iis-5


    【解决方案1】:

    有这个问题..
    最好的解决方案是重新安装您的 odbc 驱动程序...为我工作..
    您系统中的注册表项可能已被篡改。

    我做了一个完整的卸载并重新安装..为我工作..蹩脚但快速的解决方案。

    【讨论】:

      【解决方案2】:

      确保您已创建系统 DSN 而不是用户 DSN。

      IIS 将作为系统服务运行,因此无权访问用户注册表项...

      【讨论】:

        【解决方案3】:
        1. 可能您的系统是 64 位版本 Windows 和 IIS 是 64 位的,但是 VS 是32位吗?如果是这样,看看我的 答案: odbc connection string dosen't work on windows 7

        2. 如果您可以从一个环境连接而不是从另一个环境连接,则启用 ODBC 跟踪并比较日志文件。 MS 将其描述为:http://support.microsoft.com/kb/274551

        【讨论】:

          猜你喜欢
          • 2011-11-24
          • 2011-06-02
          • 2018-07-10
          • 1970-01-01
          • 2016-07-08
          • 1970-01-01
          • 1970-01-01
          • 2014-12-23
          • 2018-02-12
          相关资源
          最近更新 更多