你好,
我在与整个组织共享我创建的 JMP 脚本时遇到了问题。问题源于我用于连接我们的 SQL 数据库的凭据与其他人用于连接同一数据库的凭据不同。例如,我可以在我的计算机上运行一个查询来连接到服务器“SQLServer”上的数据库“Database”,该查询将如下所示:
Open Database(
"DSN=SQLServer;Trusted_Connection=Yes;APP=JMP;WSID=MYWSID;DATABASE=Database;",
"SELECT * FROM [].Table"
)
但是,在我同事的机器上查询同一张表的查询如下所示:
Open Database(
"DSN=Database;Trusted_Connection=Yes;APP=JMP;WSID=MYWSID;DATABASE=Database;",
"SELECT * FROM [].Table"
)
我理解这与每个用户机器上最初设置的数据库连接方式有关,因此在我的组织中,在 JMP 中连接到同一数据库的配置相当多。每当我需要创建供一大群人使用的 JMP 脚本时,这就很难考虑几个人不同的数据库凭据。
我已经设计出一种在最初运行脚本时检查用户凭据的方法,但是这种方法只有当我知道自己和脚本接收者在其机器上使用的确切凭据时才有效。这种方法的工作原理是,我通过使用上面描述的两组不同的凭据运行两个简单快捷的查询来启动脚本。根据哪个查询返回表,我可以从两个包含我想要运行的实际脚本的不同表达式中进行选择,其中每个表达式包含相同的脚本,只是数据库连接处的凭据集不同。问题是,如果凭据集超过两组,那么这种方法仍然不适用于所有人,而且如果我必须在两个或更多地方而不是一个地方修复错误,那么修复脚本的错误也会变得困难。
长话短说,我想创建一个脚本,供拥有不同数据库凭据的多个人使用。JMP 16 中是否有任何方法可以检查用户的数据库凭据,并根据运行脚本的每个不同用户的凭据动态更改 SQL 查询字符串?
谢谢
您正在寻找的是无 DSN 的连接
看起来像:
“DATABASE=[数据库名称];DRIVER={SQL Server Native Client 11.0};SERVER=[服务器名称]”
对于你来说,它可能看起来像:
“DRIVER={SQL Server Native Client 11.0};SERVER=[服务器名称];Trusted_Connection=Yes;APP=JMP;WSID=MYWSID;DATABASE=数据库;”
不同之处在于,您将连接信息添加到连接字符串,而不是使用 dsn。
具体来说,DRIVER= 和 SERVER= 信息