Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

apa pengaturan registri untuk mengaktifkan TCP pada SQL Server 2005 dan 2008?

Kecuali Anda memiliki alasan yang baik untuk memodifikasi registri secara langsung, saya sarankan Anda mempertimbangkan untuk menggunakan WMI . WMI akan memberi Anda implementasi agnostik versi yang lebih banyak. WMI dapat diakses melalui System.Management ruang nama. Anda dapat memiliki kode yang terlihat seperti ini.

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

Kode ini mengasumsikan referensi proyek ke System.Management.dll dan menggunakan pernyataan berikut:

using System.Management;

Protokol Sql blog memiliki artikel yang masuk ke beberapa detail tentang apa yang dilakukan kode di atas.

Catatan:Jika firewall memblokir port, Anda tetap tidak dapat mengakses server melalui TCP.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menyimpan hasil Pivot dinamis ke dalam tabel sementara di SQL Server

  2. SQL Threadsafe UPDATE TOP 1 untuk Antrian FIFO

  3. Cara Menggunakan OBJECT_ID() pada Objek Lintas Database di SQL Server

  4. Kesalahan SQL 2008 VS 2012:Sintaks salah di dekat kata kunci 'COMPUTE'

  5. Apakah ada cara untuk mengulang variabel tabel di TSQL tanpa menggunakan kursor?