OPENROWSET com parametros
To quebrando a cabeça a horas mas não consegui achar uma solução.
Preciso acessar informações de um o banco de dados que está em outra rede.
Acessar não é o problema, o problema é que preciso filtrar as informações antes de receber devido ao elevado número de registros.
Criei uma procedure no servidor onde estão as informações, fazendo toda a regra de negócio para que retorne somente o que preciso.
No servidor onde preciso receber as informações criei uma nova procedure com os parâmetros:
@VEICULOS VARCHAR(MAX)
@DATAINICIAL DATETIME,
@DATAFINAL DATETIME,
@ULTIMAPOSICAO BIT
Vi vários posts com o mesmo problema e trabalhei em duas sugestões
Sugestão 1
EXEC( ' SELECT *
FROM
OPENROWSET (
''SQLOLEDB'',
''111.111.111.111'';''sa'';'''',
''SET FMTONLY OFF
EXEC dbXXX.dbo.PesquisarLogs ''' + @VEICULOS + ''', ''' + @DATAINICIAL + ''', ''' + @DATAFINAL + ''', ''' + @ULTIMAPOSICAO + ''')''')
Sugestão 2
DECLARE @SQL VARCHAR(MAX)
SET @SQL = 'SELECT *
FROM OPENROWSET(
''SQLOLEDB'',
''111.111.111.111'';''sa'';'''',
EXEC dbXXX.dbo.PesquisarLogs ''' + @VEICULOS + ''', ''' + CONVERT(VARCHAR, @DATAINICIAL) + ''', ''' + CONVERT(VARCHAR, @DATAFINAL) + ''',' + CONVERT(VARCHAR, @ULTIMAPOSICAO) + ')'EXEC(@SQL)
Em ambos os casos não obtive sucesso, os dois retornam erro.
Chamada da procedure
ProcedureX 'XXX9999,QQQ9999,ZZZ9999', '2011-03-17 14:00:00', '2011-03-18 14:00:00', 1
Erro sugestão 1:
Msg 102, Level 15, State 1, Line 7
Incorrect syntax near 'XXX9999'.
Erro sugestão 2:
Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'EXEC'.
Msg 102, Level 15, State 1, Line 5
Incorrect syntax near ')'.
Alguém tem outro caminho que posso seguir, ou sabe a solução dos erros informados ?
Obrigado
Discussão (5)
Carregando comentários...