web-dev-qa-db-ja.com

ポート番号を使用したSQL Server SMOの使用

SSMSでは、1433以外の特定のポートに設定されたSQL Serverインスタンスに接続する場合、インスタンス名の後に「、ポート番号」を指定するだけです。同様に、System.Data.SqlClient.SqlConnectionを使用していて、データセットにSystem.Data.DataSetを設定する場合、そのオブジェクトに渡す接続文字列のデータソース部分を指定するときにも同じことを行います。

Microsoft.SqlServer.Management.Smo.Serverクラスを使用してこれを行う方法はありませんか?

私は次のような運のないバリエーションを試しました:


$cnString = "Data Source=Server\instance,port;Initial Catalog=master;Trusted_Connection=true;"
$cn = new-object system.data.sqlclient.sqlconnection($cnstring)
$cnSql = New-Object Microsoft.sqlserver.management.common.serverconnection($cn)
$s = New-Object Microsoft.sqlserver.management.smo.server($cnSql)
$s | Select Name, Version

または単に試してみます:


$s = New-Object Microsoft.sqlserver.management.smo.server "Server\Instance,port"
$s | Select Name, Version
3
user507

Server オブジェクトの ServerConnection の部分を明示的な接続文字列に設定し、ポート名を指定するだけで済みます。

Server.ConnectionContext プロパティにアクセスしてこれを行うことができます。

$ConnectionString = "data source = yourinstancename,10055; initial catalog = master; trusted_connection = true;"

$SqlServer = New-Object Microsoft.SqlServer.Management.Smo.Server

$SqlServer.ConnectionContext.ConnectionString = $ConnectionString

$SqlServer.Databases |
    Select-Object Name

または、ServerConnectionオブジェクトをインスタンス化するときにServerオブジェクトを渡すことによって:

$ConnectionString = "data source = yourinstancename,10055; initial catalog = master; trusted_connection = true;"

$ServerConnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection
$ServerConnection.ConnectionString = $ConnectionString

$SqlServer = New-Object Microsoft.SqlServer.Management.Smo.Server($ServerConnection)

$SqlServer.Databases |
    Select-Object Name

[〜#〜] edit [〜#〜]:質問をもう一度読んだところ、あなたの試みの1つは基本的に上に私の2番目のもの。私はあなたのコードを取り、私が変更したのはdata source接続文字列の一部であり、私にとってはうまくいきました。

$cnString = "Data Source=Server\instance,port;Initial Catalog=master;Trusted_Connection=true;"
$cn = new-object system.data.sqlclient.sqlconnection($cnstring)
$cnSql = New-Object Microsoft.sqlserver.management.common.serverconnection($cn)
$s = New-Object Microsoft.sqlserver.management.smo.server($cnSql)
$s | Select Name, Version
5
Thomas Stringer

'Network Library = DBMSSOCN'接続設定を使用して、ネットワークプロトコルとしてTCP/IPを指定できます。次に、示されたSQL Serverポートが使用されます。

$cnString = "Data Source=Server\instance,port;Network Library=DBMSSOCN;Initial Catalog=master;Trusted_Connection=true;"

ここに追加情報のリンクがあります: SqlConnection-> IPアドレスを介して接続

これは、SQL ServerへのTCP/IP接続が有効になっていることを前提としています。 SQL ServerのTCP/IPネットワークプロトコルを有効にする

0
peterk411