大家好,
连接到数据库后创建变量(或引用)时遇到问题。 我想创建变量康涅狄格州我稍后可以使用它来运行不同的查询。 然而,一开始,我需要创建 2 个连接,因为我需要来自不同数据库的数据,但位于同一 SQL 服务器上(需要相同的用户名和密码)。 对于这两个连接,我需要为给定的用户名提供两次密码。 我想提供一次,最好是在创建 conn 变量期间提供。
后来,我想使用之前创建的 conn 变量执行 INSERT 查询来仅更新一个单元格,但没有成功。 JMP 日志表示使用“engineer”用户名建立与数据库的连接时出现问题,并指示我创建 conn 变量的行:
[Microsoft][ODBC SQL Server 驱动程序][SQL Server] 用户“engineer”登录时出错。
但是,使用相同的用户名,我可以成功执行两个“新 SQL 查询”(在为每个查询提供密码后)。
evalinsert 函数似乎按预期工作。
我将不胜感激有关如何解决问题并指出我所缺少的内容的提示。 此致。
conn = Create Database Connection ("ODBC:Description=Server_Database;DRIVER=SQL Server;SERVER=Server;UID=engineer;PWD=%_PWD_%;APP=JMP;WSID=DDPC0283;DATABASE=Data_1;");
Param_Data = New SQL Query(
Version( 130 ),
//conn; //providing connection reference here instead of Connection (below) returns an error
Connection(
"ODBC:Description=Server_Database;DRIVER=SQL Server;SERVER=Server;UID=engineer;PWD=%_PWD_%;APP=JMP;WSID=DDPC0283;DATABASE=Data_1;"
),
QueryName("Data1"),
Select(
Column( "Param1", "t1"),
Column( "Param2", "t1"),
),
From( Table( "ParamData", Schema( "pi" ), Alias( "t1" ))),
);
Process_Data = New SQL Query(
Version( 130 ),
Connection(
"ODBC:Description=Server_Database;DRIVER=SQL Server;SERVER=Server;UID=engineer;PWD=%_PWD_%;APP=JMP;WSID=DDPC0283;DATABASE=Data_2;"
),
QueryName( "Data2" ),
Select(
Column( "Process1", "t2"),
Column( "Process1", "t2"),
),
From( Table( "ProcessData", Schema( "dbo" ), Alias( "t2" ))),
);
//sql query
sql_update = evalinsert(
"
UPDATE pi.ParamData
SET Param1 = '^combined_params^'
WHERE Process1 = '^selected_process^'
"
);
write(sql_update);
execute sql (conn, sql_update);
你好,
感谢您的支持! 它工作完美,而且简单得多。 但是,创建 conn 变量仍然存在问题。 我做了什么,我删除了一部分UID=工程师从参数链来看,因为我认为身份验证是基于登录到内部网络的,并且它会记住以前的用户名设置。 此外,我删除了链末尾的数据库名称,因为它是在查询中提供的。 此致。
conn = Create Database Connection ("ODBC:Description=Server_Database;DRIVER=SQL Server;SERVER=Server;PWD=%_PWD_%;APP=JMP;WSID=DDPC0283;");
查询生成器似乎使用它自己的数据库连接。这段代码使用执行SQL可能更简单,只需要一个与数据库的连接:
conn = Create Database Connection ("ODBC:Description=Server_Database;DRIVER=SQL Server;SERVER=Server;UID=engineer;PWD=%_PWD_%;APP=JMP;WSID=DDPC0283;DATABASE=Data_1;");
sql1 =
"SELECT t1.Param1, t1.Param2
FROM pi.ParamData t1";
param_data = execute sql(conn, sql1, "Data1");
sql2 =
"SELECT t2.Process1, t2.Process2
FROM dbo.ProcessData t2";
process_data = execute sql(conn, sql2, "Data2");
//sql query
// Need to load values in for combined_params and selected_process variables
sql_update = evalinsert(
"
UPDATE pi.ParamData
SET Param1 = '^combined_params^'
WHERE Process1 = '^selected_process^'
"
);
write(sql_update);
execute sql (conn, sql_update);
close database connection(conn);