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
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
'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ネットワークプロトコルを有効にする