sp_OAGetErrorInfo (Transact-SQL)
適用於:SQL Server
取得 OLE Automation 錯誤資訊。
語法
sp_OAGetErrorInfo [ objecttoken ]
[ , source OUTPUT ]
[ , description OUTPUT ]
[ , helpfile OUTPUT ]
[ , helpid OUTPUT ]
引數
objecttoken
這是先前使用 sp_OACreate 所建立之 OLE 物件的物件標記,或是 NULL。 如果 指定 objecttoken ,則會傳回該對象的錯誤資訊。 如果指定 NULL,則會傳回整個批次的錯誤資訊。
來源輸出
這是錯誤資訊的來源。 如果指定,它必須是本機 char、nchar、varchar 或 nvarchar 變數。 如有需要,會截斷傳回值以符合局部變數。
descriptionOUTPUT
這是錯誤的描述。 如果指定,它必須是本機 char、nchar、varchar 或 nvarchar 變數。 如有需要,會截斷傳回值以符合局部變數。
helpfileOUTPUT
這是 OLE 對象的說明檔。 如果指定,它必須是本機 char、nchar、varchar 或 nvarchar 變數。 如有需要,會截斷傳回值以符合局部變數。
helpidOUTPUT
這是說明檔內容識別碼。 如果指定,它必須是區域 int 變數。
注意
這個預存程式的參數是由位置指定,而不是名稱。
傳回碼值
0 (success) 或非零數位 (failure),這是 OLE Automation 物件所傳回之 HRESULT 的整數值。
如需 HRESULT 傳回碼的詳細資訊,請參閱 OLE Automation 傳回碼和錯誤資訊。
結果集
如果未指定任何輸出參數,錯誤資訊會以結果集的形式傳回給用戶端。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
錯誤 | binary(4) | 錯誤號碼的二進位表示法。 |
來源 | nvarchar(nn) | 錯誤的來源。 |
說明 | nvarchar(nn) | 錯誤的描述。 |
Helpfile | nvarchar(nn) | 來源的說明檔。 |
HelpID | int | 說明來源檔案中的說明內容識別碼。 |
備註
每次呼叫 OLE Automation 預存程式時(sp_OAGetErrorInfo除外)都會重設錯誤資訊;因此,sp_OAGetErrorInfo只會針對最新的 OLE Automation 預存過程調用取得錯誤資訊。 請注意,由於 sp_OAGetErrorInfo 不會重設錯誤資訊,所以可以多次呼叫以取得相同的錯誤資訊。
下表列出 OLE 自動化錯誤及其常見原因。
錯誤和 HRESULT | 常見原因 |
---|---|
不正確的變數類型 (0x80020008) | 當做方法參數傳遞的 Transact-SQL 值數據類型與方法參數的 Microsoft Visual Basic 數據類型不符,或以方法參數的形式傳遞 NULL 值。 |
未知的名稱(0x8002006) | 找不到指定物件的指定屬性或方法名稱。 |
不合法的類別字串 (0x800401f3) | 指定的 ProgID 或 CLSID 不會註冊為 SQL Server 實例上的 OLE 物件。 自定義 OLE 自動化伺服器必須先註冊,才能使用 sp_OACreate具現化。 這可以透過使用 In-process (.dll) 伺服器的 Regsvr32.exe 公用程式,或 本機 (.exe) 伺服器的 /REGSERVER 命令行參數來完成。 |
伺服器執行失敗(0x80080005) | 指定的 OLE 物件會註冊為本機 OLE 伺服器 (.exe 檔案),但找不到或啟動 .exe 檔案。 |
找不到指定的模組 (0x8007007e) | 指定的 OLE 物件會註冊為同進程 OLE 伺服器 (.dll 檔案),但找不到或載入 .dll 檔案。 |
類型不符 (0x80020005) | 用來儲存傳回屬性值或方法傳回值之 Transact-SQL 局部變數的數據類型不符合屬性或方法傳回值的 Visual Basic 數據類型。 或者,已要求屬性或方法的傳回值,但不會傳回值。 |
sp_OACreate 『context』 參數的數據類型或值無效。 (0x8004275B) | 內容參數的值應該是下列其中一個:1、4 或 5。 |
如需處理 HRESULT 傳回碼的詳細資訊,請參閱 OLE Automation 傳回碼和錯誤資訊。
權限
需要系統管理員固定伺服器角色的成員資格,或直接在此預存程式上執行許可權。 Ole Automation Procedures
必須 啟用 組態,才能使用任何與 OLE Automation 相關的系統程式。
範例
下列範例會顯示 OLE Automation 錯誤資訊。
DECLARE @output varchar(255);
DECLARE @hr int;
DECLARE @source varchar(255);
DECLARE @description varchar(255);
PRINT 'OLE Automation Error Information';
EXEC @hr = sp_OAGetErrorInfo @object, @source OUT, @description OUT;
IF @hr = 0
BEGIN
SELECT @output = ' Source: ' + @source
PRINT @output
SELECT @output = ' Description: ' + @description
PRINT @output
END
ELSE
BEGIN
PRINT ' sp_OAGetErrorInfo failed.'
RETURN
END;
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應