2011-01-28 33 views
10

Tôi đã tìm các lược đồ SQL Server rất khó hiểu. Có lẽ các bạn có thể giúp tôi giải tỏa một số rắc rối. Tôi đang sử dụng SQL Server 2008 Express và MS SQL Server 2008 Management Studio nhưng tôi nghĩ rằng câu hỏi của tôi có liên quan đến bất kỳ phiên bản MS SQL Server 2008 nào. Tôi đã thử nghiệm với các cơ sở dữ liệu khác nhau và các phiên bản SQL Server khác nhau trên các máy chủ khác nhau. Ví dụ, tôi đã làm một số công việc trên máy chủ công ty của chúng tôi nhưng tôi cũng đã làm việc khá một chút với một số cơ sở dữ liệu trên máy chủ lưu trữ web chia sẻ của tôi. Đây có thể là một phần lý do tôi đã nhập vào một số sự nhầm lẫn.Các bảng SQL Server được đặt tên Với lược đồ dbo

1) Tên của giản đồ này đến từ đâu? Tôi nghĩ khi lần đầu tiên tôi bắt đầu rối tung với SQL Server vài tuần trước, tôi không thấy bất kỳ tên lược đồ nào được thêm vào tên bảng. Tôi bắt đầu nhìn thấy chúng khi một cơ sở dữ liệu được nhập khẩu hoặc khi tôi sử dụng MS Access Migration Assistant. Có thể không sử dụng các lược đồ? Chúng có không hiển thị trong một số trường hợp không?

2) Tên giản đồ không phải là "dbo"? Trên một dự án gần đây các lược đồ của tôi đã được hiển thị dưới dạng MyLongUserName.tablename thay vì dbo.tablename. Tôi bối rối là tại sao đôi khi một tài khoản người dùng xuất hiện mặc định với lược đồ dbo và các thời điểm khác nó được gán cho một lược đồ có cùng tên với tài khoản người dùng. Điều này có bất cứ điều gì để làm với đăng nhập bằng cách sử dụng xác thực NT so với xác thực SQL Server?

3) Người dùng có tên dbo? Tôi không nhớ đã tạo người dùng có tên dbo trong cơ sở dữ liệu mà tôi hiện đang làm việc nhưng tôi thấy nó trong danh sách người dùng. Tài khoản người dùng "dbo" có tồn tại cho lược đồ "dbo" để tồn tại không? Tên người dùng và tên lược đồ luôn song song?

4) Để sử dụng lược đồ hay không - Bạn không thể sử dụng chúng? Bạn có sử dụng lược đồ cho các dự án nhỏ như cơ sở dữ liệu hai hoặc ba bảng cho một trang web cơ bản không? Bạn có thể tránh sử dụng lược đồ hoàn toàn hay đơn giản chỉ sử dụng lược đồ "dbo" mặc định? Bạn có tạo các lược đồ bổ sung và gán một số quyền và tài khoản người dùng cho nó/chúng ngay cả trên các dự án rất nhỏ không?

Tôi đã sử dụng cuốn sách Máy chủ SQL của Murach 2008 dành cho nhà phát triển và tôi không thấy nó quá hữu ích trong việc xóa bỏ sự nhầm lẫn của tôi. Tôi đang đọc các câu như: "Nếu bạn không chỉ định lược đồ khi tạo đối tượng, chúng sẽ được lưu trữ trong giản đồ mặc định". Chờ, làm cách nào để biết "lược đồ mặc định" là gì? Chúng ta đang nói về lược đồ mặc định của tài khoản người dùng hay có "lược đồ mặc định" cho mọi cơ sở dữ liệu? Nó luôn luôn là "dbo"? Tại sao khi tôi tạo các đối tượng là nó gán chúng vào lược đồ MyLongUserName thay vì "dbo"?

Trả lời

12

Bạn có thể muốn bắt đầu bằng cách đọc này: What good are SQL Server schemas?

Từ SQL Server 2005 trở đi, lược đồ đã được tách ra từ những người dùng http://msdn.microsoft.com/en-us/library/ms190387.aspx.

Trước đó, mỗi người dùng sở hữu nhiều bảng, sẽ nằm trong "không gian" của họ. "Không gian" đó bây giờ là một lược đồ, đó là một cách để nhóm các bảng.

SQL Server Objects có 4 phần để tên của họ

  • server.database.schema.ObjectName

Bất cứ khi nào bạn bỏ qua một hoặc nhiều trong số họ, bạn đang đặt tên nó từ bên phải

  • database.schema.objectname - ngụ ý máy chủ hiện tại
  • schema.objectname - ngụ ý cơ sở dữ liệu hiện tại
  • objectname - ngụ ý lược đồ mặc định. mỗi người dùng có thể được chỉ định một lược đồ mặc định, nhưng theo mặc định, điều này sẽ là "dbo"

"dbo" là một lược đồ đặc biệt, đó là chủ sở hữu cơ sở dữ liệu. Nó tồn tại trong mọi cơ sở dữ liệu, nhưng bạn có thể thêm lược đồ (như thư mục) vào cơ sở dữ liệu

Nếu bạn di chuyển từ cài đặt cũ hơn SQL Server 2000 dbs sang 2005 hoặc hơn thế nữa, bạn có thể mang theo lược đồ tên người dùng, bởi vì người dùng "sở hữu" đã chỉnh sửa các bảng.

Các vấn đề liên quan