Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

cài đặt đăng ký để kích hoạt TCP trên SQL Server 2005 và 2008 là gì?

Trừ khi bạn có lý do chính đáng để sửa đổi sổ đăng ký trực tiếp, tôi khuyên bạn nên xem xét sử dụng WMI . WMI sẽ cung cấp cho bạn một triển khai bất khả tri phiên bản hơn. WMI có thể được truy cập thông qua System.Management không gian tên. Bạn có thể có mã trông giống như thế này.

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

Mã này giả định một tham chiếu dự án đến System.Management.dll và câu lệnh sử dụng sau:

using System.Management;

Giao thức Sql blog có bài viết đi sâu vào một số chi tiết về những gì đoạn mã trên đang làm.

Lưu ý:Nếu tường lửa đang chặn (các) cổng, bạn sẽ vẫn không thể truy cập máy chủ qua 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. MappingException Edm.String không tương thích với SqlServer.varbinary

  2. SQL Server:Lỗi liên kết giao tiếp SSL yêu cầu (không nhận được gói)

  3. Cách tải tệp XML phân cấp khổng lồ (nhưng đơn giản) vào một bảng SQL

  4. Tạo một máy chủ được liên kết trong SQL Server (Ví dụ T-SQL)

  5. TransactSQL để chạy một tập lệnh TransactSQL khác