Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come evitare i limiti sp_OACreate?

nonostante l'argomento del tuo post, penso che il problema sia probabile con sp_OAMethod e non con sp_OACreate stesso.

anche IMHO l'accesso al web da codice sql dovrebbe essere evitato a tutti i costi ma questa è solo la mia opinione perché non mi piace l'idea di avere un RDBMS 'navigare sul web'. ^^

per aggirare la limitazione di sp_OAMethod puoi provare a elaborare una risposta presente su msdn .

il tuo codice dovrebbe diventare qualcosa del genere:

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 soluzione richiede una tabella temporanea con struttura e tipo di dati appropriati per memorizzare il valore prodotto dalla pagina remota e questo dovrebbe consentire di ottenere più di 4k di dati.