nsis nsODBC 插件不接受所有参数

nsis nsODBC plugin not accepting all parameters

我正在使用 NSIS nsODBC 插件创建一个 systemdsn 条目。

当我调用如下所示的命令时,它会工作并创建我的系统 dsn odbc。

nsODBC::AddSysDSN "ODBC Driver 11 for SQL Server" "DSN=test" "server=localhost" "DATABASE=test" "Trusted_Connection=Yes"
Pop [=10=]

Pop $0 Returns "Successful" 在我的 ODBC 数据源管理器中,我看到了我的连接并且它有效。

但我需要使用用户名和密码创建我的系统 dsn,在论坛和网站上我看到他们说它应该如下所示:

nsODBC::AddSysDSN "ODBC Driver 11 for SQL Server" "DSN=test" "server=test" "DATABASE=test" "UID=test" "PWD=test"
Pop [=11=]

当我 运行 此命令弹出 $0 returns 文本 "error" 并且没有创建系统 dsn。

我已经检查了 SQL 服务器实例,它有测试数据库,一个名为 test 的登录帐户,它是一个系统管理员帐户,它处于混合模式身份验证。

关于我做错了什么关于为什么它不会创建带有用户名和密码的系统 dsn 的任何建议?

提前致谢 安迪

那个plug-in设计得很糟糕,因为它使用堆栈上的所有东西作为它的参数。它也是数据库 API 的一个非常薄的包装器,所以只要在调用之前您的堆栈是空的,那么问题很可能是 missing/wrong 参数而不是 plug-in 中的错误。

使用 "foo=1" "bar=baz" 之类的参数调用插件被“翻译”为 foo=1[=11=]bar=baz[=11=][=11=] ,这是您在 MSDN 上看到的,即 C/C++ 终止双空的语法key-pair 字符串.

为什么 Server 设置为 test 而不是 localhost

ConfigDSN 的 MSDN 页面上列出的代码说:

For example, to configure a data source that requires a user ID, password, and database name, a setup application might pass the following keyword-value pairs:

DSN=Personnel Data[=16=]UID=Smith[=16=]PWD=Sesame[=16=]DATABASE=Personnel[=16=][=16=]

也许配对顺序很重要,我不知道。