2010-08-28 32 views
7

Ứng dụng C# của tôi sử dụng SMO để thực hiện nhiều việc khác nhau với cá thể SQL Server do người dùng chọn. Đặc biệt, nó thay đổi chế độ xác thực:Khởi động lại phiên bản SQL Server bằng SMO

ServerConnection conn = new ServerConnection(connection); 
Server server = new Server(conn); 

server.Settings.LoginMode = ServerLoginMode.Mixed; 

Sau khi thay đổi, hãy đăng nhập lại. Tuy nhiên, tôi không thể tìm thấy bất kỳ cách nào trong SMO để khởi động lại trường hợp đã chọn.

Tôi đã cố gắng google điều này, nhưng chỉ tìm thấy một loạt các mẫu liệt kê các dịch vụ đang chạy và so sánh tên của chúng với tên dịch vụ máy chủ SQL. Tôi không thích cách này vì nó dễ bị lỗi và dựa vào cách Microsoft hiện đang đặt tên cho các cá thể máy chủ SQL.

Có cách nào để khởi động lại phiên bản đã chọn trong SMO không?

Trả lời

4

Thêm tham chiếu đến System.ServiceProcess.

using System.ServiceProcess; 

public static void RestartService(string sqlInstanceName) { 
    if (string.IsNullOrEmpty(sqlInstanceName)) { 
     throw new ArgumentNullException("sqlInstanceName"); 
    } 

    const string DefaultInstanceName = "MSSQLSERVER"; 
    const string ServicePrefix = "MSSQL$"; 
    const string InstanceNameSeparator = "\\"; 

    string serviceName = string.Empty; 
    string server = sqlInstanceName; 
    string instance = DefaultInstanceName; 

    if (server.Contains(InstanceNameSeparator)) { 
     int pos = server.IndexOf(InstanceNameSeparator); 
     server = server.Substring(0, pos); 
     instance = sqlInstanceName.Substring(pos + 1); 
    } 

    serviceName = ServicePrefix + instance; 
    ServiceController sc = new ServiceController(serviceName, server); 
    sc.Stop(); 
    sc.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(30)); 
    sc.Start(); 
    sc.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(30)); 
} 
0

Bạn phải khởi động lại thủ công! lúc đầu, bạn phải dừng dịch vụ và chờ dịch vụ thay đổi trạng thái của nó và bạn phải khởi động dịch vụ và một lần nữa đợi dịch vụ thay đổi trạng thái của nó.

Trang web MSDN có mẫu cho hoạt động này: http://msdn.microsoft.com/en-us/library/ms162139(v=SQL.90).aspx

Các vấn đề liên quan