Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie vermeide ich sp_OACreate-Limits?

Trotz des Themas Ihres Beitrags denke ich, dass das Problem wahrscheinlich bei sp_OAMethod und nicht bei sp_OACreate selbst liegt.

Auch der Zugriff auf das Internet über SQL-Code sollte meiner Meinung nach unter allen Umständen vermieden werden, aber dies ist nur meine Meinung, da ich die Idee nicht mag, dass ein RDBMS im Internet surft. ^^

Um die Einschränkung von sp_OAMethod zu umgehen, können Sie versuchen, eine Antwort auf msdn .

Ihr Code sollte in etwa so aussehen:

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

Die Lösung erfordert eine temporäre Tabelle mit geeigneter Struktur und Datentyp, um den von der Remote-Seite erzeugten Wert zu speichern, und dies sollte es Ihnen ermöglichen, mehr als 4 KB an Daten zu erhalten.