Hallo zusammen,
Ich habe ein Problem mit der Erstellung einer Variablen (oder Referenz) nach dem Herstellen einer Verbindung zu einer Datenbank. Ich wollte eine Variable erstellen Anschl die ich später zum Ausführen verschiedener Abfragen verwenden könnte. Zu Beginn musste ich jedoch 2 Verbindungen erstellen, da ich Daten aus unterschiedlichen Datenbanken, aber auf demselben SQL-Server benötigte (gleicher Benutzername und gleiches Passwort erforderlich). Für beide Verbindungen muss ich für einen bestimmten Benutzernamen ein doppeltes Passwort angeben. Ich möchte es einmal und vorzugsweise während der Erstellung der Conn-Variablen bereitstellen.
Später wollte ich die INSERT-Abfrage ausführen, um nur eine Zelle mithilfe der zuvor erstellten Conn-Variablen zu aktualisieren, und das ohne Erfolg. Das JMP-Protokoll besagt, dass beim Herstellen einer Verbindung zur Datenbank mit dem Benutzernamen „engineer“ ein Problem aufgetreten ist, und gibt die Zeile an, in der ich die Conn-Variable erstelle:
[Microsoft][ODBC SQL Server Driver][SQL Server] Fehler bei der Anmeldung für den Benutzer „engineer“.
Allerdings kann ich mit demselben Benutzernamen beide „Neue SQL-Abfragen“ erfolgreich ausführen (nachdem ich für jede Abfrage ein Passwort angegeben habe).
Die Evalinsert-Funktion scheint wie gewünscht zu funktionieren.
Ich würde mich über Hinweise freuen, wie ich das Problem lösen kann und was mir fehlt. Mit freundlichen Grüßen.
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);
Hallo pmroz,
Danke für Ihre Unterstützung! Es funktioniert perfekt und ist viel einfacher. Es gab jedoch immer noch Probleme beim Erstellen der Conn-Variablen. Was ich getan habe, ich habe einen Teil entfernt UID=Ingenieur aus der Parameterkette, da ich denke, dass die Authentifizierung auf der Protokollierung im internen Netzwerk basiert und sich die vorherigen Benutzernameneinstellungen merkt. Außerdem habe ich den Namen der Datenbank am Ende der Kette entfernt, da er in der Abfrage bereitgestellt wird. Mit freundlichen Grüßen.
conn = Create Database Connection ("ODBC:Description=Server_Database;DRIVER=SQL Server;SERVER=Server;PWD=%_PWD_%;APP=JMP;WSID=DDPC0283;");
Es scheint, dass der Abfrage-Generator seine eigene Datenbankverbindung verwendet.Dieser Code verwendet SQL AUSFÜHREN könnte einfacher sein und erfordert nur eine Verbindung zur Datenbank:
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);