모두들 안녕,
데이터베이스에 연결한 후 변수(또는 참조) 생성에 문제가 있습니다. 변수를 만들고 싶었습니다. 연결 나중에 다른 쿼리를 실행하는 데 사용할 수 있습니다. 그러나 처음에는 서로 다른 데이터베이스의 데이터가 필요했지만 동일한 SQL 서버(동일한 사용자 이름과 암호가 필요함)에서 2개의 연결을 만들어야 했습니다. 두 연결 모두에 대해 주어진 사용자 이름에 대해 두 번 암호를 제공해야 합니다. 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);