C# で SQL EXPRESS 2008 インスタンスのデフォルト ポート (1433) を変更する必要があります。
2 に答える
これを行うには、SMOに付属のWMIプロバイダーを使用する必要があります。への参照を追加します
Microsoft.SqlServer.ConnectionInfo
Microsoft.SqlServer.Management.Sdk.Sfc
Microsoft.SqlServer.Smo
Microsoft.SqlServer.SqlWmiManagement
Microsoft.SqlServer.WmiEnum
とのusing
ために
using Microsoft.SqlServer.Management.Smo.Wmi;
その場合、コードは基本的に次のようになります。
ManagedComputer c = new ManagedComputer();
//Get the SQL service and stop it if it's running
Service svc = c.Services["MSSQL$SQLEXPRESS"];
if (svc.ServiceState == ServiceState.Running)
{
svc.Stop();
}
//Connect to the SQLEXPRESS instance and change the port
ServerInstance s = c.ServerInstances["MSSQL$SQLEXPRESS"];
ServerProtocol prot = s.ServerProtocols["Tcp"];
prot.IPAddresses[0].IPAddressProperties["TcpPort"].Value = "1433";
//Commit the changes
prot.Alter();
//Restart the service
svc.Start();
これは、複数のアドレスではなく1つのIPアドレスがあることを前提としています。複数ある場合は、インデックスをprot.IPAddresses[]に変更する必要があります。
通常、UI を介してポートを再割り当てします
http://msdn.microsoft.com/en-us/library/ms177440.aspx
ただし、レジストリに保持するだけだと思うので、UI で一度特定の番号 (たとえば 12345) に変更してから、HKLM\SOFTWARE\Microsoft\Microsoft SQL Server の下を調べるのが最も簡単な方法です。番号。そうすることで、キーが HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Tcp\IP1 であり、TcpPort という名前の REG_SZ (奇妙に見える) 値を持っていることがわかります。
デフォルト以外のポートにある場合にデフォルトのインスタンスに接続する方法を意味する (または知る必要がある) 場合は、ソースをホストからホスト、ポートに変更します (たとえば、FOO を FOO,12345 に変更します)。