2009-01-20 9 views
9

Tôi đã sao lưu và khôi phục cơ sở dữ liệu MS SQL Server 2005 sang máy chủ mới.Khôi phục Sao lưu sang Máy chủ khác - Quyền Người dùng

Cách tốt nhất để tạo lại thông tin đăng nhập, người dùng và quyền người dùng là gì?

Trên trình quản lý doanh nghiệp của SQL Server 2000, tôi có thể ghi lại thông tin đăng nhập, kịch bản người dùng và tập lệnh cho phép người dùng một cách riêng biệt. Sau đó tôi có thể chạy cái này sau cái còn lại và bước duy nhất còn lại là đặt mật khẩu đăng nhập (không phải tập lệnh vì lý do bảo mật)

Điều này dường như không thể trong SQL Server 2005 Management Studio, khiến mọi thứ trở nên khó hiểu mất thời gian. (Cuối cùng tôi phải viết toàn bộ cơ sở dữ liệu, xóa tất cả thông tin đăng nhập và người dùng khỏi cơ sở dữ liệu mới, chạy tập lệnh và sau đó rà soát thông qua thông báo lỗi để xem những gì đã hiệu quả và những gì không.)

bất cứ ai có bất kỳ kinh nghiệm và khuyến nghị về điều này?

Trả lời

14

Cách dễ nhất để thực hiện việc này là với sp_help_revlogin của Microsoft, một thủ tục được lưu trữ tập lệnh tất cả các đăng nhập SQL Server, mặc định và mật khẩu và giữ cùng SID.

Bạn có thể tìm thấy nó trong bài viết cơ sở kiến ​​thức này:

http://support.microsoft.com/kb/918992

+0

Mặc dù vậy, dường như không có sự cho phép của người dùng. (Chẳng hạn như GRANT EXECUTE và GRANT SELECT, v.v.) – MatBailie

+0

Phải, bởi vì nó có trong mỗi cơ sở dữ liệu riêng lẻ, không phải ở cấp độ máy chủ. Nếu bạn sao lưu cơ sở dữ liệu, hãy thực hiện sp_help_revlogin trên máy chủ cũ, sử dụng T-SQL đã tạo trên máy chủ mới và sau đó thực hiện khôi phục, bạn đã hoàn tất. –

+0

"Người dùng" trong cơ sở dữ liệu được khôi phục vẫn xuất hiện để được mồ côi từ "đăng nhập" của họ. – MatBailie

0

Tôi sử dụng sản phẩm So sánh SQL từ Cổng đỏ (http://www.red-gate.com/products/SQL_Compare/index.htm). Có những sản phẩm tương tự khác xung quanh nhưng tôi đã không có lý do để tìm kiếm một như SQL So sánh đã không bao giờ cho tôi xuống.

Bạn sẽ thấy nó hữu ích hơn rất nhiều so với yêu cầu hiện tại vì nó sẽ giúp đồng bộ hóa tất cả các loại đối tượng cơ sở dữ liệu, không chỉ đăng nhập và cho phép.

+0

Chúng tôi có công cụ "khác biệt cơ sở dữ liệu" tương tự. Thật không may, Khách hàng của chúng tôi không ... – MatBailie

2

Run này:

EXEC sp_change_users_login 'Report' 

này sẽ hiển thị một danh sách tất cả người sử dụng mồ côi, ví dụ:

enter image description here

Bây giờ thực thi tập lệnh này tại đây cho từng người dùng, ví dụ:

exec sp_change_users_login 'Update_One', 'UserNameExample', 'UserNameExample' 

Điều này đã khắc phục được sự cố của tôi.