大家好,
我在連接到數據庫後創建變量(或引用)時遇到問題。 我想創建變量康恩我以後可以用它來運行不同的查詢。 然而,一開始我需要創建 2 個連接,因為我需要來自不同數據庫的數據,但在同一個 SQL 服務器上(需要相同的用戶名和密碼)。 對於這兩個連接,我需要為給定的用戶名提供兩次密碼。 我想提供一次,最好是在創建 conn 變量期間提供。
後來,我想使用之前創建的 conn 變量執行 INSERT 查詢以僅更新一個單元格,但沒有成功。 JMP 日誌顯示使用“工程師”用戶名建立與數據庫的連接時出現問題,並指示我創建 conn 變量的行:
[Microsoft][ODBC SQL Server 驅動程序][SQL Server] 用戶“工程師”登錄時出錯。
但是,使用相同的用戶名,我可以成功執行兩個“新 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);