8

sp_OACreateSQL azure データベースでストアド プロシージャを実行しようとすると。次のエラーが表示されます。

ストアド プロシージャ 'sp_OACreate' が見つかりませんでした

SQL Azure で。

sp_OACreateSQL Azureのような OLE オートメーション メソッドを実行する方法を教えてください。

どんな助けでも大歓迎です。

ありがとう。


OPの回答からコピーしてフォーマットしました(編集する必要がありました):

Google マップ サービスにアクセスして、任意の住所の座標 (緯度と経度) を取得しようとしています。以下のSQLクエリを実行しています。SQL Server 2005 では正常に動作しますが、SQL Azure 2008 ではエラーが発生します。以下を参照してください:-(これに代わるものをいくつか提案してください)

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
4

2 に答える 2

2

SQL Azure 内から Web サービスを呼び出す手段はありません。そのような呼び出しは、(SQL Azure ではなく) Windows Azure サービスで実行されているコードに移動する必要があり、それを記述する必要はありません。 SQL を処理します。

于 2011-01-14T08:09:21.573 に答える
1

sp_OACreate はオートメーション ストアド プロシージャであり、SQL Azure データベースでは使用できません

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

回避策があれば非常に驚くでしょう。

于 2011-01-13T13:30:00.000 に答える