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

¿Cómo evitar los límites de sp_OACreate?

a pesar del tema de su publicación, creo que es probable que el problema sea con sp_OAMethod y no con sp_OACreate.

También en mi humilde opinión, se debe evitar a toda costa acceder a la web desde el código sql, pero esta es solo mi opinión porque no me gusta la idea de tener un RDBMS 'navegando por la web'. ^^

para eludir la limitación de sp_OAMethod, puede intentar elaborar una respuesta presente en msdn .

su código debería convertirse en algo como esto:

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

la solución requiere una tabla temporal con la estructura y el tipo de datos apropiados para almacenar el valor producido por la página remota y esto debería permitirle obtener más de 4k de datos.