次の方法で共有


SQL Server のインスタンスへの接続

SQL Server 管理オブジェクト (SMO) アプリケーションのプログラミングで必要になる最初の手順は、Server オブジェクトのインスタンスの作成、および MicrosoftSQL Server のインスタンスへの接続の確立です。

Server オブジェクトのインスタンスを作成し、SQL Server のインスタンスへの接続を確立するには、3 つの方法があります。1 つは、ServerConnection オブジェクト変数を使用して接続情報を提供する方法です。2 つ目は、Server オブジェクト プロパティを明示的に設定することで接続情報を提供する方法です。3 つ目は、Server オブジェクト コンストラクタに SQL Server インスタンスの名前を渡す方法です。

ServerConnection オブジェクトの使用

ServerConnection オブジェクト変数を使用することの利点は、接続情報を再利用できることです。まず、Server オブジェクト変数を宣言します。次に、ServerConnection オブジェクトを宣言し、SQL Server のインスタンスの名前などの接続情報を持つプロパティ、および認証モードを設定します。そして、パラメータとして ServerConnection オブジェクト変数を Server オブジェクト コンストラクタに渡します。異なるサーバー オブジェクト間で同時に接続を共有することはお勧めできません。Copy メソッドを使用して、既存の接続設定のコピーを取得してください。

サーバー オブジェクト プロパティの明示的な設定

別の方法として、Server オブジェクト変数を宣言して、既定のコンストラクタを呼び出すこともできます。Server オブジェクトは、すべての既定の接続設定で SQL Server の既定インスタンスに接続しようとします。

Server オブジェクト コンストラクタへの SQL Server インスタンス名の提供

Server オブジェクト変数を宣言し、SQL Server インスタンス名を文字列パラメータとしてコンストラクタに渡します。Server オブジェクトは、既定の接続設定で SQL Server のインスタンスとの接続を確立します。

接続のプール

通常、ServerConnection オブジェクトの Connect メソッドを呼び出す必要はありません。SMO は、必要な場合には自動的に接続を確立し、実行中の操作が完了した後で接続プールに接続を解放します。Connect メソッドが呼び出された場合、接続はプールに解放されません。接続をプールに解放するには、Disconnect メソッドへの明示的な呼び出しが必要です。また、ServerConnection オブジェクトの NonPooledConnection プロパティを設定することによって、プールされていない接続を要求することもできます。

マルチスレッド アプリケーション

マルチスレッド アプリケーションの場合、各スレッドで別々の ServerConnection オブジェクトを使用する必要があります。

RMO の SQL Server のインスタンスへの接続

レプリケーション管理オブジェクト (RMO) では、レプリケーション サーバーへの接続には、SMO とは少し異なる方法を使用します。

RMO プログラミング オブジェクトでは、SQL Server のインスタンスへの接続は、Microsoft.SqlServer.Management.Common 名前空間によって実装された ServerConnection オブジェクトを使用して行われる必要があります。サーバーへのこの接続は、RMO プログラミング オブジェクトからは独立して行われます。そして、インスタンスの作成時、またはオブジェクトの ConnectionContext プロパティへの割り当てによって、RMO オブジェクトに渡されます。この方法では、RMO プログラミング オブジェクトおよび接続オブジェクト インスタンスを別々に作成および管理することが可能となり、単一の接続オブジェクトを複数の RMO プログラミング オブジェクトと共に再利用することができます。レプリケーション サーバーへの接続には次のルールが適用されます。

  • 接続のプロパティはすべて、ServerConnection オブジェクトに対して定義します。

  • SQL Server のインスタンスへの各接続には、独自の ServerConnection オブジェクトが必要です。

  • 接続を作成してサーバーに正常にログオンするための認証情報はすべて、ServerConnection オブジェクトで提供します。

  • 既定では、接続は Microsoft Windows 認証を使用して作成します。SQL Server 認証を使用するには、LoginSecure を False に設定し、Login および Password に、有効な SQL Server ログオンおよびパスワードを設定しておく必要があります。セキュリティの資格情報は、常に安全に格納および処理し、いつでも可能であれば実行時に提供する必要があります。

  • Connect メソッドは、RMO プログラミング オブジェクトに接続を渡す前に呼び出す必要があります。

使用例

提供されているコード例を使用するには、アプリケーションを作成するプログラミング環境、プログラミング テンプレート、およびプログラミング言語を選択する必要があります。 詳細については、SQL Server オンライン ブックの「Visual Studio .NET で Visual Basic SMO プロジェクトを作成する方法」および「Visual Studio .NET で Visual C# SMO プロジェクトを作成する方法」を参照してください。

Visual Basic で Windows 認証を使用して SQL Server のローカル インスタンスに接続する

SQL Server のローカル インスタンスへの接続に必要なコードは多くありません。ただし、認証方法とサーバーの既定の設定によってコードが異なります。接続は、データの取得を必要とする操作が初めて発生する際に作成します。

この例は、Windows 認証を使用して SQL Server のローカル インスタンスに接続する Visual Basic .NET コードです。

'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'The connection is established when a property is requested.
Console.WriteLine(srv.Information.Version)
'The connection is automatically disconnected when the Server variable goes out of scope.

Visual C# で Windows 認証を使用して SQL Server のローカル インスタンスに接続する

SQL Server のローカル インスタンスへの接続に必要なコードは多くありません。ただし、認証方法とサーバーの既定の設定によってコードが異なります。接続は、データの取得を必要とする操作が初めて発生する際に作成します。

この例は、Windows 認証を使用して SQL Server のローカル インスタンスに接続する Visual C# .NET コードです。

{ 
//Connect to the local, default instance of SQL Server. 
Server srv; 
srv = new Server(); 
//The connection is established when a property is requested. 
Console.WriteLine(srv.Information.Version); 
} 
//The connection is automatically disconnected when the Server variable goes out of scope.

Visual Basic で Windows 認証を使用して SQL Server のリモート インスタンスに接続する

Windows 認証を使用して SQL Server のインスタンスに接続する場合、認証の種類を指定する必要はありません。Windows 認証が既定です。

この例は、Windows 認証を使用して SQL Server のリモート インスタンスに接続する Visual Basic .NET コードです。文字列変数の strServer にはリモート インスタンスの名前が含まれています。

'Connect to a remote instance of SQL Server.
Dim srv As Server
'The strServer string variable contains the name of a remote instance of SQL Server.
srv = New Server(strServer)
'The actual connection is made when a property is retrieved. 
Console.WriteLine(srv.Information.Version)
'The connection is automatically disconnected when the Server variable goes out of scope.

Visual C# で Windows 認証を使用して SQL Server のリモート インスタンスに接続する

Windows 認証を使用して SQL Server のインスタンスに接続する場合、認証の種類を指定する必要はありません。既定は Windows 認証です。

この例は、Windows 認証を使用して SQL Server のリモート インスタンスに接続する Visual C# .NET コードです。文字列変数の strServer にはリモート インスタンスの名前が含まれています。

{ 
//Connect to a remote instance of SQL Server. 
Server srv; 
//The strServer string variable contains the name of a remote instance of SQL Server. 
srv = new Server(strServer); 
//The actual connection is made when a property is retrieved. 
Console.WriteLine(srv.Information.Version); 
} 
//The connection is automatically disconnected when the Server variable goes out of scope.

Visual Basic で SQL Server 認証を使用して SQL Server のインスタンスに接続する

SQL Server 認証を使用して SQL Server のインスタンスに接続する場合、認証の種類を指定する必要があります。この例では、もう 1 つの方法として、ServerConnection オブジェクト変数を宣言する方法を示します。この方法では、接続情報の再利用が可能になります。

この例は、リモート インスタンスに接続する方法を示す Visual Basic .NET コードです。vPassword にはログインとパスワードが含まれています。

'Declare a ServerConnection object variable to specify SQL authentication, login and password.
Dim conn As New ServerConnection
conn.LoginSecure = False
conn.Login = vlogin
conn.Password = vpassword
'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server(conn)
'The actual connection is made when a property is retrieved.
Console.WriteLine(srv.Information.Version)
'The connection is automatically disconnected when the Server variable goes out of scope.

Visual C# で SQL Server 認証を使用して SQL Server のインスタンスに接続する

SQL Server 認証を使用して SQL Server のインスタンスに接続する場合、認証の種類を指定する必要があります。この例では、もう 1 つの方法として、ServerConnection オブジェクト変数を宣言する方法を示します。この方法では、接続情報の再利用が可能になります。

この例は、リモート インスタンスに接続する方法を示す Visual C# .NET コードです。vPassword にはログインとパスワードが含まれています。

{ 
//Connect to a remote instance of SQL Server. 
Server srv; 
//The strServer string variable contains the name of a remote instance of SQL Server. 
srv = new Server(strServer); 
//The actual connection is made when a property is retrieved. 
Console.WriteLine(srv.Information.Version); 
} 
//The connection is automatically disconnected when the Server variable goes out of scope.

関連項目

参照