访问DSN的访问限制是什么
时间:2020-03-06 14:40:02 来源:igfitidea点击:
我们正在将应用程序的一部分作为Windows服务运行,它需要能够访问DSN才能通过ODBC导入。但是,通过反复尝试,似乎可以访问哪些DSN受到很多限制。例如,似乎它不能
1.除非正在运行该服务的帐户具有管理员特权,否则请访问系统DSN。 (尝试连接时出现"访问被拒绝"错误)
2.访问由其他用户创建的用户DSN(这是可以理解的)。
3.通过网络访问文件DSN
我已经读过文件DSN的目的是允许其他计算机使用它来连接,但是我似乎无法使它工作。
也没有人知道,或者知道我在哪里可以找到使用Windows服务时访问DSN的所有规则和限制。
谢谢
解决方案
我认为我们已经自己发现了三个主要规则。 :-)
除了我们可能不需要服务帐户的管理员特权之外。 IANANA(我不是网络管理员),但是服务帐户可能仅需要对ODBC文件或者目录之一的读取权限。
这在#1和#2之间:有时也需要正确的文件权限。我曾经在连接DB2 DSN的Vista机器上遇到麻烦,因为无论出于什么原因(也许写出临时文件;尽管我不知道为什么它会在这个位置而不是用户特定的位置上这样做) ,驱动程序需要对IBM安装客户端二进制文件和库的目录的写访问权,该目录由管理员完成,并且位于C驱动器的根目录中。
我们无法通过服务连接到映射的驱动器。映射的驱动器必须与称为桌面堆的内存进行交互,该内存会跟踪桌面上的图标。服务无法访问该内存。如果必须使用dsn,请创建一个systemdsn。最好使用连接字符串并将其存储在app.config中,并使用加密api加密用户名和密码。