5

Quando si tenta di eseguire la stored procedure sp_OACreate nel database SQL di SQL. Ricevo l'errore seguente:Errore "Impossibile trovare la stored procedure" sp_OACreate "" in Sql Azure

Could not find stored procedure 'sp_OACreate'

in SQL Azure.

Qualcuno può dirmi come eseguire i metodi di automazione OLE come sp_OACreate in SQL Azure.

Qualsiasi aiuto sarà molto apprezzato.

Grazie.


Copiato & formattato da PO rispondere (che avrebbe dovuto essere una modifica):

Sto cercando di colpire i servizi di mappa di Google per ottenere i co-orinates (Latitudine & longitudine) di qualsiasi indirizzo. Sto eseguendo sotto query SQL. Il suo funzionamento benissimo in SQL Server 2005, ma la sua dando errore in SQL Azure 2008.Plz vedi sotto :-(Si prega di suggerire qualche alternativa per questo)

DECLARE @Sample TABLE 
(
RowID INT IDENTITY(1, 1) PRIMARY KEY CLUSTERED, 
Postal VARCHAR(50) NOT NULL, 
ZipCode VARCHAR(50) NOT NULL, 
City VARCHAR(50) NOT NULL, 
Country VARCHAR(50) NOT NULL, 
Status SMALLINT, 
Accuracy TINYINT, 
Lat DECIMAL(9, 6), 
Lon DECIMAL(9, 6), 
CreDate DATETIME 
) 

INSERT @Sample 
SELECT 'One Microsoft Way', '98052', 'Redmond, WA', 'USA',null,1,0,0,getdate() UNION ALL 
SELECT '170 W. Tasman Dr.', '95134', 'San Jose, CA', 'USA',null,1,0,0,getdate() UNION ALL 
SELECT '500 Oracle Parkway', '94065', 'Redwood Shores, CA', 'USA',null,1,0,0,getdate() 

select * from @Sample 

-- Initialize 
DECLARE @url VARCHAR(300), 
@win INT, 
@hr INT, 
@Text VARCHAR(8000), 
@RowID int, 
@Status smallint, 
@Accuracy tinyint, 
@Lon decimal(9, 6), 
@Lat decimal(9, 6) 

SELECT @RowID = MIN(RowID) FROM @Sample WHERE Status IS NULL 

WHILE @RowID IS NOT NULL 
BEGIN 
    SELECT @url = 'q=' + Postal + '+' + ZipCode + '+' + City + '+' + Country 
    FROM @Sample 
    WHERE RowID = @RowID 

    SET @url = 'http://maps.google.com/maps/geo?' + @url 
    SET @url = @url + '&output=csv&key={your google api key here}' 

    EXEC @hr = sp_OACreate 'WinHttp.WinHttpRequest.5.1', @win OUT 
    IF @hr <> 0 EXEC sp_OAGetErrorInfo @win 

    EXEC @hr = sp_OAMethod @win, 'Open', NULL, 'GET', @url, 'false' 
    IF @hr <> 0 EXEC sp_OAGetErrorInfo @win 

    EXEC @hr = sp_OAMethod @win, 'Send' 
    IF @hr <> 0 EXEC sp_OAGetErrorInfo @win 

    EXEC @hr = sp_OAGetProperty @win, 'ResponseText', @Text OUT 
    IF @hr <> 0 EXEC sp_OAGetErrorInfo @win 

    EXEC @hr = sp_OADestroy @win 
    IF @hr <> 0 EXEC sp_OAGetErrorInfo @win 

    SET @Text = REPLACE(REPLACE(@Text, '.', '#'), ',', '.') 
    SELECT @Status = PARSENAME(@Text, 4), 
     @Accuracy = PARSENAME(@Text, 3), 
     @Lat = REPLACE(PARSENAME(@Text, 2), '#', '.'), 
     @Lon = REPLACE(PARSENAME(@Text, 1), '#', '.') 

    UPDATE @Sample 
    SET Accuracy = @Accuracy, 
     Lat = @Lat, 
     Lon = @Lon, 
     Status = @Status, 
     CreDate = GETDATE() 
    WHERE RowID = @RowID 

    WAITFOR DELAY '00:00:00.010' 

    SELECT @RowID = MIN(RowID) 
    FROM @Sample 
    WHERE Status IS NULL 

END 

SELECT * FROM @Sample 

--If Above not executing then first execute below 
--sp_configure 'show advanced options', 1; 
--GO RECONFIGURE; 
-- 
--GO 
-- 
--sp_configure 'Ole Automation Procedures', 1; GO RECONFIGURE; 
-- 
--GO 
+0

Forse puoi descrivere quello che stavi cercando di ottenere qui - stai ovviamente cercando di utilizzare un componente COM - è un componente comune per cui potremmo essere in grado di suggerire alternative? –

risposta

0

sp_OACreate è una procedura di automazione memorizzato e non è disponibile in database di SQL Azure

http://msdn.microsoft.com/en-us/library/ee336237.aspx

sarei molto sorpreso se ci sono eventuali soluzioni alternative.

+0

Ho descritto il mio problema, controlla e suggerisco qualche alternativa per questo. – kapil

+0

Non so. Non pensare che ci sia un altro oltre a quello già suggerito. Sposta la logica fuori da SQL Azure. –

1

Non esiste alcun modo per chiamare i servizi Web da SQL Azure: è necessario spostare tali chiamate in codice in esecuzione su un servizio Windows Azure (in opposizione a SQL Azure) e non scrivilo in Transact SQL.

Problemi correlati