sql >> Database teknologi >  >> RDS >> Sqlserver

hvad er indstillinger i registreringsdatabasen for at aktivere TCP på SQL Server 2005 og 2008?

Medmindre du har en god grund til at ændre registreringsdatabasen direkte, foreslår jeg, at du overvejer at bruge WMI . WMI vil give dig en mere version af agnostisk implementering. WMI kan tilgås gennem System.Management navneområde. Du kunne have kode, der ser sådan ud.

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);
        }
    }
}

Denne kode forudsætter en projektreference til System.Management.dll og følgende ved hjælp af sætning:

using System.Management;

Sql-protokollerne bloggen har en artikel der går i detaljer med, hvad ovenstående kode gør.

Bemærk:Hvis en firewall blokerer portene, vil du stadig ikke kunne få adgang til serveren via TCP.



  1. Hvordan sender man en tabel eller rækker til en funktion i Postgresql?

  2. Hent data fra tabel med har Group_concat funktion

  3. MySQL installer og indlæs database på Inno Setup script

  4. Find værdier, der ikke findes i en tabel