徵兆
如果您透過 ODBC 驅動程式在連結伺服器上執行遠端儲存程式並執行輸出參數,SQL Server,ODBC 驅動程式就無法擷取輸出參數,而且您可能會收到下列錯誤訊息:
[Microsoft][ODBC SQL Server驅動程式]限制資料類型屬性違規
解決方案
Microsoft 提供支援的 Hotfix。 不過,此 Hotfix 僅是為了修正本文所述的問題。 僅將此 Hotfix 套用至發生此特定問題的系統。 這個 Hotfix 可能會收到額外的測試。 因此,如果您未受到此問題嚴重影響,建議您等待下一次包含此 Hotfix 的軟體更新。
如果 hotfix 可供下載,則此知識庫文章頂端有「Hotfix 下載可用」一節。 如果沒有出現此區段,請連絡 Microsoft 客戶服務及支援以取得 Hotfix。
注意 如果發生其他問題或需要進行任何疑難排解,您可能需要建立個別的服務要求。 一般支援費用將適用于其他不符合此特定 Hotfix 資格的支援問題。 如需 Microsoft 客戶服務和支援電話號碼的完整清單,或是建立個別的服務要求,請流覽下列 Microsoft 網站:
HTTP://support.microsoft.com/contactus/?ws=support注意:[Hotfix 下載可用] 表單會顯示可供使用 Hotfix 的語言。 如果您沒有看到您的語言,這是因為該語言無法使用 hotfix。
' The english version of this hotfix has the file attributes (or later) that are listed in the table. 這些檔案的日期和時間會以協調的通用時間列 (UTC) 。 當您檢視檔案資訊時,它會轉換成當地時間。 若要尋找 UTC 和當地時間之間的差異,請使用 主控台 中 [日期及時間] 工具中的 [時區] 索引標籤。
MDAC 2.7 Service Pack 1
Date Time Version Size File name
----------------------------------------------------------
12-Nov-2002 02:42 2000.81.9031.12 24,576 Odbcbcp.dll
12-Nov-2002 02:41 2000.81.9031.12 385,024 Sqlsrv32.dll
MDAC 2.8
Date Time Version Size File name
---------------------------------------------------------
15-Jun-2004 00:22 2000.85.1045.0 28,672 Dbnmpntw.dll
15-Jun-2004 00:21 2.80.1045.0 147,456 Msadds.dll
15-Jun-2004 00:21 2.80.1045.0 512,000 Msado15.dll
15-Jun-2004 00:21 2.80.1045.0 163,840 Msadomd.dll
15-Jun-2004 00:21 2.80.1045.0 184,320 Msadox.dll
15-Jun-2004 00:21 2.80.1045.0 53,248 Msadrh15.dll
15-Jun-2004 00:21 2.80.1045.0 225,280 Msdaora.dll
15-Jun-2004 00:21 2.80.1045.0 147,456 Msdart.dll
15-Jun-2004 00:21 2.575.1045.0 139,264 Msorcl32.dll
15-Jun-2004 00:21 3.525.1045.0 221,184 Odbc32.dll
15-Jun-2004 00:22 2000.85.1045.0 24,576 Odbcbcp.dll
15-Jun-2004 00:21 2.80.1045.0 442,368 Oledb32.dll
15-Jun-2004 00:21 2000.85.1045.0 503,808 Sqloledb.dll
15-Jun-2004 00:21 2000.85.1045.0 401,408 Sqlsrv32.dll
15-Jun-2004 00:08 2000.85.1045.0 208,896 Sqlxmlx.dll
注意 如需 MDAC 2.8 可用之所有 Hotfix 的清單,請按一下下列文章編號以檢視 Microsoft 知識庫中的文章:
839801修正:Hotfixes 適用于 MDAC 2.8
狀態
Microsoft 已確認<適用於>一節中所列的 Microsoft 產品確實有上述問題。
其他相關資訊
重現行為的步驟
-
使用下列程式碼在連結伺服器上使用輸出參數建立SQL Server儲存程式:
USE pubs GO CREATE PROCEDURE dbo.sample_stored_procedure @op varchar(20) output AS set @op = 'demo string' return 0 GO
注意 如果預存程式傳回結果集,您不會收到列在 [症狀] 區段中的錯誤訊息。
-
下列 Microsoft Visual Basic 應用程式範例程式碼會存取連結伺服器上的遠端儲存程式。 在下列程式碼範例中,srv1和
srv2是執行SQL Server的兩個伺服器,而您是在 srv1 上將 srv2 建立為連結伺服器。Dim cn As new ADODB.Connection Dim cmd As new ADODB.Command Dim prm As ADODB.Parameter cn.Open "Driver={SQL Server};Server=srv1;UID=sa;PWD=sa_password;" cmd.ActiveConnection = cn cmd.CommandType = adCmdStoredProc cmd.CommandText = "srv2.pubs.dbo.sample_stored_procedure" Set prm = cmd.CreateParameter("op", adVarChar, adParamOutput, 20) cmd.Parameters.Append prm cmd.Execute Debug.Print prm.Value cn.Close Set cn = Nothing