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

Como evitar limites sp_OACreate?


apesar do assunto do seu post, acho que o problema é provável com sp_OAMethod e não com o próprio sp_OACreate.

também IMHO acessando a web a partir do código sql deve ser evitado a todo custo, mas esta é apenas a minha opinião porque eu não gosto da ideia de ter um RDBMS 'navegar na web'. ^^

para contornar a limitação do sp_OAMethod, você pode tentar elaborar uma resposta presente em msdn .

seu código deve ficar assim:
Declare @Object as Int; 
Declare @ResponseText as Varchar(8000); 
Declare @Url as Varchar(MAX);

set @Url = 'http://mysite.ru/cgi-bin/my_xml.cgi'

Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT; 
Exec sp_OAMethod @Object, 'open', NULL, 'get', @Url, 'false' 
Exec sp_OAMethod @Object, 'send' 
--Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT 

INSERT #temptable ( appropriatefield )
EXEC @Result = sp_OAGetProperty @Obj, 'YourPropertyName' 

Exec sp_OADestroy @Object

a solução requer uma tabela temporária com estrutura e tipo de dados apropriados para armazenar o valor produzido pela página remota e isso deve permitir que você obtenha mais de 4k de dados.