Alguém pode me ajudar se houver uma maneira de consultar um banco de dados SQL do Azure usando openrowset com uma conta autenticada por SQL com "aspas simples" em sua string de senha. Minha declaração se parece com a abaixo
(Estou consultando o banco de dados do Azure no local)
SELECT a.*
FROM OPENROWSET('SQLNCLI11', 'SERVER=sqlserver.database.windows.net,1433;DATABASE=testDB;Uid=admin;Pwd=Fj'C(D=JJ&'XE6vx};','select * from table1 with (nolock)')a
Eu tentei as soluções abaixo
solução 1 - SQL dinâmico
declare @string varchar(max)
set @string=
'SELECT a.*
FROM OPENROWSET(''SQLNCLI11'', ''SERVER=sqlserver.database.windows.net,1433;DATABASE=testDB;Uid=admin;Pwd="Fj'''+'C(D=JJ&'''+'XE6vx}";'',''select count(*) from dbo.table1 with (nolock)'')a'
exec (@string)
Solução 2 - Passando a senha como parâmetro
declare @string varchar(max)
declare @pwd varchar(max)
set @pwd = 'Fj'''+'C(D=JJ&'''+'XE6vx}'
set @string=
'SELECT a.*
FROM OPENROWSET(''SQLNCLI11'', ''SERVER=sqlserver.database.windows.net,1433;DATABASE=testDB;Uid=admin;Pwd='+@pwd+';'',''select count(*) from dbo.table1 with (nolock)'')a'
exec (@string)
Todos eles resultam no mesmo erro (aponta para a senha)
Msg 102, Level 15, State 1, Line 16 Sintaxe incorreta perto de 'C'.
usar uma conta autenticada SQL sem qualquer "aspas simples" em sua senha funciona absolutamente bem.
Eu poderia facilmente alterar a senha para corrigir esse problema, mas ainda gostaria de saber se existe uma solução para isso.