sql >> Databáze >  >> RDS >> Sqlserver

jaká jsou nastavení registru pro povolení TCP na SQL Server 2005 a 2008?

Pokud nemáte dobrý důvod pro přímou úpravu registru, doporučuji vám zvážit použití WMI . WMI vám poskytne implementaci agnostičtější verze. K WMI lze přistupovat prostřednictvím System.Management jmenný prostor. Můžete mít kód, který vypadá nějak takto.

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

Tento kód předpokládá odkaz projektu na System.Management.dll a následující příkaz pomocí:

using System.Management;

Protokoly SQL blog má článek to jde do některých podrobností o tom, co dělá výše uvedený kód.

Poznámka:Pokud port(y) blokuje brána firewall, stále nebudete moci přistupovat k serveru přes TCP.



  1. Nepodařilo se připojit k mysql na 127.0.0.1:3306 s uživatelem root přístup odepřen pro uživatele 'root'@'localhost' (pomocí hesla:YES)

  2. Vyhledávání CHARINDEX vs LIKE poskytuje velmi odlišný výkon, proč?

  3. Nesprávná velikost odpovědi COM_STMT_PREPARE. Přijato 7. LARAVEL ERROR

  4. PHP salt a hash SHA256 pro přihlašovací heslo