Bí danh SQL Server 2008R2 không hoạt động


7

Tôi có một tình huống thú vị ở đây. Về cơ bản, chúng tôi đang cố gắng di chuyển một số cơ sở hạ tầng Máy chủ SQL sang phần cứng mới và một trong các hộp (cụm đơn 2 nút đơn) đang chạy 2008R2. Những cái khác là 2012 & 2014, nhưng những cái đó không thể hiện vấn đề này.

Có một ứng dụng kết nối với một máy chủ có tên là "OLD-SQL"; và giả sử IP đó là 11,22.33.44. Đây là tên của hộp SQL kế thừa chạy phiên bản mặc định, SQL 2008R2 và Windows Server 2008R2. Cài đặt / config / chuỗi / kết nối của ứng dụng vào bất cứ lúc nào không thể thay đổi.

Hộp SQL mới được thiết lập để thay thế hộp đó, được đặt tên là "NEW-SQL"; và giả sử IP của nó là 11,22.33.55. Cũng đang chạy SQL 2008R2 (cùng bản dựng SQL). HĐH là Windows Server 2012 R2 (HĐH mới hơn). Cả hai hộp thực sự là Các trường hợp được phân cụm với 2 nút (mỗi cụm chuyển đổi dự phòng kiểu cũ, không có gì lạ mắt).

Vì vậy, để hỗ trợ cho việc di chuyển, hiện tại, để thử nghiệm / mục đích QA, chúng tôi đã thực hiện như sau: 1. Thiết lập tệp Máy chủ trên máy QA của máy khách để chuyển hướng tên "OLD-SQL" sang 11,22.33.55 (mới người phục vụ). 2. Tạo Bí danh Máy chủ SQL trên máy chủ NEW-SQL (sử dụng SQL Config Mgr.), Được đặt tên là "OLD-SQL", chỉ vào chính nó , cổng 1433, giao thức TCP / IP.

Để kiểm tra, tôi thử kết nối qua SSMS; Tôi nhập "OLD-SQL" làm tên máy chủ để kết nối. Nó không thành công với lỗi "bối cảnh SSPI" khét tiếng ( https://support.microsoft.com/en-us/kb/811889 ). Điều tương tự cũng xảy ra với ứng dụng đang được thử nghiệm. Ping từ cmd-line giải quyết tốt - nó biết "OLD-SQL" phân giải thành IP mới 11,22.33.55 dựa trên tệp Máy chủ.

Bây giờ , để thực sự ném cờ lê vào mọi thứ. Tôi quay trở lại máy chủ NEW-SQL và thêm một Bí danh khác , cùng tham số nhưng được đặt tên là "OLD-SQL2". Tên này là duy nhất trong mạng miền. Tôi quay trở lại hộp của mình, thay đổi tệp Máy chủ của mình để trỏ từ tên đó sang IP (11,22.33.55) và đi đến SSMS và thử kết nối lại. NHỮNG CÔNG VIỆC NÀY!

Tôi xác minh rằng tôi đang ở "đúng máy chủ" bằng cách thực hiện SELECT @@SERVERNAME và lo lắng, nó nói "NEW-SQL". Nhưng tất nhiên đây không phải là bí danh tôi thực sự muốn; Tôi muốn có thể đặt cho nó bí danh "OLD-SQL" và ứng dụng của tôi được chuyển hướng đến "NEW-SQL" thông qua mục nhập Máy chủ và Bí danh SQL.

Vậy tôi đang làm gì sai với bí danh đầu tiên? Có phải là tôi không thể sử dụng cùng tên với một máy chủ hiện có trên mạng, với 2008R2?

Bài đăng tương tự trên SO: /programming/6406811/alias-not-usiness-on-sql-server-2008-r2 (Không giải quyết được vấn đề)

PS: Tôi nói "với 2008R2" một cách cụ thể, bởi vì khi tôi thử cài đặt tương tự (Máy chủ, Bí danh SQL) với các hộp 2012-2014 của chúng tôi, chúng hoạt động theo cách đầu tiên rất tốt! (Tức là Bí danh trên hộp "NEW-SQL2012" có thể là "OLD-SQL2012", giống như một máy chủ hiện có và không có vấn đề gì khi kết nối hoặc bất cứ điều gì.)

PPS: Tôi đã đọc về những bí danh này giống như một thứ thuộc về khách hàng, nhưng đó là lý do tại sao tôi sử dụng thủ thuật tệp Hosts. Khi chúng tôi sẵn sàng cho việc di chuyển "thực", chúng tôi sẽ sử dụng DNS và các thủ thuật khác ngoài sự hiểu biết của tôi (đó là miền của SysEng) để chuyển hướng máy khách (ứng dụng / máy tính) sang máy chủ mới, nhưng hiện tại họ đã nói , để thử nghiệm, điều tập tin Hosts là một sự thay thế tốt.

Cập nhật : Sự khác biệt chính giữa các thiết lập "làm việc" và thiết lập "không hoạt động", bên cạnh các phiên bản SQL Server, là thực tế là phiên bản 2008R2 cũ "SQL-OLD", khi tôi kết nối bằng cách sử dụng cài đặt "nguyên sơ" ( không có bí danh hoặc host-file-redir.), sử dụng xác thực Kerberos . Khi tôi kết nối thông qua một bí danh hoặc chuyển hướng duy nhất, chẳng hạn như "OLD-SQL2", nó sẽ đăng ký dưới dạng NTLM. Và trong TẤT CẢ các phương thức kết nối làm việc KHÁC , đó cũng là NTLM. Kerberos đang làm cái quái gì vậy ??


Thảo luận về câu hỏi này đã được chuyển sang trò chuyện . Vui lòng sử dụng cơ sở đó thay vì thêm ý kiến ​​ở đây.
Paul White 9

Câu trả lời:


6

Tóm tắt những gì chúng tôi phát hiện ra trong cuộc trò chuyện.

Khi kết nối qua mạng nếu Windows Server được đăng ký trong Active Directory (AD) với Tên hiệu trưởng dịch vụ (SPN), các máy khách cố gắng kết nối với Xác thực tích hợp sẽ nhận được mã thông báo Kerberos từ AD cho đối tượng AD khớp với tên máy chủ để đính kèm với xác thực. Kerberos sẽ không được sử dụng khi máy chủ đang được kết nối không có SPN hoặc đang được kết nối bằng Xác thực SQL.

Trong trường hợp này, vì "OLD-SQL" vẫn được đăng ký trong AD và có giả mạo đã đăng ký SPN, DNS trong tệp máy chủ cục bộ sẽ không hoạt động khi sử dụng Xác thực tích hợp / Windows, vì không có gì điều chỉnh mã thông báo nào được trả về / được sử dụng từ AD. Dường như không có cách nào để khách hàng biết sử dụng mã thông báo Kerberos cho "NEW-SQL" với máy chủ "OLD-SQL" ban đầu vẫn đang phục vụ, ngoại trừ xóa SPN "OLD-SQL" khỏi AD để buộc xác thực quay trở lại NTLM. Việc giả mạo DNS hoạt động cho các bí danh không phải là tên máy tính thực tế đã đăng ký trong AD hoặc không có SPN đã đăng ký, vì AD không trả lại mã thông báo cho chúng, vì vậy xác thực quay trở lại sử dụng NTLM.

Người giới thiệu

Hiểu khóa Kerberos

Đăng ký SPN

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.