サーバー名パラメータを接続文字列で使用して、クライアント ネットワーク ライブラリを指定する方法

概要
この資料では、SQL Server データベースへの接続時に、プログラムを使用して接続文字列にクライアント ネットワーク ライブラリを指定する方法を説明します。

Microsoft Data Access Components (MDAC) 2.6 以降では、接続文字列に server name パラメータを使用して、クライアント アクセス ライブラリを指定できます。したがって、アプリケーションにより、接続先サーバー名の入力を求めるメッセージが表示されたときに、特定のクライアント アクセス ライブラリを指定できます。この動作は、SQL Server の接続問題のテストやトラブルシューティングを行っているときに、非常に役立つことがあります。

たとえば、Osql コマンド ライン ユーティリティを使用して SQL Server に接続し、SQL Server で TCP/IP ネットワーク ライブラリが使用されるように指定できます。
osql -Stcp:myServer,portNumber -E				
先頭に戻る

サンプル コード

次の Microsoft Visual C# .NET サンプル コードは、接続文字列の設定方法を示したものです。接続文字列では、使用する言語にかかわらず、同じ形式を使用します。
using System;using System.Data;using System.Data.SqlClient;namespace getCurrentProtocol{	/// <summary>	/// Main Application Driver Class	/// </summary>	class Driver	{		static void Main(string[] args)		{			string sCxn = "server=myServer;Integrated Security=SSPI; database=master";			//string sCxn = "server=np:myServer;Integrated Security=SSPI; database=master";			//string sCxn = "server=tcp:myServer;Integrated Security=SSPI; database=master";			//string sCxn = "server=rpc:myServer;Integrated Security=SSPI; database=master";			//string sCxn = "server=lpc:myServer;Integrated Security=SSPI; database=master";			string sCmd = "SELECT net_library from sysprocesses where spid=@@spid";			SqlConnection cxn = new SqlConnection(sCxn);			SqlCommand sqlCmd = new SqlCommand(sCmd, cxn);			SqlDataAdapter sqlDa = new SqlDataAdapter(sCmd, cxn);			DataTable dt = new DataTable();			try 			{				sqlDa.Fill(dt);				Console.WriteLine("Hit ENTER to continue ...");				Console.ReadLine();				foreach (DataRow dr in dt.Rows)					Console.WriteLine(dr["net_library"]);			} 			catch (SqlException e)			{				Console.WriteLine(e.StackTrace);				Console.WriteLine("SQL Error Number: " + e.Number);				Console.WriteLine("SQL Error Message: " + e.Message);							}		}	}} 				
接続文字列、特に server パラメータの値に注意します。
string sCxn = "server=myServer;Integrated Security=SSPI; database=northwind"				
先頭に戻る

さまざまなネットワーク ライブラリでサンプル コードを使用する

以下のサンプル コードでは、server パラメータの値を使用して、さまざまなネットワーク ライブラリを指定する方法を示します。
  • TCP/IP :
    server=tcp:hostname
    特定のポート番号を指定できます (省略可能です)。デフォルトでは、ポートは 1433 です。
    server=tcp:hostname, portNumber
  • 名前付きパイプ :
    server=np:hostname
    特定の名前付きパイプを指定できます (省略可能です)。
    server=np:\\hostname\pipe\pipeName
    デフォルトでは、パイプ名は sql\query です。名前付きインスタンスに接続する場合、通常は以下の形式でパイプ名を指定します。
    MSSQL$instnaceName\sql\query
  • マルチプロトコル :
    server=rpc:hostname
    基になるプロトコルを指定できます (省略可能です)。
    server=rpc:hostname, protocol
    基になるプロトコルのデフォルト値は、オペレーティング システムの設定によって決定されます。この場合、プロトコルには以下の値のいずれかを指定できます。
    基になるプロトコル
    ncacn_np名前付きパイプ
    ncacn_ip_tcpTCP/IP (Transmission Control Protocol/Internet Protocol)
    ncacn_nb_nbNetBIOS over NetBEUI
    ncacn_spxSPX (Sequenced Packet Exchange)
    ncacn_vns_sppBanyan VINES
    ncadg_ip_udpUDP (User Datagram Protocol) データグラム - TCP/IP
    ncadg_ipxIPX (Internetwork Packet Exchange) データグラム - IPX
    ncalrpcローカル プロシージャ コール

  • 共有メモリ :
    server=lpc:hostname
  • NWlink IPX/SPX :
    server=spx:hostname
  • Banyan VINES :
    server=vines:hostname
  • Apple Talk :
    server=adsp:hostname
先頭に戻る
関連情報
詳細については、次のマイクロソフト Web サイトを参照してください。

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dbnetlib/htm/dbnetlib_22.asp
プロパティ

文書番号:313295 - 最終更新日: 02/17/2006 07:10:11 - リビジョン: 6.2

Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 64-bit Edition, Microsoft Data Access Components 2.6, Microsoft Data Access Components 2.6 Service Pack 1, Microsoft Data Access Components 2.6 Service Pack 2, Microsoft Data Access Components 2.7, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Workgroup Edition

  • kbhowtomaster KB313295
フィードバック