Máy chủ đã đăng ký SSMS với Ý định ứng dụng ReadOnly


10

Chúng tôi đang làm việc trên thử nghiệm POC của SQL Server 2014 với Luôn luôn và một trong những người dùng đã hỏi về việc lưu cấu hình SSMS với ReadOnly Intent bằng cách sử dụng các máy chủ đã đăng ký trong nhóm máy chủ cục bộ. Bằng cách này, họ không phải nhập tên bí danh mỗi lần họ cần truy cập vào bản sao ReadOnly .

Thật không may, không có tùy chọn nào trong các máy chủ đã đăng ký để thêm Tùy chọn ApplicationIntent không giống như trình thám hiểm đối tượng thông thường.

Tôi đã xem qua bài viết này của Microsoft về việc thay đổi chuỗi kết nối trong RegSrvr.xml.

https://connect.microsoft.com

Tôi đã thử đề xuất của họ và nó không kết nối với nút bản sao đúng khi kết nối qua máy chủ cục bộ trong các máy chủ đã đăng ký.

Các ReadOnly tùy chọn hoạt động tốt từ đối tượng nhà thám hiểm khi sử dụng các tùy chọn trong cửa sổ kết nối> bổ sung kết nối Parameters. Nhưng nó không lưu các thay đổi được thực hiện cho kết nối.

Có ai biết bất kỳ giải pháp thay thế nào trong việc lưu cấu hình với thuộc tính ReadOnly Intent với SSMS không? Cảm ơn trước sự giúp đỡ của bạn.

Câu trả lời:


3

SQL Management Studio (phiên bản trước năm 2016)

Thật không may, có một số cảnh báo khiến việc sử dụng Application Intent trong SQL Management Studio hơi khó khăn:

Để kết nối thủ công với mục đích ReadOnly, sau khi mở hộp thoại Connect to Server từ Object Explorer, người dùng phải nhớ:

  1. Nhấp vào Tùy chọn >> .
  2. Chuyển đến tab Tham số kết nối bổ sung .
  3. Nhập tham số bổ sung là ApplicationIntent = ReadOnly;
  4. (Lưu ý: Người dùng không được nhấp vào nút Tùy chọn << sau khi nhập Thông số kết nối bổ sung nếu không các thông số sẽ bị mất.)
  5. Nhấp vào Kết nối .
  6. Luôn khởi chạy các cửa sổ truy vấn bằng cách nhấp chuột phải vào cơ sở dữ liệu mong muốn trong chế độ xem Object Explorer và chọn Truy vấn mới để tránh chạy vào cảnh báo số 3 bên dưới.

Hãy cẩn thận như sau:

  1. Mặc dù bạn có thể yêu cầu SQL Management Studio kết nối với Chỉ đọc ý định, nhưng nó không lưu trữ các Thông số kết nối bổ sung khi kết nối được thêm vào Máy chủ đã đăng ký.
  2. Hành vi khi chỉnh sửa bằng tay các máy chủ đã đăng ký cục bộ trong tệp RegSrvr.xml để thêm Intent ứng dụng là không phù hợp và sẽ bị ghi đè bất cứ khi nào thay đổi được thực hiện thông qua GUI làm cho cách khắc phục này không đáng tin cậy.
  3. Cơ sở dữ liệu Luôn Bật phải được chọn trước khi cửa sổ truy vấn được mở; mặt khác, kết nối sẽ được chuyển đến máy chủ chính. Nếu bạn cố gắng chọn cơ sở dữ liệu bằng cách sử dụng thả xuống của cửa sổ truy vấn sau khi cửa sổ truy vấn đã được mở cho cơ sở dữ liệu không phải Luôn Bật, bạn sẽ nhận được hộp thoại báo lỗi. Nếu bạn cố gắng thay đổi cơ sở dữ liệu thành cơ sở dữ liệu Luôn Bật bằng câu lệnh USE sau khi cửa sổ truy vấn đã được mở sang cơ sở dữ liệu Không phải Luôn Bật, kết quả sẽ như thế này khi bạn cố thực hiện truy vấn SQL:
      Msg 979, Level 14, State 1, Line 1
      The target database ('AlwaysOnDatabase') is in an availability group 
      and currently does not allow read only connections. For more 
      information about application intent, see SQL Server Books Online.

SQL Management Studio (phiên bản 2016 trở lên)

SQL Server Management Studio 2016 trở lên có thể kết nối với Ý định ứng dụng chỉ đọc (sử dụng 6 bước tương tự như các phiên bản trước) và nó lưu trữ các Thông số kết nối bổ sung. Vẫn còn một số cảnh báo:

  1. Khung nhìn Object Explorer sẽ không liệt kê bất kỳ bảng nào hoặc các đối tượng khác trong cơ sở dữ liệu Luôn luôn. Cố gắng mở rộng chúng dẫn đến một tin nhắn bị từ chối truy cập.
  2. Bạn không thể có kết nối Chỉ đọc và không kết nối Chỉ đọc với cùng một người nghe mở cùng một lúc.
  3. Intellisense cho tên đối tượng trong cơ sở dữ liệu không hoạt động. (Thật kỳ lạ, các Đối tượng được liệt kê rất tốt trong Trình thiết kế truy vấn mà bạn có thể khởi chạy bằng Thiết kế truy vấn trong Trình chỉnh sửa ... từ menu chuột phải.)
  4. Hãy cẩn thận 3 từ các phiên bản trước đó vẫn được áp dụng.

Sản phẩm của bên thứ ba

LinqPad lưu trữ toàn bộ chuỗi kết nối bao gồm cả Ý định ứng dụng và cơ sở dữ liệu khi bạn lưu kết nối và do đó có thể là một tùy chọn khả thi để thực hiện các truy vấn Chỉ đọc đối với cơ sở dữ liệu Luôn bật.


0

Bạn có thể đang thiếu một phần quan trọng của câu đố hoặc ít nhất là tôi đã không thấy nó ở bất cứ đâu trong câu hỏi của bạn:

ApplicationIntent=readonlylà một nửa của phương trình. Bạn cũng cần phải vượt qua tham số MultiSubnetFailover=True.

Chẳng hạn, trong tab Tham số kết nối bổ sung, bạn muốn nhập thông tin sau:

MultiSubnetFailover=True;ApplicationIntent=readonly;

Cảm ơn Tony nhưng đây không phải là vấn đề tôi đang gặp phải.
DBAuser


0

Có thể là bạn tạo một tệp cấu hình và sau đó bạn tự động tạo các máy chủ đã đăng ký cần thiết trong SSMS? Như đã đề cập trong bài viết MSSQLTips của tôi:

Tự động đăng ký và bảo trì máy chủ trong SQL Server Management Studio (SSMS)


Hi jyao, Cảm ơn bạn đã trả lời. Bạn đã đăng một tập lệnh powershell quan tâm trong bài viết đó nhưng không may không hoạt động với thuộc tính ApplicationIntent. Tôi đã thay đổi PS để sử dụng như sau: New-Item -Name $ (encode-sqlname $ g.value) -path "sqlserver: \ SQLRegistration \ $ ($ sự lựa chọn) \ $ ($ g.parentfolder)" -ItemType $ g .type -Value ("Máy chủ = $ regsrv; bảo mật tích hợp = true; Danh mục ban đầu = dbname; ApplicationIntent = ReadOnly"); Không may mắn! Nếu điều này sẽ làm việc, tôi sẽ rất hạnh phúc khi sử dụng điều này như là một tùy chọn. Cảm ơn một lần nữa.
DBAuser

0

Điều này đã được sửa trong SSMS SQL 2016 khi sử dụng với các máy chủ đã đăng ký. Tôi đã có thể đăng ký kết nối ReadOnly Intent như một phần của nhóm máy chủ cục bộ và mở kết nối đã lưu để sử dụng trong tương lai. Cảm ơn sự giúp đỡ với điều này.


0

Tôi không thể nhận xét nhưng đang thêm vào câu trả lời của DBAUser.

Tôi không thể thấy tùy chọn thêm Ý định ứng dụng trong GUI khi thiết lập kết nối trong khu vực máy chủ đã đăng ký.

Tôi đã phải kết nối bằng cách sử dụng object explorer (sử dụng Data Source=<Listener>;Initial Catalog=<Database>;ApplicationIntent=ReadOnly) sau đó đăng ký máy chủ sau khi tôi được kết nối.

Hoặc thêm Initial Catalog=<Database>;ApplicationIntent=ReadOnlyvào chuỗi kết nối trong tệp .regsrvr.


Bạn sẽ cần phải đăng ký máy chủ readOnly trong trình thám hiểm đối tượng để xem đây là một phần của các nhóm máy chủ cục bộ trong các máy chủ đã đăng ký. Trong trình thám hiểm đối tượng, Một khi bạn tạo kết nối readOnly đến máy chủ với appintent, nhấp chuột phải vào máy chủ và nhấp vào Đăng ký. Sau đó thay đổi Tên máy chủ đã đăng ký thành tên bạn muốn. Điều này sẽ được lưu như một phần của các máy chủ cục bộ trong các máy chủ đã đăng ký. Hi vọng điêu nay co ich!
DBAuser
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.