Query SQL su origine dati ODBC/server SQL con tabelle temporaneeCara Comunità,
Sto costruendo uno script SQL in cui utilizzo tabelle temporanee sul server SQL. Lo script di esempio semplificato riportato di seguito (che funziona bene altrove) viene eseguito senza errori ma NON restituisce alcun dato (ad esempio, la tabella dati JMP non viene visualizzata).
query= "
CREATE TABLE #tmpTable (ID int PRIMARY KEY NOT NULL, WaferNum int NOT NULL);
INSERT INTO #tmpTable (ID, WaferNum) (
SELECT
ID,
WaferNum
FROM WareHouse
);
SELECT * FROM #tmpTable;
DROP TABLE #tmpTable;
";
dbc = Create Database Connection(
"DSN=DatabaseName; ... ; UID=email@abc.com;"
);
Execute SQL (dbc, query);
close database connection(dbc);
La mia successiva iterazione è stata quella di suddividere l'esecuzione come di seguito; questo trucco è stato menzionato in qualche thread.
query1= "
CREATE TABLE #tmpTable (ID int PRIMARY KEY NOT NULL, WaferNum int NOT NULL);
INSERT INTO #tmpTable (ID, WaferNum) (
SELECT
ID,
WaferNum
FROM WareHouse
);
";
query2= "
SELECT * FROM #tmpTable
DROP TABLE #tmpTable;
";
query3= "
DROP TABLE #tmpTable;
";
dbc = Create Database Connection(
"DSN=DatabaseName; ... ; UID=email@abc.com;"
);
Execute SQL (dbc, query1);
Execute SQL (dbc, query2, "Table");
Execute SQL (dbc, query3);
close database connection(dbc);
Ora la finestra di registro di JMP acquisisce i messaggi dal server SQL (senza dati restituiti): Nome oggetto non valido #tmpTable E Impossibile eliminare la tabella #tmpTable poiché non esiste.
Sto eseguendo JMP16. Tutti i consigli sono molto apprezzati.
Accesso ai datiIngegneria della qualità e dei processiRi: Query SQL su origine dati ODBC/server SQL con tabelle temporaneeSET NOCOUNT ON è davvero un'opzione strana.
Sono contento che abbia funzionato per te!
Ri: Query SQL su origine dati ODBC/server SQL con tabelle temporaneeCiao Bryan,
La tua soluzione IMPOSTA NESSUN CONTEGGIO SU; funziona alla grande!!! Sono stupito di quanto sia stata semplice la soluzione. Ho passato un po' di tempo a cercare la soluzione in vari forum e discussioni, ma nessuno ha suggerito questa.
Grazie mille;
Janne
Ri: Query SQL su origine dati ODBC/server SQL con tabelle temporaneeJane,
Se modifichi il tuo primo SQL in:
query= "SET NOCOUNT ON;
CREATE TABLE #tmpTable (ID int PRIMARY KEY NOT NULL, WaferNum int NOT NULL);
INSERT INTO #tmpTable (ID, WaferNum) (
SELECT
ID,
WaferNum
FROM WareHouse
);
SELECT * FROM #tmpTable;
DROP TABLE #tmpTable;
";
dbc = Create Database Connection(
"DSN=DatabaseName; ... ; UID=email@abc.com;"
);
Execute SQL (dbc, query);
close database connection(dbc);
Dovresti inserire la tabella in JMP.
L'aggiunta (nel caso in cui si fosse persa nel JSL) è:
IMPOSTA NESSUN CONTEGGIO SU;
https://docs.microsoft.com/en-us/sql/t-sql/statements/set-nocount-transact-sql?view=sql-server-ver15
-Bryan
Ri: Query SQL su origine dati ODBC/server SQL con tabelle temporaneeCiao Brian, grazie per aver segnalato il vecchio thread; davvero molto correlato. Problema affascinante!
Ho eseguito un po' di debug esaminando i log sul test SQL Server che ho creato sul mio laptop. La prima nota è che la stessa query (con tabelle temporanee o variabili di tabella) eseguita utilizzando la stessa connessione DNS/driver ODBC in Excel funziona correttamente ma non da JMP. Quando si esamina il traffico in entrata sul server, Excel invia la stringa di query così com'è (ad es SELEZIONA * DA Tabella ) ma da JMP la query arriva nel formato:
declare @p1 int
set @p1=1
exec sp_prepexec @p1 output,NULL,N'SELECT * FROM Table'
select @p1
Credo che l'istruzione SQL sia racchiusa con elementi extra dal driver ODBC. Soprattutto il sistema procedura memorizzata sp_prepexec sembra essere quello che causa problemi. Può o meno essere correlato alle virgolette; difficile dire cosa realmente accada all'interno di quella procedura.
Ok, è un problema del driver ODBC. Tuttavia, per quanto ne sappiamo, ODBC consente anche l'esecuzione diretta. Credo che questo sia ciò che accade con Excel. Lo stesso potrebbe essere possibile anche con JMP? Link correlati alla coppia di seguito:
https://techcommunity.microsoft.com/t5/datacat/watch-out-those-prepared-sql-statements/ba-p/305074
https://docs.microsoft.com/en-us/sql/odbc/reference/develop-app/direct-execution-odbc?view=sql-server-ver15
Ri: Query SQL su origine dati ODBC/server SQL con tabelle temporaneeCiao Jannel,
Spero che non sia questo vecchio problema Importazione di SQL utilizzando una tabella temporanea . Si spera che qualcun altro sul forum abbia utilizzato le tabelle temporanee di SQL Server più recentemente con JMP.
Brian Corcoran
Sviluppo JMP