Làm cách nào để liên kết người dùng và đăng nhập trong Nhóm sẵn có?


7

Tôi đã có một Nhóm sẵn có và cần ánh xạ một số thông tin đăng nhập tới người dùng cơ sở dữ liệu trên một bản sao thứ cấp đang hoạt động. (Node2) Thật không may, khi tôi cố gắng exec sp_change_users_loginhoặc alter user with login, tôi nhận được một thông báo lỗi cho tôi biết cơ sở dữ liệu là chỉ đọc. Điều đó không có gì đáng ngạc nhiên, nhưng tôi không chắc cách khắc phục. Tôi đã thử thất bại trong đêm qua, sửa lỗi đăng nhập trên Node2 và sau đó không trở lại Node1, nhưng sau đó ánh xạ đăng nhập / người dùng đã kết thúc sai trên Node1. Khi tôi sửa chúng, thông tin đăng nhập của Node2 lại thoát ra khỏi đòn đánh.

Đây là một hệ thống sản xuất, vì vậy tôi không thể làm bất cứ điều gì tôi muốn cho đến tối nay. Tôi đã không gặp phải vấn đề này trong phòng thí nghiệm thử nghiệm của chúng tôi. Sự khác biệt có thể là tôi đã tạo thông tin đăng nhập trước khi tham gia cơ sở dữ liệu trước đó, trong khi lần này tôi đã cố gắng tạo chúng sau đó và không thể ghi lại quy trình một cách chính xác. Hạ AG và xây dựng lại nó là điều tôi muốn tránh nếu có thể.

Vấn đề có ý nghĩa với tôi, tôi chỉ không thực sự biết cách khắc phục nó.

Câu trả lời:


7

Những gì bạn sẽ phải làm là kết nối với thể hiện có SID khớp sai và bạn sẽ phải tạo lại thông tin đăng nhập và chỉ định SID rõ ràng. Chẳng hạn, trong trường hợp bạn có người dùng mồ côi và sau đây trả về người dùng:

exec sp_change_users_login 'report';
go

Sao chép SID từ cột UserSID. Và nếu bạn đã có một thông tin đăng nhập hiện có mà bạn muốn giữ tên trong trường hợp đó, bạn không thể. Không có cách nào để ALTER LOGINthay đổi SID. Vì vậy, bạn sẽ cần phải bỏ đăng nhập và tạo lại nó:

drop login YourLogin;
go

create login YourLogin
with
    password = 'password',
    check_policy = off,     -- simple password and no check policy for example only
    sid = 0xC26909...................;
go

Một lần nữa, bạn sẽ muốn thiết lập các sidtham số của CREATE LOGINcho UserSIDbạn lấy ra từ thực hiện sp_change_users_loginvới report.

Lưu ý : Bạn sẽ muốn đặt mật khẩu trên này / các bản sao này thành giống nhau để bạn không có mật khẩu không khớp giữa các bản sao.

Tôi giả sử rằng (các) thông tin đăng nhập của bạn được đề cập ở đây là thông tin đăng nhập SQL Server, vì đây không phải là vấn đề đối với tài khoản miền Windows Auth vì các SID phải giống nhau trên mỗi trường hợp.

Bạn cũng có thể tận dụng cơ sở dữ liệu chứa ở đây và xác thực cơ sở dữ liệu ở cấp cơ sở dữ liệu. Bằng cách đó, bạn sẽ không phải lo lắng về người dùng mồ côi.

Dưới đây là một số tài liệu về điều này:
Tài liệu tham khảo BOL về Quản lý thông tin đăng nhập và công việc cho cơ sở dữ liệu của bài viết KB nhóm khả dụng
về cách chuyển thông tin đăng nhập và mật khẩu giữa các phiên bản của SQL Server

Ngoài ra, điều này không cần phải nói, nhưng hãy kiểm tra điều này trong môi trường phát triển / QA để xác minh và đảm bảo chức năng phù hợp trước khi bắt đầu sản xuất.

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.