sp_OAGetErrorInfo (Transact-SQL)
取得 OLE Automation 錯誤資訊。
語法
sp_OAGetErrorInfo [ objecttoken ]
[ , source OUTPUT ]
[ , description OUTPUT ]
[ , helpfile OUTPUT ]
[ , helpid OUTPUT ]
引數
objecttoken
這是先前利用 sp_OACreate 所建立之 OLE 物件的物件 Token,或是 NULL。如果指定了 objecttoken,便會傳回這個物件的錯誤資訊。如果指定了 NULL,就會傳回整個批次的錯誤資訊。sourceOUTPUT
這是錯誤資訊的來源。如果指定的話,它必須是本機 char、nchar、varchar 或 nvarchar 變數。必要的話,會截斷傳回值來配合本機變數。descriptionOUTPUT
這是錯誤的描述。如果指定的話,它必須是本機 char、nchar、varchar 或 nvarchar 變數。必要的話,會截斷傳回值來配合本機變數。helpfileOUTPUT
這是 OLE 物件的說明檔。如果指定的話,它必須是本機 char、nchar、varchar 或 nvarchar 變數。必要的話,會截斷傳回值來配合本機變數。helpidOUTPUT
這是說明檔內容識別碼。如果指定的話,它必須是本機 int 變數。[!附註]
這個預存程序的參數是依照位置來指定,而不是名稱。
傳回碼值
0 (成功) 或非零數字 (失敗),這個數字是 OLE Automation 物件所傳回之 HRESULT 的整數值。
如需有關 HRESULT 傳回碼的詳細資訊,請參閱<OLE Automation 傳回碼與錯誤資訊>。
結果集
如果未指定輸出參數,就會將錯誤資訊當作結果集傳回給用戶端。
資料行名稱 |
資料類型 |
描述 |
---|---|---|
Error |
binary(4) |
錯誤號碼的二進位表示法。 |
Source |
nvarchar(nn) |
錯誤的來源。 |
描述 |
nvarchar(nn) |
錯誤的描述。 |
Helpfile |
nvarchar(nn) |
來源的說明檔。 |
HelpID |
int |
說明來源檔案中的說明內容識別碼。 |
備註
每個 OLE Automation 預存程序呼叫 (除了 sp_OAGetErrorInfo) 都會重設錯誤資訊;因此,sp_OAGetErrorInfo 只會取得最近的 OLE Automation 預存程序呼叫的錯誤資訊。請注意,因為 sp_OAGetErrorInfo 並不會重設錯誤資訊,因此,您可以重複呼叫它來取得相同的錯誤資訊。
下表列出 OLE Automation 錯誤及其共同原因。
錯誤和 HRESULT |
共同原因 |
---|---|
不正確的變數類型 (0x80020008) |
作為方法參數來傳遞之 Transact-SQL 值的資料類型不符合方法參數的 Microsoft Visual Basic 資料類型,或傳遞 NULL 值作為方法參數。 |
未知名稱 (0x8002006) |
找不到指定物件的指定屬性或方法名稱。 |
無效的類別字串 (0x800401f3) |
指定的 ProgID 或 CLSID 未登錄為 SQL Server 執行個體的 OLE 物件。您必須先登錄自訂 OLE Automation 伺服器,然後才能利用 sp_OACreate 具現化。您可以利用同處理序 (.dll) 伺服器的 Regsvr32.exe 公用程式或本機 (.exe) 伺服器的 /REGSERVER 命令列參數來執行這個動作。 |
伺服器執行失敗 (0x80080005) |
指定的 OLE 物件已登錄成本機 OLE 伺服器 (.exe 檔),但找不到或無法啟動 .exe 檔。 |
找不到指定的模組 (0x8007007e) |
指定的 OLE 物件已登錄成同處理序 OLE 伺服器 (.dll 檔),但找不到或無法載入 .dll 檔。 |
類型不符 (0x80020005) |
用來儲存傳回的屬性值或方法傳回值之 Transact-SQL 本機變數的資料類型不符合屬性或方法傳回值的 Visual Basic 資料類型。或要求了屬性或方法的傳回值,但它沒有傳回值。 |
sp_OACreate 之 'context' 參數的資料類型或值無效。(0x8004275B) |
context 參數的值應該是下列項目之一:1、4 或 5。 |
如需有關處理 HRESULT 傳回碼的詳細資訊,請參閱<OLE Automation 傳回碼與錯誤資訊>。
權限
需要系統管理員 (sysadmin) 固定伺服器角色中的成員資格。
範例
下列範例會顯示 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