0

我们将应用程序的一部分作为 Windows 服务运行,它需要能够访问 DSN 才能通过 ODBC 导入。但是,通过反复试验发现它可以访问的 DSN 似乎存在很多限制。例如,它似乎无法 1. 访问系统 DSN,除非运行该服务的帐户具有管理员权限。(尝试连接时出现访问被拒绝错误) 2. 访问由其他用户创建的用户 DSN(这是可以理解的)。3.通过网络访问文件DSN

我读过文件 DSN 的目的是允许其他计算机使用它进行连接,但是我似乎无法做到这一点。

任何人都知道,或者知道在哪里可以找到使用 Windows 服务时访问 DSN 的所有规则和限制。谢谢

4

3 回答 3

1

我想你自己已经发现了三个主要规则。:-)

除了您可能不需要您的服务帐户的管理员权限。IANANA(我不是网络管理员),但您的服务帐户可能只需要对 ODBC 文件或目录之一的读取权限。

于 2008-09-24T15:12:38.457 回答
1

这介于您的 #1 和 #2 之间:有时还需要正确的文件权限。我曾经在连接到 DB2 DSN 的 Vista 机器上遇到麻烦,因为无论出于何种原因(可能是写出临时文件;虽然我不知道为什么它会在这个位置而不是用户特定的位置做这样的事情) ,驱动程序需要对 IBM 安装客户端二进制文件和库的目录的写访问权,该目录由管理员完成,位于 C 驱动器的根目录中。

于 2008-11-09T23:30:54.133 回答
0

您无法使用服务连接到映射驱动器。映射的驱动器必须与称为桌面堆的内存进行交互,它跟踪桌面上的图标。服务无权访问该内存。如果您必须使用 dsn,请创建一个 systemdsn。更好的办法是使用连接字符串并将其存储在 app.config 中,并使用加密 API 来加密用户名和密码。

于 2009-08-04T22:51:41.733 回答