0
我試圖從c#中更改SQL Server 2005中實例的TCP/IP端口和動態端口。 我已經嘗試瞭解決方案,如上面的代碼,但它只有在安裝了某些Server 2008功能時才起作用(如:SharedManagementObject.msi)。更改C#中的SQL Server 2005 TCP/IP端口#
我需要一個適用於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#中的解決方案自動執行它!我已經找到了一個解決方案,但它只能使用SqlServer 2008對象工作。 –