sql >> Database >  >> RDS >> Sqlserver

wat zijn registerinstellingen om TCP op SQL Server 2005 en 2008 in te schakelen?

Tenzij je een goede reden hebt om het register rechtstreeks aan te passen, raad ik je aan om WMI te gebruiken . WMI zal u voorzien van een meer versie-agnostische implementatie. WMI is toegankelijk via de System.Management naamruimte. Je zou een code kunnen hebben die er ongeveer zo uitziet.

public void EnableSqlServerTcp(string serverName, string instanceName)
{
    ManagementScope scope =
            new ManagementScope(@"\\" + serverName +
                                @"\root\Microsoft\SqlServer\ComputerManagement");
    ManagementClass sqlService =
            new ManagementClass(scope,
                                new ManagementPath("SqlService"), null);
    ManagementClass serverProtocol =
            new ManagementClass(scope,
                                new ManagementPath("ServerNetworkProtocol"), null);

    sqlService.Get();
    serverProtocol.Get();

    foreach (ManagementObject prot in serverProtocol.GetInstances())
    {
        prot.Get();
        if ((string)prot.GetPropertyValue("ProtocolName") == "Tcp" &&
            (string)prot.GetPropertyValue("InstanceName") == instanceName)
        {
            prot.InvokeMethod("SetEnable", null);
        }
    }

    uint sqlServerService = 1;
    uint sqlServiceStopped = 1;
    foreach (ManagementObject instance in sqlService.GetInstances())
    {
        if ((uint)instance.GetPropertyValue("SqlServiceType") == sqlServerService &&
            (string)instance.GetPropertyValue("ServiceName") == instanceName)
        {
            instance.Get();
            if ((uint)instance.GetPropertyValue("State") != sqlServiceStopped)
            {
                instance.InvokeMethod("StopService", null);
            }
            instance.InvokeMethod("StartService", null);
        }
    }
}

Deze code gaat uit van een projectverwijzing naar System.Management.dll en de volgende gebruiksverklaring:

using System.Management;

De Sql-protocollen blog heeft een artikel dat gaat in enig detail over wat de bovenstaande code doet.

Opmerking:als een firewall de poort(en) blokkeert, hebt u nog steeds geen toegang tot de server via TCP.



  1. De soort die naar niveau 15.000 stroomt

  2. Toegang geweigerd voor MYSQL ERROR 1045

  3. Scheidingsteken voor duizendtallen in SQL Server 2008 voor een kolom

  4. Aan de slag met PostgreSQL 11 op Ubuntu 18.04