sql >> Databasteknik >  >> RDS >> Sqlserver

vad är registerinställningar för att aktivera TCP på SQL Server 2005 och 2008?

Om du inte har en bra anledning att ändra registret direkt, föreslår jag att du överväger att använda WMI . WMI kommer att förse dig med en mer version av agnostisk implementering. WMI kan nås via System.Management namnutrymme. Du kan ha kod som ser ut ungefär så här.

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

Den här koden förutsätter en projektreferens till System.Management.dll och följande med sats:

using System.Management;

Sql-protokollen bloggen har en artikel som går in i detalj på vad ovanstående kod gör.

Obs:Om en brandvägg blockerar porten/portarna kommer du fortfarande inte att kunna komma åt servern via TCP.



  1. Misslyckades med att bygga hjul för psycopg2 - MacOSX med virtualenv och pip

  2. Hur kan jag förhindra att ersättningstecknet förvandlas till en html-enhet i PHP?

  3. Hur begränsar man inkludering på en belongsToMany-förening i Sequelize JS?

  4. mysql välj inom gränsen