IIS5 - ODBC - 未找到数据源名称且未指定默认驱动程序

发布于 2024-10-29 17:51:52 字数 2518 浏览 1 评论 0原文

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

  • Windows XP 上的 IIS 5
  • ASP.NET 2.0
  • Oracle 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 键。
我读过这篇帖子,但没有任何作用...

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

更新: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 的答案......

I’ve got some problem using an ODBC connection with IIS.
Here is my config :

  • IIS 5 on Windows XP
  • ASP.NET 2.0
  • Oracle 9
  • VS 2005

When I try too use my web application on IIS, I’ve got the following exception:
ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
BUT, when I use it like a web site in VS2005, I didn’t have any error.

So, I’d try to make a very little app, with the following code:

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();
        }
    }
}

It work fine on VS’s web server (ie: http://localhost:3715/Web/Default.aspx), but I’ve got the same exception (IM002) when I use it on IIS (ie: http://localhost/Tester/default.aspx).
My DSN is declared on the “ODBC Data Source Administrator” and work well when I test the connection…

The ASPNET account is in the same group as my user account (Administrators).
Full right for ASPNET Account on HKEY_LOCAL_MACHINE\SOFTWARE\ODBC and
HKEY_CURRENT_USER\Software\odbc keys.
I've read this post, but nothing work...

I'd look after an answer on stackoverflow (search, related questions, etc.), google...but I didn't found a working solution...
Is there anyone who have an idea?...
Where is my mistake?...

UPDATE: 2011/04/06
What I’ve done so far:

  • Tracing for ODBC: on VS’Web server, I got log; but on IIS, none...
  • System and User DSN are filled with the same information
  • Allow ASPNET, IUSR_XXX, IWAN_XXX, and all users (sic…) accounts full rights to: %ORACLE_HOME%, HKEY_LOCAL_MACHINE\SOFTWARE\ODBC, HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE

Windows, VS and IIS are all for 32 bits (so, there is no c:\windows\syswow64).

Check PATH value, and put %ORACLE_HOME% first.

IIS was reset each time I do a modification, my computer reboot twice.

But, now, I’ve got this message:
ERROR [IM003] Specified driver could not be loaded due to system error 998 (Oracle dans OraHome92).

And I finally found...
The administrators have install all the drivers in order to be used by the user only...
I’d create a system env var ORACLE_HOME...
There was only a user var :s

Thanks for your help.
I validate the Garry M. Biggs' answer because of the difference between system/user...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

¢好甜 2024-11-05 17:51:52

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

我完全卸载并重新安装..对我有用..蹩脚但快速的解决方案。

Had this problem ..
The best solution is to re install your odbc driver ... worked for me ..
the registry entries in your system might have got tampered .

I did a complete uninstall and re install .. worked for me .. lame but quick solution .

从此见与不见 2024-11-05 17:51:52

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

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

Make sure you have created a System DSN rather than a User DSN.

IIS will be running as a System service and therefore does not have access to User registry entries...

少女净妖师 2024-11-05 17:51:52
  1. 也许您的系统是64位版本
    Windows和IIS是64位的,但是VS
    是32位的吗?如果是的话,看看我的
    答案:
    odbc 连接字符串在 Windows 7 上不起作用

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

  1. Maybe your system is 64 bit version
    of Windows and IIS is 64 bit, but VS
    is 32 bit? If so, look at my
    answers:
    odbc connection string dosen't work on windows 7

  2. If you can connect from one environment and not from the other then enable ODBC tracing and compare log files. MS described it at: http://support.microsoft.com/kb/274551

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文