sql >> Base de Datos >  >> RDS >> Sqlserver

OPENQUERY arroja un error cuando se usa con WIN2K8\SQL2K12

Debe encerrar los valores DATETIME entre comillas simples. Y dado que su consulta está en una cadena en sí misma, esas comillas simples deben duplicarse / escaparse de la siguiente manera (y probablemente también debería poner el valor del primer parámetro en comillas simples con escape, ya que es claramente una cadena).

También debe calificar completamente el nombre del procedimiento almacenado con [DatabaseName].[SchemaName]. .

Y dado que el vcs_gauge proc utiliza SQL dinámico, debe especificar WITH RESULT SETS cláusula. Para obtener más información sobre esta cláusula, consulte la página de MSDN para EJECUTAR .

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} );
             ');