【发布时间】:2017-02-03 16:24:30
【问题描述】:
我正在尝试从 c# 更改我在 SQL Server 2005 中实例的 TCP/IP 端口和动态端口。 我已经尝试了一个解决方案,如上面的代码所示,但它只有在安装了某些 Server 2008 功能时才有效(例如:SharedManagementObject.msi)。
我需要一个适用于 Sql Server 2005 的解决方案,无需额外安装其他 Sql Server 版本。
这是我已经尝试过的代码(
try
{
Console.WriteLine(" Started...\n");
const string instanceName = "INSTANCENAME";
var managedComputer = new ManagedComputer();
var serviceController = new ServiceController(string.Concat("MSSQL$", instanceName));
Console.WriteLine(" - Istance: " + instanceName + "\n - DisplayName: " + serviceController.DisplayName + "\n");
var serverInstance = managedComputer.ServerInstances[instanceName];
var serverProtocol = serverInstance.ServerProtocols["Tcp"];
var ipAddresses = serverProtocol.IPAddresses;
if (ipAddresses != null)
{
for (var i = 0; i < ipAddresses.Count; i++)
{
var ipAddress = ipAddresses[i];
if (serviceController.Status == ServiceControllerStatus.Running)
{
serviceController.Stop();
serviceController.WaitForStatus(ServiceControllerStatus.Stopped);
}
if (!string.Equals(ipAddress.Name, "IPAll"))
{
ipAddress.IPAddressProperties["Enabled"].Value = true;
}
ipAddress.IPAddressProperties["TcpDynamicPorts"].Value = "";
ipAddress.IPAddressProperties["TcpPort"].Value = "1433";
serverProtocol.Alter();
}
}
if (serviceController.Status == ServiceControllerStatus.Running)
{
return;
}
serviceController.Start();
serviceController.WaitForStatus(ServiceControllerStatus.Running);
Console.WriteLine(" Finished...\n");
}
catch (Exception exception)
{
Console.WriteLine("\n" + exception + "\n");
}
finally
{
Console.Write(" Press any key to continue... ");
Console.ReadKey();
}
【问题讨论】:
标签: c# sql-server sql-server-2005 tcp