Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

OPENQUERY génère une erreur lorsqu'il est utilisé avec WIN2K8\SQL2K12

Vous devez placer les valeurs DATETIME entre guillemets simples. Et puisque votre requête est dans une chaîne elle-même, ces guillemets simples doivent être doublés/échappés comme suit (et vous devriez probablement aussi mettre la valeur du premier paramètre entre guillemets simples échappés car il s'agit clairement d'une chaîne).

Vous devez également qualifier entièrement le nom de la procédure stockée avec [DatabaseName].[SchemaName]. .

Et depuis le vcs_gauge proc utilise Dynamic SQL, vous devez spécifier le WITH RESULT SETS clause. Pour plus d'informations sur cette clause, veuillez consulter la page MSDN pour 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} );
             ');