2009-07-20 39 views
35

Tôi đã cố gắng tìm ra lý do tại sao SQL Server có sơ đồ db_owner và vai trò db_owner? Điều này rất khó hiểu. Tôi đã tìm kiếm câu trả lời và cho đến nay đây là cách hiểu biết của tôi:Vai trò, lược đồ SQL Server, người dùng

  1. Tất cả các bảng và đối tượng (chẳng hạn như ràng buộc, vv) thuộc về một lược đồ. DBO là giản đồ mặc định.
  2. Người dùng có thể được cấp quyền chỉnh sửa từng đối tượng hoặc giản đồ. Sự cho phép trên lược đồ mở rộng sự cho phép đối với tất cả các đối tượng trong lược đồ đó. Vì vậy, bạn không phải cấp quyền cho từng đối tượng riêng lẻ.
  3. Một nhóm vai trò cùng nhau cho thuận tiện.

Nếu điều này không chính xác, hãy cho tôi biết. Nhưng tôi nghĩ cho đến nay rất tốt. Bây giờ, câu hỏi của tôi là:

  1. Lược đồ db_owner chính xác như trong hộp thoại "Người dùng cơ sở dữ liệu" của SQL Server Management Studio? Và trên cùng một hộp thoại, bạn xác định "Lược đồ mặc định" là dbo. Tại sao hai người không giống nhau? Nếu theo mặc định, SQL Server sử dụng dbo để tạo tất cả các đối tượng theo, sử dụng nào là db_owner?
  2. Tại sao người dùng muốn sở hữu một giản đồ? Bạn đã gán quyền/vai trò rồi. Sở hữu gì db_accessadmin cung cấp cho bạn?
  3. Bạn có thể cho ví dụ về thời điểm bạn tạo các đối tượng theo sơ đồ db_owner và lược đồ db_accessadmin không? Nói cách khác, bất cứ ai sử dụng hợp pháp những lược đồ đó?
+0

Đồng ý. Thật là vô lý khi tạo ra hai loại đối tượng khác nhau (một lược đồ và vai trò) có cùng tên. – LarryBud

Trả lời

23

Một schema SQL Server chỉ đơn giản là container của các đối tượng, chẳng hạn như bảng biểu, các thủ tục lưu trữ, vv Một Vai trò cơ sở dữ liệu là một nhóm các hiệu trưởng, như cửa sổ đăng nhập, người dùng máy chủ sql vv

Các ý tưởng là bạn có thể có vai trò là "CNTT" và có tất cả người dùng CNTT theo vai trò đó. Sau đó, bạn có thể có một lược đồ gọi là "CNTT", và có tất cả các bảng thuộc về CNTT theo đó. Ra khỏi hộp SQL Server tạo ra các lược đồ phù hợp cho mỗi người dùng mặc định và vai trò trong cơ sở dữ liệu, nhưng tôi nghĩ rằng ý định là bạn tùy chỉnh này để phù hợp với nhu cầu của tổ chức của bạn.

This article có thêm thông tin về sự khác biệt giữa chủ sở hữu và lược đồ. This question trên Stack Overflow cũng có thể hữu ích.

+0

Bài viết khá hữu ích. Vì vậy, từ câu trả lời của bạn tôi lấy nó lược đồ db_accessadmin là vô ích và là một tác dụng phụ của vai trò db_accessadmin. Không ai tạo bảng dưới lược đồ db_accessadmin, nhưng thay vào đó bạn sử dụng lược đồ có liên quan hơn đến dữ liệu của bạn. Có danh sách "quyền sở hữu" của đối tượng/lược đồ cung cấp cho bạn không? Có tất cả các quyền có thể tưởng tượng được đối tượng đó không? Hoặc bạn có thể là chủ sở hữu không có quyền đọc không? – Budric

+0

Xem bài viết này http://msdn.microsoft.com/en-us/library/ms189462.aspx để biết thêm chi tiết. Cụ thể, "Các đối tượng được tạo trong một lược đồ được sở hữu bởi chủ sở hữu của lược đồ, và có một NULL principal_id trong sys.objects. Quyền sở hữu đối tượng chứa lược đồ có thể được chuyển đến bất kỳ cấp cơ sở dữ liệu nào, nhưng chủ sở hữu lược đồ luôn giữ lại CONTROL cho phép đối tượng trong lược đồ. " Vì vậy, có vẻ như một chủ sở hữu luôn có toàn quyền kiểm soát đối tượng trong một lược đồ. – tbreffni

0

Tôi trích dẫn bên dưới từ liên kết sau.

https://msdn.microsoft.com/en-us/library/bb669061(v=vs.110).aspx

SQL Server tàu với mười schemas được xác định trước đó có tên giống như được xây dựng trong cơ sở dữ liệu người dùng và vai trò. Chúng tồn tại chủ yếu cho khả năng tương thích ngược. Bạn có thể thả các lược đồ có cùng tên với vai trò cơ sở dữ liệu cố định nếu bạn không cần chúng.Bạn không thể thả các lược đồ sau:

  • dbo
  • guest
  • sys
  • INFORMATION_SCHEMA
Các vấn đề liên quan