sp_OAGetErrorInfo (Transact-SQL)
適用於:SQL Server
取得 OLE Automation 錯誤資訊。
語法
sp_OAGetErrorInfo [ objecttoken ]
[ , source OUTPUT ]
[ , description OUTPUT ]
[ , helpfile OUTPUT ]
[ , helpid OUTPUT ]
[ ; ]
引數
objecttoken
先前使用 sp_OACreate
或 NULL
所建立之 OLE 物件的物件標記。 如果 指定 objecttoken ,則會傳回該對象的錯誤資訊。 如果 NULL
指定 ,則會傳回整個批次的錯誤資訊。
來源 輸出
錯誤資訊的來源。 如果指定,它必須是本機 char、nchar、varchar 或 nvarchar 變數。 如有需要,會截斷傳回值以符合局部變數。
description OUTPUT
錯誤的描述。 如果指定,它必須是本機 char、nchar、varchar 或 nvarchar 變數。 如有需要,會截斷傳回值以符合局部變數。
helpfile OUTPUT
OLE 對象的說明檔。 如果指定,它必須是本機 char、nchar、varchar 或 nvarchar 變數。 如有需要,會截斷傳回值以符合局部變數。
helpid OUTPUT
說明檔內容識別碼。 如果指定,它必須是區域 int 變數。
注意
這個預存程式的參數是由位置指定,而不是名稱。
傳回碼值
0
(success) 或非零數位 (failure),這是 OLE Automation 物件所傳回之 HRESULT 的整數值。
如需 HRESULT 傳回碼的詳細資訊,請參閱 OLE 自動化傳回碼和錯誤資訊。
結果集
如果未指定任何輸出參數,錯誤資訊會以結果集的形式傳回給用戶端。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
Error |
binary(4) | 錯誤號碼的二進位表示法。 |
Source |
nvarchar(nn) | 錯誤的來源。 |
Description |
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 具現化。 您可以使用公用程式註冊伺服器 Regsvr32.exe (.dll ) 伺服器,或 /REGSERVER 本機 (.exe ) 伺服器的命令行參數。 |
伺服器執行失敗(0x80080005) | 指定的 OLE 物件會註冊為本機 OLE 伺服器(.exe 檔案),但找不到或啟動.exe檔案。 |
找不到指定的模組 (0x8007007e) | 指定的 OLE 物件會註冊為同進程 OLE 伺服器(.dll 檔案),但找不到或載入.dll檔案。 |
類型不符 (0x80020005) | 用來儲存傳回屬性值或方法傳回值之 Transact-SQL 局部變數的數據類型不符合屬性或方法傳回值的 Visual Basic 數據類型。 或者,已要求屬性或方法的傳回值,但不會傳回值。 |
的 『context』 參數 sp_OACreate 數據類型或值無效。 (0x8004275B) |
內容參數的值應該是下列其中一個:1、4 或 5。 |
如需處理 HRESULT 傳回碼的詳細資訊,請參閱 OLE 自動化傳回碼和錯誤資訊。
權限
需要系統管理員固定伺服器角色的成員資格,或直接在此預存程式上執行許可權。 必須啟用 [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 OUTPUT,
@description OUTPUT;
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;