我正在尝试在控制台应用程序中打开与DB2的连接。它工作正常。 当我在IIS中托管的服务中使用相同的代码时,它会为DB2引发错误。以下是错误详细信息。我在IIS中缺少一些权限吗?
dll:IBM.data.DB2.dll
代码:
DB2Connection db2Connection = new DB2Connection(connectionString);
DB2Command cmdSelectUsrNameAndPassword = new DB2Command(querySelectUsernameAndPassword, db2Connection);
cmdSelectUsrNameAndPassword.Connection.Open();
抛出:
SQL1159 DB2 .NET数据提供程序初始化错误,原因码10,标记0.0.0,9.7.3
如果我在控制台中尝试使用ODBC的DSN,它会起作用,但同样会在IIS中引发另一个错误。
OdbcConnection DbConnection = new OdbcConnection(DSNName);
DbConnection.Open();
抛出:
ASP.NET V4.0无权执行请求的命令或操作。
答案 0 :(得分:3)
猜测它与App池标识有关。我将应用程序池标识设置为“网络服务”,并在C:\ Program Files \ IBM \ SQLLIB \ BIN \ netf20_32 \ Worked neat中的“IBM.Data.DB.dll”上授予“网络服务”的完全权限。
答案 1 :(得分:1)
查看下面的IBM支持文档,其中概述了它发生的原因以及消息的含义http://www-01.ibm.com/support/docview.wss?uid=swg21413731。它帮助了我,添加到DB2USERS组允许我们的应用程序工作,可能比作为网络服务运行更好。
答案 2 :(得分:1)
安装IBM数据服务器客户端时,您没有取消选中启用操作系统安全性的选项。
因此,您需要将需要使用DB2客户端dll的用户添加到DB2USERS组,因为它在安装的最后一步中说明了。
如果您希望使用IIS应用程序池标识:" IIS AppPool \ DefaultAppPool"。将该用户添加到DB2USERS组。 DefaultAppPool->您的应用程序池标识名称
答案 3 :(得分:0)
我从IIS Express运行的应用程序遇到了同样的问题。尝试以管理员身份运行Visual Studio并解决问题。 版本: DB2客户端版本10.5, Visual Studio 2015。
答案 4 :(得分:0)
我在一个项目中遇到了非常相似的错误消息:
SQL1159 Initialization error with DB2 .NET Data Provider, reason code 10, tokens 0.0.0, 10.1.5
尝试了上面和在IBM文档站点上列出的所有解决方案,最终最终结果是DB2 Connect安装程序需要以管理员身份而不是以用户帐户身份运行。卸载并以管理员身份重新安装可以解决此问题。
以管理员身份运行安装程序还会解锁选项,例如关闭以前未提供的扩展安全性的功能。