Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

OPENQUERY gera erro quando usado com WIN2K8\SQL2K12


Você precisa colocar os valores DATETIME entre aspas simples. E como sua consulta está em uma string, essas aspas simples precisam ser duplicadas / escapadas da seguinte maneira (e você provavelmente também deve colocar o valor do primeiro parâmetro entre aspas simples com escape, pois é claramente uma string).

Você também deve qualificar totalmente o nome do procedimento armazenado com [DatabaseName].[SchemaName]. .

E como o vcs_gauge proc usa SQL dinâmico, você precisa especificar o WITH RESULT SETS cláusula. Para obter mais informações sobre esta cláusula, consulte a página do MSDN para 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} );
             ');