現象
SQL Server用の ODBC ドライバーを介してリンク サーバーで出力パラメーターを使用してリモート ストアド プロシージャを実行すると、ODBC ドライバーは出力パラメーターを取得できず、次のエラー メッセージが表示される場合があります。
[Microsoft][ODBC SQL Server Driver]制限付きデータ型属性違反
解決方法
サポートされている修正プログラムは、Microsoft から入手できます。 ただし、この修正プログラムは、この記事で説明されている問題のみを修正することを目的としています。 この修正プログラムは、この特定の問題が発生しているシステムにのみ適用します。 この修正プログラムは、追加のテストを受ける場合があります。 そのため、この問題の影響を大きく受けない場合は、この修正プログラムを含む次のソフトウェア更新プログラムを待機することをお勧めします。
修正プログラムをダウンロードできる場合は、このサポート技術情報の記事の上部に「修正プログラムのダウンロードが可能」セクションがあります。 このセクションが表示されない場合は、Microsoft カスタマー サービスとサポートに問い合わせ、修正プログラムを入手してください。 注: 追加の問題が発生した場合、またはトラブルシューティングが必要な場合は、別のサービス要求を作成する必要があります。 通常のサポート コストは、この特定の修正プログラムに該当しない追加のサポートの質問や問題に適用されます。 Microsoft カスタマー サービスとサポートの電話番号の完全な一覧、または個別のサービス要求を作成するには、次の Microsoft Web サイトを参照してください。http://support.microsoft.com/contactus/?ws=support注: "修正プログラムのダウンロード可能" フォームには、修正プログラムを使用できる言語が表示されます。 言語が表示されない場合は、その言語で修正プログラムを使用できないためです。 ' この修正プログラムの英語版には、次の表に示すファイル属性 (またはそれ以降) があります。 これらのファイルの日付と時刻は、協定世界時 (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 で使用できるすべての修正プログラムの一覧については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を表示してください。
839801修正プログラム: 修正プログラムは MDAC 2.8 で使用できます
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
詳細情報
動作を再現する手順
-
次のコードを使用して、リンク サーバー上に出力パラメーターを持つ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を実行している 2 つのサーバーであり、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