Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

OPENQUERY genera un errore se utilizzato con WIN2K8\SQL2K12

È necessario racchiudere i valori DATETIME tra virgolette singole. E poiché la tua query è in una stringa stessa, quelle virgolette singole devono essere raddoppiate/escape come segue (e probabilmente dovresti anche inserire il valore del primo parametro in virgolette singole con escape poiché è chiaramente una stringa).

Dovresti anche qualificare completamente il nome della procedura memorizzata con [DatabaseName].[SchemaName]. .

E dal momento che vcs_gauge proc utilizza Dynamic SQL, è necessario specificare il WITH RESULT SETS clausola. Per ulteriori informazioni su questa clausola, vedere la pagina MSDN per EXECUTE .

SELECT *
INTO #tmpTable
FROM OPENQUERY([WIN2K8\SQL2K12],
             N'EXEC [DatabaseName].[SchemaName].vcs_gauge
                      @gauge_name = ''vs1_bag'',
                      @first_rec_time = ''2014-09-01 09:00:00'',
                      @last_rec_time = ''2014-09-01 10:00:00''
               WITH RESULT SETS ( { column_specification} );
             ');