Select the product you need help with
Cách khắc phục thông báo lỗi "Không thể tạo ngữ cảnh SSPI"ID c?a bài: 811889 - Xem s?n ph?m mà bài này áp d?ng vào. ? Trang nàyTÓM T?T Bài viết từng bước này mô tả cách khắc phục sự cố cho các nguồn điển hình nhất của thông báo lỗi "Không thể tạo ngữ cảnh SSPI". Bạn có thể nhận được thông báo lỗi này trong các điều kiện sau:
Hiểu thuật ngữ Kerberos và Tên Cơ bản của Dịch vụTrình điều khiển SQL Server trên máy khách sử dụng tính năng bảo mật tích hợp để sử dụng mã thông báo bảo mật Windows của tài khoản người dùng để kết nối thành công với máy tính đang chạy SQL Server. Mã thông báo bảo mật Windows được uỷ nhiệm từ máy khách sang máy tính đang chạy SQL Server. Trình điều khiển SQL Server thực hiện quá trình uỷ nhiệm này khi mã thông báo bảo mật của người dùng được uỷ nhiệm từ một máy tính sang máy tính khác bằng cách sử dụng một trong những cấu hình sau:
Lỗi "Không thể tạo ngữ cảnh SSPI" xuất hiện khi SSPI sử dụng Kerberos để uỷ nhiệm qua TCP/IP và Kerberos không thể hoàn thành các thao tác cần thiết để uỷ nhiệm thành công mã thông báo bảo mật của người dùng cho máy tính đích đang chạy SQL Server. Lý do Giao diện Security Support Provider chọn NTLM hoặc KerberosKerberos sử dụng mã nhận dạng có tên "Tên Cơ bản của Dịch vụ" (SPN). Coi SPN là một miền hoặc mã nhận dạng duy nhất của nhóm của phiên bản nào đó trong tài nguyên máy chủ mạng. Bạn có thể có một SPN cho một dịch vụ Web, một dịch vụ SQL hoặc một dịch vụ SMTP. Bạn cũng có thể có nhiều phiên bản dịch vụ Web trên cùng một máy tính thực có SPN duy nhất.Một SPN cho SQL Server bao gồm các phần tử sau:
Khi Trình điều khiển SQL Server trên máy khách sử dụng tính năng bảo mật tích hợp để kết nối với SQL Server, mã trình điều khiển trên máy khách cố xử lý DNS đủ điều kiện của máy tính đang chạy SQL Server bằng cách sử dụng API kết nối mạng WinSock. Để thực hiện thao tác này, mã trình điều khiển gọi các API WinSock gethostbyname và gethostbyaddr. Ngay cả khi địa chỉ IP hoặc tên máy chủ được truyền ở dạng tên máy tính đang chạy SQL Server, trình điều khiển SQL Server cố xử lý DNS đủ điều kiện của máy tính nếu máy tính đang sử dụng tính năng bảo mật tích hợp. Khi trình điều khiển SQL Server trên máy khách xử lý DNS đủ điều kiện của máy tính đang chạy SQL Server thì DNS tương ứng được sử dụng để tạo SPN cho máy tính này. Do đó, mọi sự cố liên quan đến việc địa chỉ IP hay tên máy chủ được xử lý thành DNS đủ điều kiện bởi WinSock có thể khiến trình điều khiển SQL Server tạo một SPN không hợp lệ cho máy tính đang chạy SQL Server. Ví dụ: SPN không hợp lệ mà trình điều khiển SQL Server phía máy khách có thể tạo ở dạng DNS đủ điều kiện được xử lý là:
Yếu tố chính giúp cho quá trình xác thực Kerberos thành công là chức năng DNS hợp lệ trên mạng. Bạn có thể kiểm tra chức năng này trên máy khách và máy chủ bằng cách sử dụng tiện ích dòng lệnh Ping. Trên máy khách, hãy chạy lệnh sau để lấy địa chỉ IP của máy chủ đang chạy SQL Server (nơi mà tên máy tính đang chạy SQL Server là SQLServer1): ping sqlserver1 Để biết liệu tiện ích dòng lệnh Ping có xử lý DNS đủ điều kiện của SQLServer1 hay không, hãy chạy lệnh sau:ping -a IPAddress Ví dụ: C:\>ping SQLSERVER1 Ping SQLSERVER1 [123.123.123.123] với 32 byte dữ liệu: Trả lời từ 123.123.123.123: bytes=32 time<10ms TTL=128 Trả lời từ 123.123.123.123: bytes=32 time<10ms TTL=128 Trả lời từ 123.123.123.123: bytes=32 time<10ms TTL=128 Trả lời từ 123.123.123.123: bytes=32 time<10ms TTL=128 Thống kê ping cho 123.123.123.123: Gói tin: Đã gửi = 4, Đã nhận = 4, Đã mất = 0 (0% mất), Thời gian của quá trình hồi đáp xấp xỉ tính bằng mili giây: Tối thiểu = 0ms, Tối đa = 0ms, Trung bình = 0ms C:\>ping -a 123.123.123.123 Ping SQLSERVER1.northamerica.corp.mycompany.com [123.123.123.123] với 32 byte dữ liệu: Trả lời từ 123.123.123.123: bytes=32 time<10ms TTL=128 Trả lời từ 123.123.123.123: bytes=32 time<10ms TTL=128 Trả lời từ 123.123.123.123: bytes=32 time<10ms TTL=128 Trả lời từ 123.123.123.123: bytes=32 time<10ms TTL=128 Thống kê ping cho 123.123.123.123: Gói tin: Đã gửi = 4, Đã nhận = 4, Đã mất = 0 (0% mất), Thời gian của quá trình hồi đáp xấp xỉ tính bằng mili giây: Tối thiểu = 0ms, Tối đa = 0ms, Trung bình = 0ms C:\> Tạo Tên Cơ bản của Dịch vụ SQL ServerĐây là một trong những phần quan trọng trong tương tác Kerberos và SQL Server. Với SQL Server, bạn có thể chạy dịch vụ SQL Server ở một trong những điều kiện sau: tài khoản LocalSystem, tài khoản người dùng cục bộ hay tài khoản người dùng trong miền. Khi phiên bản dịch vụ SQL Server khởi động, nó cố đăng ký SPN riêng của mình trong Active Directory bằng cách sử dụng lệnh gọi API DsWriteAccountSpn. Nếu lệnh gọi không thành công, cảnh báo sau được ghi trong Trình xem Sự kiện:Nguồn: MSSQLServer EventID: Mô tả 19011: Thông tin SuperSocket: (SpnRegister) : Lỗi 8344. Để biết thêm thông tin về chức năng DsWriteAccountSpn, hãy truy nhập Web site sau của Microsoft:http://msdn2.microsoft.com/en-us/library/ms676056.aspx
(http://msdn2.microsoft.com/en-us/library/ms676056.aspx)
Simplified explanationNếu bạn chạy dịch vụ SQL Server trong tài khoản LocalSystem thì SPN được tự động đăng ký và Kerberos tương tác thành công với máy tính đang chạy SQL Server. Tuy nhiên, nếu bạn chạy dịch vụ SQL Server trong tài khoản miền hoặc trong tài khoản cục bộ thì nỗ lực tạo SPN sẽ không thành công trong hầu hết các trường hợp vì tài khoản miền và tài khoản cục bộ không có quyền đặt SPN riêng của chúng. Khi quá trình tạo SPN không thành công, điều này nghĩa là không có SPN nào được thiết lập cho máy tính đang chạy SQL Server. Nếu bạn kiểm tra bằng tài khoản quản trị viên trong miền làm tài khoản dịch vụ SQL Server thì SPN được tạo thành công vì uỷ nhiệm cấp quản trị viên trong miền mà bạn phải có để tạo SPN đang có sẵn.Vì bạn có thể không sử dụng tài khoản quản trị viên trong miền để chạy dịch vụ SQL Server (để ngăn rủi ro về bảo mật) nên máy tính đang chạy SQL Server không thể tạo SPN riêng của nó. Do đó, bạn phải tạo thủ công SPN cho máy tính đang chạy SQL Server nếu bạn muốn sử dụng Kerberos khi bạn kết nối với máy tính đang chạy SQL Server. Điều này đúng nếu bạn đang chạy SQL Server trong tài khoản người dùng trong miền hoặc trong tài khoản người dùng cục bộ. SPN mà bạn tạo phải được gán cho tài khoản dịch vụ của dịch vụ SQL Server trên máy tính cụ thể đó. Không thể gán SPN cho vùng chứa máy tính trừ khi máy tính đang chạy SQL Server khởi động bằng hệ thống cục bộ. Phải có một và duy nhất một SPN và SPN này phải được gán cho vùng chứa thích hợp. Thường thì đây là tài khoản dịch vụ hiện tại c?a SQL Server. Tuy nhiên, đây là tài khoản máy tính có hệ thống cục bộ. Kiểm tra miềnKiểm tra xem miền mà bạn đăng nhập có thể giao tiếp với miền có máy tính đang chạy SQL Server hay không. Cũng phải có giải pháp tên hợp lý trong miền.
Cách đặt cấu hình dịch vụ SQL Server để tạo các SPN động cho phiên bản SQL ServerĐể đặt cấu hình dịch vụ SQL Server để tạo các SPN động, bạn phải sửa đổi thiết đặt kiểm soát truy nhập của tài khoản trong dịch vụ thư mục Active Directory. Bạn phải cấp quyền "Đọc servicePrincipalName" và "Ghi servicePrincipalName" cho tài khoản dịch vụ SQL Server.Cảnh báo Nếu bạn sử dụng phần đính vào Sửa Giao diện Dịch vụ Active Directory (ADSI), tiện ích LDP hay bất kỳ máy khách LDAP phiên bản 3 nào khác và bạn sửa đổi không đúng các thuộc tính cho đối tượng của Active Directory thì bạn có thể gây ra sự cố nghiêm trọng. Các sự cố này có thể yêu cầu bạn cài đặ lại Microsoft Windows Server 2003, Microsoft Windows 2000 Server, Microsoft Exchange Server 2003, Microsoft Exchange 2000 Server hay cả Windows và Exchange. Chúng tôi không thể đảm bảo có thể giải quyết các sự cố gây ra do việc sửa đổi không đúng các thuộc tính đối tượng của Active Directory. Bạn sẽ tự chịu rủi ro khi sửa đổi các thuộc tính này. Chú ý Để cấp các quyền thích hợp và quyền của người dùng cho tài khoản khởi động SQL Server, bạn phải được đăng nhập với tư cách là quản trị viên miền hoặc phải yêu cầu quản trị viên miền thực hiện tác vụ này. Để đặt cấu hình dịch vụ SQL Server để tạo các SPN động, hãy làm theo các bước sau:
Kiểm tra môi trường máy chủKiểm tra một số thiết đặt cơ bản trên máy tính cài đặt SQL Server:
Kiểm tra môi trường máy kháchKiểm tra các mục sau của máy khách:
Kiểm tra tiện ích mạng máy kháchTiện ích Mạng Máy khách (CNU) được cung cấp cùng với Cấu phần Truy nhập Dữ liệu Microsoft (MDAC) và được sử dụng để đặt cấu hình kết nối với máy tính đang chạy SQL Server. Bạn có thể sử dụng tiện ích MDAC Cliconfg.exe CNU để đặt cấu hình kết nối:
Thông tin thu thập để mở trường hợp Hỗ trợ Sản phẩm của Microsoft (PSS)Nếu bạn không thể biết nguyên nhân của sự cố bằng cách sử dụng các bước khắc phục sự cố trong bài viết này, hãy thu thập thông tin sau và mở trường hợp Hỗ trợ Sản phẩm của Microsoft (PSS):Để biết danh sách đầy đủ số điện thoại Dịch vụ Hỗ trợ Sản phẩm của Microsoft và thông tin về chi phí hỗ trợ, hãy truy nhập Web site sau của Microsoft: http://support.microsoft.com/contactus/?ln=vi-vn&ws=support
(http://support.microsoft.com/contactus/?ln=vi-vn&ws=support)
Cách thiết lập thủ công Tên Cơ bản của Dịch vụ cho SQL ServerĐể biết thêm thông tin về cách thiết lập thủ công Tên Cơ bản của Dịch vụ cho SQL Server, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:319723 Security Support Provider Interface (SSPI) là giao diện cho bảo mật Microsoft Windows NT được sử dụng để xác thực Kerberos và hỗ trợ lược đồ xác thực của NTLM Security Support Provider. Quá trình xác thực diễn ra ở cấp hệ điều hành khi bạn đăng nhập vào miền Windows. Xác thực Kerberos chỉ khả dụng trên máy tính chạy Windows 2000 được kích hoạt Kerberos và đang sử dụng Active Directory.
(http://support.microsoft.com/kb/319723/vi-vn/
)
Cách sử dụng xác thực Kerberos trong SQL Server
SSPI chỉ được sử dụng cho kết nối được tạo bằng cách sử dụng chức năng Xác thực Windows. (Xác thực Windows cũng được biết đến là Kết nối Tin cậy hay Bảo mật Tích hợp). SSPI không được sử dụng bởi giao thức Đường ống được Đặt tên hoặc các kết nối đa giao thức. Do đó, bạn có thể tránh sự cố bằng cách đặt cấu hình máy khách của mình để kết nối từ giao thức không phải TCP/IP. Khi máy khách SQL Server cố sử dụng tính năng bảo mật tích hợp qua khe cắm TCP/IP tới máy tính từ xa đang chạy SQL Server, thư viện mạng máy khách SQL Server sử dụng API SSPI để thực hiện uỷ nhiệm bảo mật. Máy khách mạng SQL Server (Dbnetlib.dll) thực hiện cuộc gọi tới chức năng AcquireCredentialsHandle và chuyển thành "thương lượng" cho tham số pszPackage. Thao tác này thông báo cho nhà cung cấp bảo mật cơ bản thực hiện uỷ nhiệm thương lượng. Trong ngữ cảnh này, thương lượng có nghĩa là cố xác thực Kerberos hoặc NTLM trên máy tính chạy Windows. Nói cách khác, Windows sử dụng uỷ nhiệm Kerberos nếu máy tính đích đang chạy SQL Server có SPN kết hợp được đặt cấu hình đúng. Nếu không, Windows sử dụng uỷ nhiệm NTLM. Chú ý Kiểm tra xem bạn có đang sử dụng tài khoản có tên "SYSTEM" để khởi động bất kỳ dịch vụ SQL Server nào hay không (MSSQLServer, SQLServerAgent, MSSearch). Từ khoá SYSTEM có thể gây xung đột với Trung tâm Phân phối Khoá (KDC). THAM KH?O Để biết thêm thông tin về cách hoạt động của tính năng bảo mật Kerberos và SSPI, hãy bấm vào các số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft: 266080
(http://support.microsoft.com/kb/266080/vi-vn/
)
Câu trả lời cho câu hỏi thường gặp về Kerberos
231789
(http://support.microsoft.com/kb/231789/vi-vn/
)
Quy trình đăng nhập cục bộ cho Windows 2000
304161
(http://support.microsoft.com/kb/304161/vi-vn/
)
Xác thực tương hỗ SSPI được chỉ ra ở phía máy khách chứ không phải ở phía máy chủ
232179
(http://support.microsoft.com/kb/232179/vi-vn/
)
Quản trị Kerberos trong Windows 2000
230476
(http://support.microsoft.com/kb/230476/vi-vn/
)
Mô tả các lỗi phổ biến liên quan đến Kerberos trong Windows 2000
262177
(http://support.microsoft.com/kb/262177/vi-vn/
)
Cách kích hoạt ghi sự kiện Kerberos
277658
(http://support.microsoft.com/kb/277658/vi-vn/
)
Setspn không thành công nếu tên miền khác với tên NetBIOS mà SPN SQL Server được đăng ký
244474
(http://support.microsoft.com/kb/244474/vi-vn/
)
Cách buộc Kerberos sử dụng TCP thay vì UDP trong Windows Server 2003, Windows XP và Windows 2000
326985 Để xem báo cáo về tính năng bảo mật Microsoft SQL Server 2000, hãy truy nhập Web site sau của Microsoft:
(http://support.microsoft.com/kb/326985/vi-vn/
)
Cách khắc phục sự cố liên quan đến Kerberos trong IIS
http://technet.microsoft.com/en-us/cc984178.aspx
(http://technet.microsoft.com/en-us/cc984178.aspx)
Thu?c tínhID c?a bài: 811889 - L?n xem xét sau cùng: 17 Tháng Chín 2011 - Xem xét l?i: 2.0 Áp d?ng
| D?ch tiêu đ?
|


Quay l?i đ?u trang








