FIX、エラー メッセージ SQL Server 2000年ドライバー JDBC と、SQL Server 2005 のドライバーの JDBC を同じアプリケーションでロードは、SQL Server 2005 データベースに接続する際、クエリを実行すると受け取ることがあります。

文書翻訳 文書翻訳
文書番号: 915834
バグの #: 2059 (PSSWebData)
すべて展開する | すべて折りたたむ

目次

現象

次のシナリオを検討してください。JDBC の Microsoft SQL Server 2000年のドライバーをロードするにはアプリケーションで使用します。その後、Microsoft SQL Server 2005年の JDBC ドライバーを同じアプリケーションを読み込みます。SQL Server 2005 JDBC ドライバー URL を使用して SQL Server 2005 データベースへの接続しようとするとこのシナリオでは、JDBC は、Microsoft SQL Server 2000年ドライバーを使用して接続が確立されます。その後、クエリを実行すると、次のエラー メッセージが表示されます。
[マイクロソフト][Sql Server 2000 のドライバーの JDBC][Sql Server]は、着信の表形式のデータ (TDS) リモート プロシージャ コール (RPC) プロトコル ストリームをストリーム配信します。不正解です。パラメーター 1 (""): 0x38 はのデータ型が不明です。
SQL Server 2000年データベースへの接続を確立すると、エラー メッセージを受け取らない場合があります、間違ったドライバーが使用されているという事実は受けないことがあります。Microsoft SQL Server 2005年の JDBC ドライバーがアプリケーションに読み込まれる前に、SQL Server 2000年ドライバーの JDBC が読み込まれると、この問題が発生します。

原因

障害のある名前解決が発生ために発生、SQL Server 2000 JDBC ドライバーです。SQL Server 2000年の JDBC ドライバーが接続を受け付けるSQL Server 2005 JDBC ドライバーの Url。SQL Server 2005 JDBC ドライバー接続文字列の Url で始まる次の文字列。
jdbc:sqlserver://接続文字列
は、SQL Server 2000年ドライバーは、JDBC 接続文字列の Url のみ受け付ける始まる次の文字列。
jdbc:microsoft:sqlserver://接続文字列
しかし、また、SQL Server 2000年ドライバーの JDBC を受け入れる次の形式を持つ接続:
jdbc:sqlserver://接続文字列
は、SQL Server 2000年ドライバーの JDBC に対応していないために、例外が発生しました。SQL Server 2005 データベースに接続します。

解決方法

サポートされている修正プログラム今すぐ、用意していますが、これだけはこの資料に記載されている問題を修正するものです。この問題が発生しているシステムにのみ適用します。この修正プログラムは、今後さらにテストが表示されます。したがって、この問題で深刻な影響をされていない場合は、次の SQL Server 2000年ドライバーをこの修正プログラムを含む JDBC サービス パックがリリースされるまで待つことをお勧めします。

この問題を解決するには、Microsoft 製品サポート サービス、修正プログラムを入手するに問い合わせてください。Microsoft 製品サポート サービスの電話番号とサポート コストに関する情報の完全な一覧については、次のマイクロソフト Web サイトを参照してください。
http://support.microsoft.com/contactus/?ws=support
メモ Microsoft Support 担当者が特定の更新で問題が解決されると判断した場合は特殊なケースでは、料金が通常のサポート免除されるキャンセルする可能性があります。追加の質問および問題の特定のアップデートの対象とならない問題、通常のサポート料金が適用されます。

ファイル情報

この修正プログラムの英語版がファイル属性 (またはそれ以降のファイル属性) が、次のとおり。日付および時刻これらのファイルを世界協定時刻 (UTC) が表示されます。ファイル情報を表示すると、ローカル時刻に変換します。UTC とローカル時刻との時差を確認するを使用して、 タイム ゾーン コントロール パネルの日付と時刻の項目に含まれる ◇
元に戻す全体を表示する
ファイル名ファイルのサイズ日付時間
Msbase.jar289,7132006 年 2 月 03 日23: 02
Mssqlserver.jar67,4832006 年 2 月 03 日23: 02
Msutil.jar56,5372006 年 2 月 03 日23: 02

回避策

この問題を回避するには、次の手順を実行します。
  1. SQL Server 2005 のドライバーを読み込む前に JDBC をJDBC は、SQL Server 2000年のドライバーを読み込みます。これを行うを使用して、 DriverManager クラスのコード例を次に示します。
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); // 2005 version
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); // 2000 version
    
  2. SQL Server 2005 のドライバーは、JDBC 接続 URL を使用します。接続を確立します。これを行うには、次のコード例のようなコードを使用します。
    Connection con = DriverManager.getConnection("jdbc:sqlserver://<ServerName>;user=<UserName>;password=<Password>");
詳細についてはデータ ソースに接続する方法方法は、接続 URL を使用して、次のマイクロソフト開発ネットワーク (MSDN) Web サイトを参照してください。
接続 URL の作成
http://msdn2.microsoft.com/en-us/library/ms378428.aspx

[接続のプロパティを設定します。
http://msdn2.microsoft.com/en-us/library/ms378988.aspx

状況

マイクロソフトは、これは、マイクロソフト製品のバグであること確認しています「対象」に記載します。

詳細

問題の再現手順

コンパイルし、次の Java を実行サンプル コードです。
import java.sql.*;
public class TestDriver {
  public static void main(String[] args) throws Exception
       	{

       	Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
       	Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

	Connection conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://<Server>;DatabaseName=<DatabaseName>", 
"<UserId>","<Passwd>");
	DatabaseMetaData dbmd = conn.getMetaData();
	System.out.println("Driver = " + dbmd.getDriverName() + "_" + dbmd.getDriverVersion());

	conn = DriverManager.getConnection("jdbc:sqlserver://<Server>;DatabaseName=<DatabaseName>", 
"<UserId>","<Passwd>");
	dbmd = conn.getMetaData();
	System.out.println("Driver = " + dbmd.getDriverName() + "_" + dbmd.getDriverVersion());
	displayVersions(conn);
	}

	public static void displayVersions(Connection conn)
       	{
               Statement s3 = null;
               ResultSet rr = null;

               try
               {
                       s3 = conn.createStatement();
                       System.out.println("\nStart trying to retreive data\n");
                       rr = s3.executeQuery("select @@version");

                       boolean OK = rr.next();
                       if (OK)
                               System.out.println("The current version of Microsoft SQL Server is: " + rr.getString(1));
                       else
                               System.out.println("result set NO ROWS!");
               }
               catch (Exception ex)
               {
                       System.out.println("Caught error in displayAnyData:\n\t" + ex.getMessage());
               }

               try
               {
                       if (rr != null) rr.close();
                       if (s3 != null) s3.close();
                       System.out.println("End trying to retreive data\n");
               }
               catch (Exception ee)
               {
                       System.out.println("Error closing rr or s3 in displayData: " + ee.getMessage());
               }

	}

	}
メモ このコード サンプルを使用するには、次のプレース ホルダーを置き換えます。
  • 置換 <server></server> SQL のインスタンスの名前でサーバーです。
  • 置換 <databasename></databasename> 名前、データベースです。
  • 置換 <userid></userid> ユーザ ID と
  • 置換 <passwd></passwd> パスワードを使用します。

関連情報

JDBC の詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
313100Microsoft JDBC を開始する方法
この資料に記載サード ・ パーティ製品がマイクロソフトと関連のある会社で製造されています。マイクロソフト、黙示またはそれ以外の場合のパフォーマンスや信頼性これらの製品について負わない。

プロパティ

文書番号: 915834 - 最終更新日: 2011年8月4日 - リビジョン: 3.0
キーワード:?
kbfix kbqfe kbhotfixserver kbmt KB915834 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:915834
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。
サポート期間が終了した「サポート技術情報」資料に関する免責事項
この資料は、マイクロソフトでサポートされていない製品について記述したものです。そのため、この資料は現状ベースで提供されており、今後更新されることはありません。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com