Cấu trúc điều khiển SQL. Khởi chạy chương trình SQL Server Management Studio. Quản lý dựa trên chính sách

05/01/15 28.1K

Đôi khi bạn thực sự muốn sắp xếp những suy nghĩ của mình theo thứ tự, sắp xếp chúng. Và thậm chí còn tốt hơn nữa, theo thứ tự bảng chữ cái và chủ đề, để cuối cùng suy nghĩ rõ ràng cũng xuất hiện. Bây giờ hãy tưởng tượng sự hỗn loạn sẽ xảy ra trong " bộ não điện tử » bất kỳ máy tính nào không có cấu trúc rõ ràng về tất cả dữ liệu và Microsoft Máy chủ SQL :

Máy chủ MS SQL

Sản phẩm phần mềm này là một hệ thống quản lý cơ sở dữ liệu (DBMS) kiểu quan hệ, được phát triển bởi Tập đoàn Microsoft. Ngôn ngữ Transact-SQL được phát triển đặc biệt được sử dụng để thao tác dữ liệu. Các lệnh ngôn ngữ để chọn và sửa đổi cơ sở dữ liệu được xây dựng trên cơ sở các truy vấn có cấu trúc:


Cơ sở dữ liệu quan hệ được xây dựng trên sự kết nối của tất cả các thành phần cấu trúc, bao gồm cả sự lồng nhau của chúng. Cơ sở dữ liệu quan hệ có hỗ trợ tích hợp cho các loại dữ liệu phổ biến nhất. Nhờ đó, SQL Server tích hợp hỗ trợ cấu trúc dữ liệu theo chương trình bằng cách sử dụng trình kích hoạt và thủ tục được lưu trữ.

Tổng quan về các tính năng của MS SQL Server


DBMS là một phần của chuỗi dài các công việc chuyên môn phần mềm, mà Microsoft đã tạo cho các nhà phát triển. Điều này có nghĩa là tất cả các liên kết của chuỗi (ứng dụng) này đều được tích hợp sâu sắc với nhau.

Nghĩa là, các công cụ của chúng dễ dàng tương tác với nhau, giúp đơn giản hóa đáng kể quá trình phát triển và viết mã chương trình. Một ví dụ về mối quan hệ như vậy là môi trường lập trình MS Visual Studio. Gói cài đặt của nó đã bao gồm SQL Server Express Edition.

Tất nhiên, đây không phải là DBMS phổ biến duy nhất trên thị trường thế giới. Nhưng chính xác là nó được chấp nhận nhiều hơn đối với các máy tính chạy Windows, do nó tập trung vào hệ điều hành này. Và không chỉ vì điều này.

Ưu điểm của MS SQL Server:

  • Có mức độ hiệu suất cao và khả năng chịu lỗi;
  • Nó là một DBMS nhiều người dùng và hoạt động theo nguyên tắc máy khách-máy chủ;

    Phần client của hệ thống hỗ trợ tạo yêu cầu của người dùng và gửi đến server để xử lý.

  • Tích hợp chặt chẽ với hệ điều hành Windows;
  • Hỗ trợ kết nối từ xa;
  • Hỗ trợ các loại dữ liệu phổ biến, cũng như khả năng tạo trình kích hoạt và thủ tục lưu trữ;
  • Hỗ trợ tích hợp cho vai trò của người dùng;
  • Chức năng sao lưu cơ sở dữ liệu nâng cao;
  • Mức độ bảo mật cao;
  • Mỗi số bao gồm một số ấn bản chuyên biệt.

Sự phát triển của máy chủ SQL

Các tính năng của DBMS phổ biến này có thể dễ dàng nhận thấy nhất khi xem xét lịch sử phát triển của tất cả các phiên bản của nó. Chúng tôi sẽ chỉ trình bày chi tiết hơn về những bản phát hành mà các nhà phát triển đã thực hiện những thay đổi cơ bản và quan trọng:

  • Microsoft SQL Server 1.0 – được phát hành vào năm 1990. Thậm chí sau đó, các chuyên gia lưu ý tốc độ cao xử lý dữ liệu, được chứng minh ngay cả với tải tối đaở chế độ nhiều người dùng;
  • SQL Server 6.0 - phát hành năm 1995. Phiên bản này là phiên bản đầu tiên trên thế giới triển khai hỗ trợ con trỏ và sao chép dữ liệu;
  • SQL Server 2000 - trong phiên bản này, máy chủ đã nhận được một công cụ hoàn toàn mới. Hầu hết các thay đổi chỉ ảnh hưởng đến phía người dùng của ứng dụng;
  • SQL Server 2005 – khả năng mở rộng của DBMS đã tăng lên và quy trình quản lý và điều hành đã được đơn giản hóa theo nhiều cách. Một API mới đã được giới thiệu để hỗ trợ nền tảng phần mềm .NET;
  • Các bản phát hành tiếp theo nhằm mục đích phát triển sự tương tác của DBMS ở cấp độ công nghệ đám mây và các công cụ phân tích kinh doanh.

Bộ hệ thống cơ bản bao gồm một số tiện ích dành cho cài đặt SQL Máy chủ. Bao gồm các:


Quản lý cấu hình. Cho phép bạn quản lý tất cả cài đặt mạng và dịch vụ máy chủ cơ sở dữ liệu. Được sử dụng để định cấu hình SQL Server trong mạng.
  • Báo cáo sử dụng và lỗi máy chủ SQL:


Tiện ích này được sử dụng để định cấu hình gửi báo cáo lỗi tới bộ phận hỗ trợ của Microsoft.


Được sử dụng để tối ưu hóa hoạt động của máy chủ cơ sở dữ liệu. Nghĩa là, bạn có thể tùy chỉnh chức năng của SQL Server cho phù hợp với nhu cầu của mình bằng cách bật hoặc tắt một số tính năng và thành phần nhất định của DBMS.

Bộ tiện ích có trong Microsoft SQL Server có thể khác nhau tùy theo phiên bản và phiên bản gói phần mềm. Ví dụ: trong phiên bản 2008 bạn sẽ không tìm thấy Cấu hình diện tích bề mặt máy chủ SQL.

Khởi động máy chủ Microsoft SQL

Ví dụ: phiên bản 2005 của máy chủ cơ sở dữ liệu sẽ được sử dụng. Máy chủ có thể được khởi động theo nhiều cách:

  • Thông qua tiện ích Trình quản lý cấu hình máy chủ SQL. Trong cửa sổ ứng dụng ở bên trái, chọn “Dịch vụ SQL Server 2005” và ở bên phải - phiên bản máy chủ cơ sở dữ liệu mà chúng tôi cần. Chúng tôi đánh dấu nó và chọn “Bắt đầu” trong menu con của nút chuột phải.

  • Sử dụng môi trường Máy chủ SQL Xưởng quản lý Thể hiện. Nó không được bao gồm trong gói cài đặt phiên bản Express. Do đó, nó phải được tải xuống riêng biệt từ trang web chính thức của Microsoft.

Để khởi động máy chủ cơ sở dữ liệu, hãy khởi chạy ứng dụng. Trong hộp thoại " Kết nối với máy chủ"Trong trường "Tên máy chủ", hãy chọn phiên bản chúng tôi cần. Trong lĩnh vực " Xác thực"để lại giá trị" Xác thực Windows" Và bấm vào nút “Kết nối”:

Cơ bản về quản trị máy chủ SQL

Trước khi khởi động MS SQL Server, bạn cần làm quen nhanh với các khả năng cơ bản về cấu hình và quản trị của nó. Hãy bắt đầu với cái nhìn tổng quan chi tiết hơn về một số tiện ích có trong DBMS:

  • Cấu hình diện tích bề mặt máy chủ SQL– đây là nơi bạn nên đến nếu cần bật hoặc tắt bất kỳ tính năng nào của máy chủ cơ sở dữ liệu. Ở cuối cửa sổ có hai mục: mục đầu tiên chịu trách nhiệm về các thông số mạng và mục thứ hai, bạn có thể kích hoạt một dịch vụ hoặc chức năng bị tắt theo mặc định. Ví dụ: kích hoạt tích hợp với nền tảng .NET thông qua truy vấn T-SQL:

Rick Dobson, tiến sĩ Bản dịch chọn lọc của Ledenev S. A.

Bài viết này thảo luận cách quản lý bảo mật máy chủ SQL bằng cách sử dụng Access với thư viện Đối tượng quản lý phân tán SQL (SQL-DMO) trong Ngôn ngữ lập trình dành cho ứng dụng (VBA)

Giới thiệu

Bài viết này chủ yếu nhắm đến các nhà phát triển dự án ADP. Bạn có thể quen với 2 điều liên quan đến bảo mật máy chủ SQL. Đầu tiên, bảo mật không phải là một lựa chọn như trong Jet. Thứ hai, mô hình bảo mật của SQL Server khác với mô hình bảo mật của Access. Ngay cả khi bạn có hiểu biết sơ bộ về bảo mật SQL Server, bài viết này sẽ hướng dẫn bạn cách định cấu hình nó để bảo vệ tài nguyên dự án của bạn.

Bài viết này cũng có thể hữu ích cho các quản trị viên máy chủ SQL. Các giải pháp được cung cấp ở đây có thể giúp họ quản lý bảo mật máy chủ bằng Access. Bài viết này có thể giúp quản trị viên tìm hiểu cách quản lý bảo mật máy chủ mà không cần sử dụng các công cụ đồ họa của Trình quản lý doanh nghiệp hoặc chạy các tập lệnh Transact SQL (T-SQL) từ Trình phân tích truy vấn. Bằng cách tìm hiểu cách quản lý bảo mật máy chủ bằng Access, quản trị viên có tùy chọn tạo giải pháp nhanh hơn.

Bài viết có thể tạm chia thành hai phần về bảo mật của SQL Server 7.0 và SQL Server 2000. Đầu tiên, khái niệm về bảo mật SQL Server được thảo luận, tập trung vào cách quản lý bảo mật bằng Access. Thông tin này đủ để phát triển các ứng dụng nhiều người dùng với các nhóm người dùng khác nhau có quyền sử dụng đối tượng máy chủ được xác định rõ ràng. Phần thứ hai của bài viết trình bày các giải pháp phần mềm dựa trên việc quản lý các đối tượng SQL-DMO (Đối tượng quản lý phân tán SQL) bằng Microsoft Visual Basic® cho ứng dụng (VBA). Vì SQL-DMO có mô hình xây dựng đối tượng phân cấp rất giống với mô hình xây dựng đối tượng Microsoft Office nên tất cả những gì cần làm là tìm hiểu thêm về các đối tượng, thuộc tính, phương thức và sự kiện của SQL-DMO liên quan đến bảo mật. Ngoài ra, các lập trình viên Access 2002 không thể thực hiện nếu không lập trình các chức năng cấu hình bảo mật trong VBA, vì chúng không có sẵn trong menu Bảo mật cơ sở dữ liệu.

Khái niệm bảo mật máy chủ SQL

Phần này gồm có 4 phần chính. Phần giới thiệu bắt đầu bằng phần mô tả về xác thực - quá trình kiểm tra quyền truy cập cơ sở dữ liệu máy chủ của người dùng. Sử dụng Enterprise Manager, SQL Server cung cấp hai loại xác thực. Phần đầu tiên của phần này cho thấy sự khác biệt và tương đồng giữa chúng.

Tiếp theo, chúng ta nói về khái niệm người dùng được ủy quyền phục vụ việc kết nối với máy chủ. Người dùng được ủy quyền được gọi là thông tin đăng nhập. Hai loại thông tin đăng nhập tương ứng với hai mô hình xác thực máy chủ SQL. Đăng nhập chịu trách nhiệm về quyền truy cập vào máy chủ.

Phần thứ ba giới thiệu khái niệm về người dùng. SQL Server bảo lưu khái niệm người dùng như một khái niệm đặc trưng cho người dùng cơ sở dữ liệu. Thông thường, có một số thông tin đăng nhập trên một máy chủ, mỗi thông tin đăng nhập được liên kết với một số người dùng - một thông tin đăng nhập cho mỗi cơ sở dữ liệu mà thông tin đăng nhập được phép truy cập. Thông tin đăng nhập và người dùng có thể thuộc các vai trò cố định mô tả một bộ quyền. Bạn có thể kiểm soát hành vi đăng nhập và người dùng bằng cách quản lý tư cách thành viên của họ tương ứng với các vai trò máy chủ cố định và vai trò cơ sở dữ liệu cố định.

Phần 4 nói về vai trò cơ sở dữ liệu do người dùng xác định.

Xác thực

Xác thực được mô tả là quá trình ủy quyền cho người dùng trên một phiên bản của máy chủ SQL và một số cơ sở dữ liệu được liên kết với người dùng. Ủy quyền được liên kết với thông tin đăng nhập, mô tả quyền của người dùng trên máy chủ. Ủy quyền hoạt động giống như chìa khóa dẫn vào lâu đài. Nếu chìa khóa khớp với ổ khóa, người đó sẽ sử dụng nó để truy cập vào mọi thứ trong căn phòng có cửa được khóa bằng ổ khóa đó. Một máy chủ SQL thường có một số ổ khóa với các khóa khác nhau. Mỗi khóa cung cấp quyền truy cập vào một bộ cơ sở dữ liệu khác nhau nằm trên máy chủ.

SQL Server hỗ trợ hai loại xác thực: SQL Server và Microsoft Windows® (hoặc Windows NT® với SQL Server 7.0). Hai loại này xác định ai thực hiện xác minh đăng nhập: máy chủ SQL hoặc Windows. Với xác thực Windows, người dùng đã tin cậy Tài khoảnđể truy cập máy chủ SQL. Các tài khoản này được Windows xác minh nhưng máy chủ SQL "biết" tên tài khoản. Xác thực Windows cho phép người dùng đăng nhập vào Windows và máy chủ SQL bằng cách chỉ nhập một mật khẩu. Với xác thực SQL Server, máy chủ SQL sẽ tự thực hiện việc ủy ​​quyền. Với bất kỳ loại xác thực nào, máy chủ SQL phải biết thông tin đăng nhập được ủy quyền.

Có những ưu và nhược điểm đối với cả loại thứ nhất và loại thứ hai, nhưng xác thực Windows được ưu tiên hơn. Windows có quy trình ủy quyền phức tạp hơn và nó giúp quản trị viên máy chủ SQL không phải quản lý tài khoản. Mặt khác, không phải tất cả các hệ điều hành hỗ trợ máy chủ SQL đều hỗ trợ xác thực Windows. Ví dụ, Dữ liệu của Microsoft Engine (MSDE) được cài đặt với Microsoft Office 2000 và Microsoft SQL Server 2000 Desktop Engine (MSDE 2000) được cài đặt với Office XP: Cả hai đều có thể chạy trên Windows 98, không hỗ trợ xác thực Windows. Hoặc SQL Server 7.0 và MSDE chạy trên Windows 95. Một số tổ chức có thể thích khả năng kiểm soát quyền truy cập vào tài nguyên cơ sở dữ liệu ở cấp DBA hơn là hơn thế nữa Cấp độ toàn cầu Quản trị viên Windows.

Bất kỳ phiên bản SQL Server nào cũng có thể có bất kỳ loại nào trong số hai loại xác thực có thể được đặt trong Trình quản lý doanh nghiệp (Tôi sẽ đề cập đến loại thứ ba ở phần sau của bài viết này). Tài liệu SQL Server định nghĩa thuật ngữ kết nối chế độ hỗn hợp với SQL Server, hỗ trợ cả xác thực Windows và SQL Server. Nếu máy chủ chỉ hỗ trợ xác thực Windows thì máy chủ đó có loại xác thực Windows (hoặc Windows NT). Theo mặc định, MSDE được cài đặt với loại xác thực hỗn hợp. Mặt khác, MSDE 2000 cài đặt xác thực Windows theo mặc định. Nhà phát triển và quản trị viên sử dụng Enterprise Manager có thể thay đổi loại xác thực bằng các công cụ đồ họa. Ngoài ra, bất kỳ ứng dụng nào cũng có thể sử dụng thư viện SQL-DMO để thay đổi kiểu xác thực máy chủ.

Đăng nhập và vai trò máy chủ cố định

Dự án ADP chứa cửa sổ Cơ sở dữ liệu tương tự như các giải pháp Jet truyền thống. Tuy nhiên, dự án ADP kết nối với máy chủ thông qua kết nối OLE DB, không giống như cơ sở dữ liệu Jet. Trong dự án ADP, loại đăng nhập được chỉ định trong hộp thoại Thuộc tính liên kết dữ liệu. Để gọi hộp thoại này: từ cửa sổ cơ sở dữ liệu, chọn menu File, chọn Connection từ menu.

Hộp thoại Tùy chọn kết nối cho phép bạn chọn máy chủ cơ sở dữ liệu, thông tin đăng nhập và cơ sở dữ liệu mà dự án sẽ kết nối qua OLE DB. Có hai cách để kết nối với máy chủ. Đầu tiên chọn mục đích sử dụng kiểm toán nội bộ Bảo mật Windows NT (sử dụng bảo mật tích hợp Windows NT). Điều này được gọi là xác thực Windows. Bằng cách chọn tùy chọn này, bạn không cần cung cấp thông tin đăng nhập và mật khẩu. Điều này là do Windows ủy quyền cho người dùng khi Windows khởi động. Khi tùy chọn sử dụng bảo mật nội bộ được chọn, dự án ADP sẽ gửi thông tin đăng nhập Windows đến máy chủ SQL khi cố gắng tạo kết nối OLE DB tới nó. Bằng cách chọn tùy chọn thứ hai (sử dụng tên người dùng và mật khẩu cụ thể), bạn phải chỉ định thông tin đăng nhập máy chủ SQL. Trong trường tên người dùng, phải nhập tên đăng nhập máy chủ SQL tiêu chuẩn - thông tin đăng nhập được máy chủ SQL này hỗ trợ. Mật khẩu là tùy chọn, nhưng chúng tôi đặc biệt khuyên bạn nên sử dụng mật khẩu vì cùng với thông tin đăng nhập, mật khẩu sẽ cung cấp mức độ bảo mật bổ sung.

Mặc dù việc nhập thông tin đăng nhập của bạn là điều quan trọng khi tạo OLE Kết nối DB trong dự án ADP, bản thân thông tin đăng nhập không đủ để cấp quyền thực hiện bất kỳ tác vụ nào trên máy chủ hoặc với cơ sở dữ liệu. Có khái niệm về tư cách thành viên đăng nhập trong các vai trò máy chủ cố định, cho phép dự án ADP thực hiện một số chức năng của máy chủ, chẳng hạn như tạo cơ sở dữ liệu mới và quản lý thông tin đăng nhập. Tùy thuộc vào phiên bản máy chủ SQL mà dự án ADP kết nối, có bảy hoặc tám vai trò máy chủ cố định. SQL Server 7.0 và MSDE cung cấp bảy vai trò máy chủ cố định, trong khi SQL Server 2000 và MSDE 2000 cung cấp tám vai trò. Sách SQL Server Trực tuyến (BOL) chứa tài liệu toàn diện về các vai trò máy chủ cố định, bao gồm các biểu thức T-SQL để chỉ định và xóa thông tin đăng nhập khỏi tư cách thành viên vai trò. Ví dụ: phần Vai trò của BOL nói về các trường máy chủ cố định và bộ quyền tương ứng để truy cập cơ sở dữ liệu, chẳng hạn như xem và ghi vào bảng.

Bảng sau cung cấp thông tin tổng quan nhanh về tên vai trò máy chủ cố định và mô tả ngắn gọn về chúng. Bạn có thể chạy thủ tục lưu trữ hệ thống sp_helpsrvrole để có được danh sách tên vai trò máy chủ cố định. Việc thực thi quy trình lưu trữ của hệ thống sp_srvrolepermission sẽ hiển thị danh sách chi tiết các chức năng cho từng vai trò máy chủ cố định. Có sự khác biệt giữa các vai trò máy chủ cố định trong phiên bản SQL Server 7.0 và 2000. Ví dụ: Bulkadmin là vai trò mới trong SQL Server 2000. Ngoài ra, câu lệnh DROP DATABASE chỉ khả dụng cho vai trò quản trị viên hệ thống trong SQL Server 7.0 và SQL Server 2000 cho phép các thành viên của vai trò dbcreator cũng thực hiện quy trình này.

Đã sửa tên vai trò máy chủ

Mô tả vai trò máy chủ cố định

quản trị viên hệ thống Thực thi bất kỳ biểu thức máy chủ hoặc cơ sở dữ liệu nào
quản trị viên máy chủ Quản trị máy chủ, cấu hình, khởi động, dừng.
quản trị viên thiết lập Quản trị các máy chủ được liên kết và quyền chạy các thủ tục được lưu trữ ở giai đoạn khởi động máy chủ.
quản trị viên bảo mật Quản lý thông tin đăng nhập và mật khẩu. Có thể cấp quyền tạo cơ sở dữ liệu mới.
quản trị viên xử lý Thực hiện lệnh KILL.
người sáng tạo db Tạo, thay đổi, đổi tên và xóa cơ sở dữ liệu.
quản trị viên đĩa Quản lý tập tin trên đĩa.
quản trị viên hàng loạt Thực thi các câu lệnh BULK INSERT.

Đăng nhập sa là đăng nhập máy chủ SQL đặc biệt. Thông tin đăng nhập này là thành viên của nhóm sysadmin và cung cấp quyền thực hiện bất kỳ chức năng nào trên máy chủ. SQL Server tạo thông tin đăng nhập này trong khi cài đặt và không thể xóa được. Ngay sau khi cài đặt xong, đăng nhập sa không có mật khẩu. Cần đặt mật khẩu cho sa để đảm bảo tính bảo mật cho máy chủ cơ sở dữ liệu của bạn, đặc biệt đối với các máy chủ có các loại xác thực hỗn hợp. Hãy nhớ: các máy chủ có xác thực Windows không chấp nhận hoặc xử lý thông tin đăng nhập máy chủ SQL.

Khi cài đặt SQL server trên Windows 98 hoặc Windows ME, máy chủ luôn được cài đặt kiểu xác thực hỗn hợp nên có thể chấp nhận đăng nhập vào máy chủ SQL. Các loại xác thực mặc định khác nhau đối với SQL Server 7.0 và MSDE so với SQL Server 2000 và MSDE 2000 được cài đặt trên Windows 2000 và Windows NT. Đối với SQL Server 7.0 và MSDE, quy trình cài đặt mặc định sẽ cài đặt máy chủ với loại xác thực hỗn hợp. Ngược lại, SQL Server 2000 và MSDE 2000 được cài đặt xác thực Windows theo mặc định. Ngoài ra, quá trình cài đặt Phiên bản 2000 sẽ gán các thành viên của nhóm Quản trị viên Windows với vai trò máy chủ cố định sysadmin. Do đó, những thông tin đăng nhập này tương tự như thông tin đăng nhập sa, có toàn quyền kiểm soát máy chủ.

Người dùng và vai trò cơ sở dữ liệu cố định

Thông thường, người dùng truy cập SQL Server để làm việc với một hoặc nhiều cơ sở dữ liệu. Với mục đích này, SQL Server có cơ chế khớp thông tin đăng nhập với cơ sở dữ liệu. Giống như máy chủ SQL có thể có một hoặc nhiều thông tin đăng nhập, mỗi thông tin đăng nhập có thể có một hoặc nhiều tài khoản được liên kết với nó. Tuy nhiên, một tài khoản chỉ tương ứng với một lần đăng nhập (có hai trường hợp ngoại lệ). Tài liệu SQL Server xác định tài khoản là người dùng cơ sở dữ liệu (hoặc người dùng). Mọi người dùng cơ sở dữ liệu đều có quyền truy cập vào cơ sở dữ liệu này.

SQL Server có thể cấp cho người dùng cơ sở dữ liệu quyền sở hữu cơ sở dữ liệu và quyền sử dụng các đối tượng cơ sở dữ liệu. SQL Server cung cấp sự phân quyền trong cơ sở dữ liệu ở hai cấp độ độc lập. Ở cấp độ đầu tiên, bạn có thể chỉ định một hoặc nhiều cụm quyền cho người dùng. Tài liệu SQL Server xác định các cụm này là các vai trò cơ sở dữ liệu cố định. Tôi gọi chúng là cụm quyền vì chúng có thể kết hợp các quyền trên nhiều đối tượng cơ sở dữ liệu. Ví dụ: một vai trò cố định (db_datareader) cho phép bạn đọc dữ liệu từ bất kỳ bảng nào trong cơ sở dữ liệu—không chỉ một hoặc hai bảng cụ thể. Ở cấp độ thứ hai, bạn có thể gán quyền ở cấp độ đối tượng cơ sở dữ liệu cụ thể. SQL Server cho phép bạn kết hợp cả hai phương pháp: người dùng có thể là thành viên của một hoặc nhiều vai trò cơ sở dữ liệu cố định và cũng có các quyền cụ thể trên các đối tượng cơ sở dữ liệu cụ thể. Tôi sẽ đề cập đến việc quản lý quyền trên các đối tượng cơ sở dữ liệu cụ thể trong phần tiếp theo.

Hai người dùng đặc biệt có thể được liên kết với nhiều lần đăng nhập. Đây là những người dùng dbo và khách. Người dùng dbo là thành viên của vai trò máy chủ cố định sysadmin và có thể tạo các đối tượng trên máy chủ, chẳng hạn như cơ sở dữ liệu hoặc bảng cơ sở dữ liệu. Người dùng có thông tin đăng nhập không thuộc vai trò máy chủ cố định sysadmin cũng có thể tạo các đối tượng cơ sở dữ liệu, chẳng hạn như bảng.

Khả năng hiển thị của các đối tượng trong Cửa sổ cơ sở dữ liệu dự án ADP phụ thuộc vào việc thông tin đăng nhập dự án có thuộc vai trò máy chủ cố định sysadmin hay không. Nếu thông tin đăng nhập dự án ADP là thành viên của vai trò quản trị viên hệ thống, Cửa sổ cơ sở dữ liệu sẽ hiển thị tất cả các đối tượng do người dùng dbo sở hữu mà không có dấu ngoặc đơn sau tên của họ. Đối với người dùng dbo, tất cả các đối tượng thuộc sở hữu của người dùng không phải dbo đều được hiển thị với tên người dùng được đặt trong dấu ngoặc đơn sau tên đối tượng cơ sở dữ liệu. Nếu thông tin đăng nhập vào dự án ADP không thuộc vai trò quản trị viên hệ thống, tên của các đối tượng do người dùng này sở hữu sẽ được hiển thị trong cửa sổ cơ sở dữ liệu mà không có dấu ngoặc đơn. Tên của các đối tượng có chủ sở hữu là dbo được hiển thị với hậu tố (dbo). Các đối tượng có chủ sở hữu không phải là người đăng nhập dự án ADP hoặc người dùng dbo sẽ không được hiển thị trong Cửa sổ cơ sở dữ liệu.

Hầu hết các thông tin đăng nhập đều có người dùng cho mỗi cơ sở dữ liệu mà họ có quyền truy cập. Tuy nhiên, thông tin đăng nhập có thể truy cập cơ sở dữ liệu ngay cả khi không có người dùng trong cơ sở dữ liệu đó nếu cơ sở dữ liệu có người dùng chuyên dụng. Tên của người dùng này là khách, là người dùng để đăng nhập mà không cần tài khoản cơ sở dữ liệu. Người dùng khách không được liên kết với bất kỳ thông tin đăng nhập nào. Bạn có thể gán quyền cho người dùng khách giống như bất kỳ người dùng nào khác trong cơ sở dữ liệu. Điều này cho phép bạn định cấu hình quyền cho thông tin đăng nhập không có người dùng cụ thể trong cơ sở dữ liệu cụ thể.

Các thành viên của vai trò máy chủ cố định sysadmin có quyền không hạn chế đối với bất kỳ cơ sở dữ liệu nào trên máy chủ. Do đó, các thành viên của vai trò này có thể truy cập cơ sở dữ liệu ngay cả khi cơ sở dữ liệu không có người dùng.

Một trong những cách nhanh nhất và dễ dàng nhất để cấp cho người dùng quyền thực hiện các chức năng trong cơ sở dữ liệu là chỉ định người dùng cho một thành viên có vai trò cơ sở dữ liệu cố định. Có chín vai trò cơ sở dữ liệu cố định trong SQL Server và chúng giống nhau đối với SQL Server 7.0 và SQL Server 2000. Tên và mô tả ngắn gọn về các vai trò cơ sở dữ liệu cố định được hiển thị trong bảng sau. Bạn có thể chạy thủ tục lưu trữ hệ thống sp_helpdbfixedrole để có được danh sách các tên vai trò cơ sở dữ liệu cố định. Việc gọi thủ tục lưu trữ của hệ thống sp_dbfixedrolepermission sẽ trả về một tập hợp bảng với các quyền cụ thể cho từng vai trò cơ sở dữ liệu cố định.

Đã sửa tên vai trò cơ sở dữ liệu

Mô tả vai trò cơ sở dữ liệu cố định

db_owner Quyền không giới hạn trong cơ sở dữ liệu.
db_accessadmin Để thêm và xóa người dùng cơ sở dữ liệu.
db_datareader Để đọc từ các bảng và dạng xem cơ sở dữ liệu.
db_datawriter Để thêm (chèn), chỉnh sửa (cập nhật) và xóa (xóa) các bản ghi của bảng và dạng xem cơ sở dữ liệu.
db_ddladmin Để thực thi bất kỳ câu lệnh Ngôn ngữ định nghĩa dữ liệu SQL nào (hoặc thực hiện các chức năng này bằng GUI) trên cơ sở dữ liệu.
db_securityadmin Để quản lý tư cách thành viên vai trò người dùng, quyền truy cập đối tượng và quyền sở hữu cơ sở dữ liệu.
db_backupoperator Để tạo các bản sao lưu (sao lưu) và khôi phục từ cơ sở dữ liệu (khôi phục) chúng.
db_denydatareader Để từ chối (hoặc thu hồi) quyền thực hiện bất kỳ CHỌN nào từ một đối tượng cơ sở dữ liệu cụ thể.
db_denydatawriter Để từ chối (hoặc thu hồi) quyền đối với bất kỳ câu lệnh INSERT, UPDATE hoặc DELETE nào được thực hiện trên một đối tượng cơ sở dữ liệu cụ thể.

Việc chỉ định người dùng vào các vai trò cơ sở dữ liệu cố định sẽ ảnh hưởng đến các chức năng mà người dùng có thể thực hiện. Có thể thay đổi tác động của tư cách thành viên của người dùng trong vai trò cơ sở dữ liệu cố định bằng cách gán quyền cho người dùng trên các đối tượng cơ sở dữ liệu cụ thể. Để đơn giản, phần này không đề cập đến nó nhưng phần tiếp theo sẽ đề cập đến việc gán quyền cho các đối tượng cụ thể và do người dùng xác định vai trò cơ sở dữ liệu (do người dùng xác định). Cửa sổ cơ sở dữ liệu không hiển thị bất kỳ bảng nào trừ khi người dùng đăng nhập dự án ADP là thành viên của vai trò cơ sở dữ liệu cố định db_datareader. Người dùng không có tư cách thành viên trong vai trò db_backupoperator không thể thực thi các lệnh trong menu Sao lưu hoặc Khôi phục (menu Công cụ, menu con Tiện ích Cơ sở dữ liệu). Theo đó, người dùng không phải là thành viên của vai trò cơ sở dữ liệu cố định db_ddladmin không thể tạo bảng hoặc các đối tượng khác trong cơ sở dữ liệu. Khi sử dụng Cửa sổ cơ sở dữ liệu, người dùng không có tư cách thành viên trong vai trò db_ddladmin có thể chỉnh sửa các đối tượng máy chủ như bảng và dạng xem hoặc tạo các đối tượng mới, tuy nhiên, các đối tượng đã chỉnh sửa và tạo sẽ không được lưu vào cơ sở dữ liệu.

Các thành viên của vai trò cơ sở dữ liệu cố định db_owner có thể thực hiện tất cả các chức năng do thành viên cung cấp trong bất kỳ vai trò cơ sở dữ liệu nào khác. Vì thông tin đăng nhập trong vai trò này có thể tạo cơ sở dữ liệu mà không cần phải là thành viên trong vai trò máy chủ cố định sysadmin nên các thành viên của nhóm db_owner không bắt buộc phải là người dùng dbo. Sau đó, các thành viên của vai trò máy chủ cố định sysadmin có thể thực hiện bất kỳ chức năng nào trong cơ sở dữ liệu mà thành viên của nhóm db_owner có thể thực hiện. Ngoài ra, các bảng và dạng xem do người dùng dbo tạo đã cải thiện khả năng hiển thị so với các bảng và dạng xem được tạo bởi các thành viên của vai trò db_owner không phải là thành viên của vai trò máy chủ cố định sysadmin.

Vai trò cơ sở dữ liệu do người dùng xác định và phân quyền

Đặc tả bảo mật của SQL Server cho phép sáu loại quyền đối với các đối tượng cơ sở dữ liệu cụ thể. Quản trị viên cơ sở dữ liệu có thể đặt quyền truy cập các đối tượng cụ thể bằng cách tạo các vai trò cơ sở dữ liệu do người dùng xác định và thêm người dùng vào các nhóm này. Sau đó, họ có thể gán quyền cho các đối tượng cụ thể trong các vai trò đó. Tất cả thành viên của bất kỳ vai trò đặc biệt nào đều kế thừa quyền của những vai trò đó. Quản trị viên cơ sở dữ liệu có thể thêm và xóa người dùng khỏi vai trò sau khi họ được tạo và thay đổi quyền cho vai trò.

Sáu tên quyền đối tượng và mô tả của chúng được hiển thị trong bảng sau. Bạn có thể gán các quyền này cho các đối tượng cơ sở dữ liệu cụ thể. Nếu bạn muốn cấp quyền cho tất cả các đối tượng, bạn sẽ phải gán quyền cho từng đối tượng cơ sở dữ liệu. Tuy nhiên, tốt hơn hết bạn nên sử dụng các vai trò cơ sở dữ liệu cố định nếu cần cấp quyền cho tất cả các đối tượng cơ sở dữ liệu. Ví dụ: nếu bạn muốn cấp quyền SELECT cho tất cả các bảng và dạng xem (bao gồm cả những bảng chưa được tạo), việc gán người dùng vào vai trò cơ sở dữ liệu cố định db_datareader sẽ dễ dàng hơn. Nếu mục tiêu của bạn là giới hạn quyền CHỌN chỉ ở một hoặc hai chế độ xem hiện có thì hãy tạo vai trò cơ sở dữ liệu do người dùng xác định, cấp quyền CHỌN cho các chế độ xem đó và đưa vào vai trò đó những người dùng cần được cấp quyền đặc biệt.

Tên quyền

Mô tả quyền

LỰA CHỌN Xem các bản ghi trong một bảng hoặc dạng xem.
CHÈN Thêm bản ghi mới vào bảng hoặc dạng xem.
CẬP NHẬT Thay đổi nội dung của bảng hoặc bản ghi dạng xem.
XÓA BỎ Xóa bản ghi khỏi bảng hoặc dạng xem.
NGƯỜI GIỚI THIỆU Cho phép bạn tạo khóa ngoại cho khóa chính hoặc chỉ mục duy nhất của bảng hoặc do người dùng xác định chức năng bảng(hàm trả về hàng do người dùng xác định).
HÀNH HÌNH Thực thi một thủ tục được lưu trữ hoặc chức năng do người dùng xác định.

Quyền trên các đối tượng cơ sở dữ liệu cụ thể có thể có ba trạng thái: được cấp, bị từ chối và bị thu hồi. Nếu bạn cấp quyền truy cập cho một đối tượng, giá trị quyền sẽ có trạng thái được cấp. Theo đó, nếu bạn từ chối quyền truy cập, quyền sẽ bị từ chối. Nếu bạn đang thu hồi quyền, hãy thay đổi quyền từ được cấp hoặc bị từ chối thành bị thu hồi. Quyền bị thu hồi không cho phép hoặc từ chối quyền truy cập vào một đối tượng.

Bởi vì một người dùng có thể được đưa vào nhiều vai trò cơ sở dữ liệu cố định và do người dùng xác định nên có thể xảy ra xung đột quyền giữa các vai trò. Bạn có thể sử dụng những xung đột này để tinh chỉnh hệ thống bảo mật của mình. Ví dụ: một người dùng được bao gồm trong vai trò cơ sở dữ liệu cố định db_datareader, vai trò này cung cấp cho người dùng quyền thực thi các truy vấn SELECT trên tất cả các bảng và dạng xem trong cơ sở dữ liệu. Tuy nhiên, bạn có thể từ chối việc đọc từ bảng bán hàng cho người dùng có quyền đọc dữ liệu từ tất cả các bảng để ẩn thông tin nhạy cảm trong bảng bán hàng với người đó. Theo đó, các thành viên của vai trò cơ sở dữ liệu cố định db_denydatareader không thể đưa ra các truy vấn CHỌN đối với bất kỳ bảng nào trong cơ sở dữ liệu, ngay cả khi người dùng được đưa vào vai trò cơ sở dữ liệu do người dùng xác định để cấp quyền đọc từ một số bảng cụ thể. Quyền bị từ chối luôn ghi đè quyền được cấp.

SQL Server giúp quản lý bảo mật dễ dàng hơn bằng cách gán quyền cho các nhóm người dùng thông qua tư cách thành viên của họ trong các vai trò cơ sở dữ liệu cố định và do người dùng xác định. Hãy nhớ rằng mỗi người dùng thường tương ứng với một thông tin đăng nhập cụ thể. Đổi lại, thông tin đăng nhập có thể tương ứng với người dùng Windows cụ thể. Tuy nhiên, một lần đăng nhập cũng có thể là một phần của một nhóm Người dùng Windows. Do đó, nếu bạn đã có một nhóm Windows mà bạn muốn đặt cùng cài đặt bảo mật, thì hãy tạo thông tin đăng nhập cho nhóm Windows. Sau đó tạo một người dùng cho thông tin đăng nhập này. Mọi quyền bạn xác định cho người dùng này sẽ áp dụng cho tất cả thành viên của nhóm Windows tương ứng.

Lập trình bảo mật máy chủ SQL

SQL-DMO là một ứng dụng vùng chứa (Ứng dụng tự động hóa), mục đích của nó là quản trị SQL Server. Vì SQL-DMO là API dành cho SQL Server Enterprise Manager nên bạn có thể lập trình mọi thứ trong SQL-DMO mà các công cụ đồ họa của Enterprise Manager có thể cung cấp cho bạn, bao gồm cả việc quản lý tất cả các khía cạnh bảo mật của SQL Server. Khía cạnh này của SQL-DMO đặc biệt hữu ích cho các dự án sử dụng MSDE và MSDE 2000 vì chúng không bao gồm Trình quản lý doanh nghiệp. Ngoài ra, những người lập trình Access 2002 sẽ cần tìm hiểu một số giải pháp phần mềm để quản lý bảo mật, vì Access 2002 không có khả năng quản lý bảo mật thông qua các menu (như Access 2000).

Trong Access, bạn có thể lập trình bằng SQL-DMO giống như cách bạn sử dụng bất kỳ đối tượng COM nào khác. Dự án VBA của bạn phải sử dụng thư viện SQL-DMO. Thư viện đối tượng Microsoft SQLDMO là tên của thư viện đối tượng này. Thêm liên kết vào thư viện bằng lệnh Tham khảo (menu Công cụ). Tệp DLL thư viện được bao gồm trong MSDE và MSDE 2000. Các phiên bản khác của SQL Server bao gồm tệp DLL và tệp Trợ giúp mà bạn có thể mở trực tiếp từ cửa sổ Visual Basic Editor (VBE). Những người sử dụng Microsoft Office XP Developer Edition có thể cài đặt phiên bản SQL Server bao gồm tệp trợ giúp cho SQL-DMO.

Hình này hiển thị một đoạn của mô hình SQL-DMO phân cấp với các đối tượng dành cho các ví dụ mã nằm sâu hơn trong văn bản. Lưu ý rằng đối tượng SQLServer nằm ở trên cùng của hệ thống phân cấp. Nhiều ứng dụng có thể kết nối với SQL Server thông qua đối tượng SQLServer. Hậu duệ của đối tượng SQLServer là các tập hợp các đối tượng để đăng nhập và cơ sở dữ liệu, cũng như các đối tượng riêng lẻ như IntegratedSecurity, cung cấp khả năng quản lý bảo mật SQL Server. Ví dụ sau đây sử dụng thuộc tính SecurityMode của đối tượng IntegratedSecurity để minh họa cách đặt chế độ xác thực SQL Server. Các thành viên của bộ sưu tập Cơ sở dữ liệu là các cơ sở dữ liệu riêng lẻ, mỗi cơ sở dữ liệu có các bộ sưu tập và đối tượng riêng. Một trong những bộ sưu tập này là bộ sưu tập Người dùng. Một bộ sưu tập khác được sử dụng cho các vai trò cơ sở dữ liệu cố định và do người dùng xác định (DatabaseRoles). Tư cách thành viên của người dùng cá nhân trong bộ sưu tập DatabaseRoles xác định khả năng của người dùng trong việc đọc và sửa đổi các đối tượng trong bộ sưu tập Bảng và Chế độ xem.

Vẽ. Một đoạn của mô hình đối tượng SQL-DMO liên quan đến bảo mật SQL Server

Trước khi nói về SQL-DMO, điều quan trọng cần biết là DLL dành cho SQL-DMO khác với SQL Server 7 và SQL Server 2000. Hai phiên bản SQL-DMO khác nhau ít nhất ở hai khía cạnh. Đầu tiên, phiên bản dành cho SQL Server 2000 bao gồm các đối tượng mới được giới thiệu trong SQL Server 2000, cũng như các cải tiến đối với các đối tượng truyền thống. SQL-DMO cho SQL Server 2000 cũng bao gồm các đối tượng quản lý SQL Server 7.0 truyền thống. Tên đối tượng của năm 2000 thường kết thúc bằng 2 (ví dụ: SQLServer2 cho các đối tượng mới, thay vì SQLServer cho các đối tượng truyền thống). Thứ hai, SQL Server 7.0 không thể kiểm soát các chương trình sử dụng SQL-DMO cho SQL Server 2000 (ngay cả khi các chương trình đó sử dụng tên đối tượng SQL-DMO truyền thống). Tuy nhiên, bạn có thể quản lý SQL Server 2000 bằng cách sử dụng thư viện SQL-DMO dành cho SQL Server 7.0. Hạn chế này là kết quả của những thay đổi trong định dạng tệp thư viện khi di chuyển sang phiên bản mới; Cú pháp tập lệnh SQL-DMO không thay đổi.

Sự khác biệt giữa các phiên bản SQL-DMO đòi hỏi phải chú ý cẩn thận đến phiên bản thư viện nào bạn sẽ sử dụng trong dự án của mình. Nếu bạn muốn ứng dụng SQL-DMO của mình hoạt động với SQL Server 7.0 và SQL Server 2000, bạn phải viết chương trình bằng SQL-DMO cho SQL Server 7.0. Mặt khác, nếu bạn cần tận dụng SQL Server 2000 thì bạn cần phát triển ứng dụng của mình bằng thư viện dành cho SQL Server 2000. Vì bài viết trình bày các kỹ thuật lập trình bảo mật bằng SQL-DMO nên tôi đã sử dụng phiên bản SQL Server 7.0 của SQL-DMO. Dù thế nào đi nữa, mã trông giống nhau đối với phiên bản khác nhau, trừ khi bạn đang sử dụng các đối tượng mới được giới thiệu trong SQL Server 2000.

Kết nối với máy chủ SQL

Giống như bạn có thể kết nối với SQL Server theo hai cách bằng hộp thoại Thuộc tính kết nối trong dự án ADP, bạn có thể kết nối với SQL Server theo hai cách thông qua SQL-DMO. Một phương pháp tương ứng với xác thực bằng SQL Server. Sử dụng phương pháp này, mã của bạn phải gửi tên máy chủ, thông tin đăng nhập và mật khẩu qua SQL-DMO đến máy chủ. Bạn có thể sử dụng tham số tên máy chủ để chỉ định các phiên bản SQL Server khác nhau trên máy trạm cục bộ của bạn hoặc trên một máy trạm khác trên mạng. SQL-DMO cũng cho phép bạn kết nối bằng cách chỉ xác định tên máy chủ. Trong trường hợp này, SQL-DMO gửi ID của người dùng được ủy quyền trong Windows tới phiên bản máy chủ SQL. Để sử dụng phương pháp này, bạn phải đặt thuộc tính loginSecure của máy chủ thành True.

Danh sách sau đây hiển thị một cặp quy trình minh họa cú pháp kết nối với một phiên bản của SQL Server bằng thông tin đăng nhập SQL Server. Quy trình đầu tiên xác định ba tham số chuỗi cho tên máy chủ (srvname), thông tin đăng nhập (suid) và mật khẩu (pwd). Sau đó nó sẽ gửi chúng đến thủ tục thứ hai, bắt đầu bằng việc khởi tạo đối tượng SQLServer. Đối tượng này đại diện cho một phiên bản máy chủ. Sau đó, quy trình thứ hai gọi phương thức Connect của đối tượng SQLServer. Phương thức này lấy ba tham số làm đầu vào. Cú pháp truyền các biến tên máy chủ, thông tin đăng nhập và mật khẩu được trình bày.

Cuộc gọi phụSQLDMOSQLServerLogin()
Dim srvname dưới dạng chuỗi
Dim suid Như Chuỗi
Dim pwd dưới dạng chuỗi

"Xác định đối số để đăng nhập máy chủ SQL
suid="your_login_name"
pwd = "mật khẩu của bạn"

"Gọi thủ tục kết nối bằng phương thức đăng nhập máy chủ SQL
SQLDMOSQLServerLogin srvname, suid, pwd

SQLDMOSQLServerLogin phụ (srvname dưới dạng chuỗi, _

"Phiên bản máy chủ

"Gọi phương thức Connect để kết nối bằng phương thức đăng nhập máy chủ SQL

"Xóa biến
srv1.Ngắt kết nối
Đặt srv1 = Không có gì

Ví dụ mã sau đây minh họa cú pháp kết nối với phiên bản SQL Server bằng cách sử dụng thông tin đăng nhập Windows.
dựa trên ID người dùng Windows. Trong phương pháp kết nối với máy chủ thứ hai này, bạn không cần chỉ định thông tin đăng nhập hoặc mật khẩu.
SQL-DMO tự động chấp nhận ID người dùng Windows và kết nối người dùng với máy chủ bằng thông tin đăng nhập
cho ID người dùng. Đặt thuộc tính loginSecure thành True trước khi gọi phương thức Connect. Giá trị mặc định của thuộc tính này là Sai.

Cuộc gọi phụSQLDMOWindowsĐăng nhập()
Dim srvname dưới dạng chuỗi
"Đặt đối số cho thông tin đăng nhập Windows
srvname = "YOUR_SERVER_NAME"

SQLDMOWindowsTên đăng nhập

Sub SQLDMOWindowsLogin(srvname As String)
Dim srv1 Như SQLDMO.SQLServer

"Phiên bản máy chủ
Đặt srv1 = SQLDMO.SQLServer mới

"Đặt thuộc tính loginSecure trước khi gọi
"Phương thức kết nối với tên máy chủ làm đối số
srv1.LoginSecure = Đúng
srv1.Connect srvname

"Xóa biến
srv1.Ngắt kết nối
Đặt srv1 = Không có gì

Thay đổi chế độ xác thực

Một trong những lợi ích chính mà SQL-DMO cung cấp cho các lập trình viên MSDE và MSDE 2000 là nó cung cấp một tính năng mà lẽ ra họ không có được. Điều này là do Trình quản lý doanh nghiệp không được bao gồm trong gói cài đặt MSDE hoặc MSDE 2000. Ví dụ: thành phần máy khách Trình quản lý doanh nghiệp SQL Server cho phép quản trị viên thay đổi đồ họa chế độ xác thực máy chủ: xác thực Windows hoặc chế độ hỗn hợp. Dự án ADP không cung cấp tùy chọn này. Tuy nhiên, một số quy trình sau đây sẽ cho phép bạn thay đổi chế độ xác thực của máy chủ mà thậm chí không thể sử dụng Trình quản lý doanh nghiệp.

Thủ tục đầu tiên xác định giá trị của một tham số và gửi nó đến thủ tục thứ hai. Tham số này chỉ định một trong hai chế độ xác thực. Chú thích thủ tục hiển thị tên của hai hằng số được xác định trước theo chế độ xác thực. Xác thực chế độ hỗn hợp là chế độ mặc định. SQL-DMO cho phép bạn đặt chế độ xác thực không có sẵn ngay cả trong Enterprise Manager. Nói cách khác, bạn có thể sử dụng SQL-DMO để yêu cầu máy chủ chỉ chấp nhận thông tin đăng nhập vào SQL Server.

Quy trình thứ hai kết nối với máy chủ bằng ID người dùng Windows. Sau đó, nó đặt thuộc tính SecurityMode của đối tượng IntegratedSecurity cho máy chủ thành giá trị của tham số được truyền cho nó từ thủ tục đầu tiên. Nếu giá trị của thuộc tính này thay đổi chế độ xác thực, chế độ này sẽ không thay đổi cho đến khi bạn dừng và khởi động lại máy chủ. Tuy nhiên, việc gọi phương thức Stop của đối tượng máy chủ không thể dừng máy chủ ngay lập tức. Bạn phải đợi cho đến khi máy chủ dừng lại. Sử dụng thuộc tính Trạng thái của đối tượng máy chủ, chương trình của bạn có thể theo dõi thông báo rằng máy chủ đã dừng. Quy trình này sử dụng một vòng lặp, chờ giá trị Trạng thái thay đổi thành SQLDMOSvc_Stopped. Tiếp theo, quy trình thực thi phương thức Start của đối tượng SQLServer. Việc gọi phương thức này sẽ đặt chế độ xác thực mới cho máy chủ.

Cuộc gọi phụChangeServerAuthenticationMode()
Dim constAuth dưới dạng Byte

"Đặt constAuth thành:
" SQLDMOSecurity_Integrated để chuyển sang chế độ
"Xác thực Windows
" SQLDMOSecurity_Mixed để thay đổi sang chế độ xác thực hỗn hợp

"Đặt giá trị mặc định cho constAuth
constAuth = SQLDMOSecurity_Mixed

"gọi một thủ tục để thay đổi chế độ xác thực
ChangeServerAuthenticationMode constAuth

Sub ChangeSeverAuthenticationMode(constAuth As Byte)
Dim srv1 Như SQLDMO.SQLServer

"Đặt tên máy chủ;
"mặc định YOUR_SERVER_NAME
srvname = "YOUR_SERVER_NAME"

"một thể hiện của đối tượng SQLServer cho kết nối
"chúng tôi sử dụng xác thực Windows
Đặt srv1 = SQLDMO.SQLServer mới
srv1.LoginSecure = Đúng
srv1.Connect srvname

"Đặt thuộc tính SecurityMode cho Windows
"hoặc xác thực hỗn hợp
srv1.IntegratedSecurity.SecurityMode = constAuth
srv1.Ngắt kết nối

“Ta gọi lệnh dừng lại và chờ đợi
"cho đến khi nó dừng lại
srv1.Dừng lại
Thực hiện cho đến khi srv1.Status = SQLDMOSvc_Stopped
Vòng

"Khởi động lại máy chủ bằng loại xác thực hỗn hợp
srv1.Start Đúng, srvname

"Dọn dẹp
srv1.Ngắt kết nối
Đặt srv1 = Không có gì

Khai trương dự án ADP

Đôi khi cần phải mở dự án ADP theo chương trình từ ứng dụng SQL-DMO của bạn. Công nghệ mở dự án ADP không yêu cầu sử dụng SQL-DMO, tuy nhiên, ứng dụng SQL-DMO của bạn có thể tận dụng khả năng này. Ví dụ về mã cuối cùng trong bài viết này (ngay trước phần cuối cùng) minh họa cách tạo người dùng mới. Nhu cầu mở dự án ADP dựa trên việc tạo chuỗi kết nối khi cài đặt ứng dụng dựa trên dự án ADP.

Ví dụ mã sau đây minh hoạ cách mở một dự án ADP hiện có. Trong mã bên dưới, tên dự án ADP là msdn_test_security.adp. Mã mẫu cho phép bạn mở dự án ADP ở chế độ xác thực Windows hoặc ở chế độ xác thực SQL Server. Một lần nữa hai thủ tục được sử dụng. Danh sách các tham số trong quy trình đầu tiên - CallOpenADPWindowsOrSQLServer - tương đối lớn, do cần chỉ định tên máy chủ, cơ sở dữ liệu, đường dẫn và tên của tệp dự án ADP, thông tin đăng nhập và mật khẩu SQL Server, cũng như một biến logic . Biến Boolean xác định xem dự án có được mở bằng xác thực Windows hoặc SQL Server hay không. Khi chỉ định xác thực Windows, không cần đăng nhập và mật khẩu vì dự án ADP tự động tham chiếu ID người dùng Windows. Quy trình thứ hai sử dụng các tham số này để mở dự án ADP.

Trước khi mô tả quy trình thứ hai, sẽ rất hữu ích nếu giải thích một số tính năng của mã. Đầu tiên, quy trình mở dự án ADP đã chạy trong phiên Access. Do đó, chúng ta cần tạo một phiên bản Access mới cho dự án mà chúng ta định mở. Để tạo phiên Access, lớp OLE được sử dụng.

Thứ hai, mọi dự án ADP hiện có luôn mở với các tham số kết nối máy chủ được lưu trong lần mở trước đó. Do đó, chương trình phải mở dự án bằng cách sử dụng các tham số kết nối cũ, sau đó thay đổi các tham số này. Cài đặt kết nối mới chỉ có thể được chỉ định cho một dự án đang mở. Sau khi đóng dự án, các tham số kết nối mới sẽ được lưu cho đến khi người dùng thay đổi chúng trong hộp thoại Connection Parameters. (Tuy nhiên, mô hình đối tượng Office cho phép bạn ẩn và tắt lệnh menu Kết nối trên menu Tệp.)

Thứ ba, một phiên có dự án ADP mở sẽ tồn tại miễn là biến đại diện cho phiên đó tồn tại. Sử dụng mô tả Công khai trong định nghĩa phiên cho dự án đang được mở. Biến được khai báo trong phần mô tả module. Điều này sẽ cho phép phiên tồn tại miễn là dự án mở nó, tức là mã của chúng tôi, vẫn tồn tại. Biến phiên Access trong ví dụ này có tên là appAccess và phần khai báo sau nằm trong phần định nghĩa mô-đun tiêu chuẩn. Vì phần khai báo phải ở đầu mô-đun nên bạn sẽ không thấy nó trong mã của quy trình thứ nhất hoặc thứ hai.

Ứng dụng công khaiTruy cập dưới dạng Access.Application

Quy trình thứ hai, OpenADPWindowsOrSQLServer, bắt đầu bằng một thông báo hỏi xem có nên để phiên mở sau khi quy trình hoàn tất hay không. Nếu người dùng trả lời "không", quy trình sẽ đặt tham số kết nối cho dự án và sau đó đóng phiên mà không có cơ hội xem các thay đổi. Tiếp theo, dự án bắt đầu một phiên Access mới bằng hàm CreateObject. Các đối số cho hàm này khác nhau tùy thuộc vào phiên bản Access bạn đang sử dụng (mã mô tả chi tiết cụ thể về việc sử dụng Access 2000 hoặc Access 2002). Sau khi tạo phiên cho một dự án, quy trình sẽ gọi phương thức OpenAccessProject để thêm dự án ADP vào phiên. Đối số của phương thức này là một đường dẫn cùng với tên của tệp dự án. Phần mở rộng .adp là tùy chọn. Sau khi dự án được mở, quy trình sẽ ghi đè cài đặt kết nối của nó bằng phương pháp OpenConnection của đối tượng CurrentProject. Thủ tục xác định lại các kết nối bằng cách sử dụng hai nhiều loại dây khác nhau kết nối tùy thuộc vào giá trị của biến bolWindowsLogin. Biến Boolean này được đặt theo quy trình đầu tiên để chỉ ra loại ủy quyền nào cần được đặt cho dự án. Bước cuối cùng của quy trình sẽ đóng phiên nếu người dùng trả lời có cho câu hỏi trong hộp thông báo trước khi mở phiên.

Cuộc gọi phụOpenADPWindowsOrSQLServer()
Dim srvname dưới dạng chuỗi
Dim dbname dưới dạng chuỗi
Đường dẫn mờ dưới dạng chuỗi
Tên mờ dưới dạng chuỗi
Dim suid Như Chuỗi
Dim pwd dưới dạng chuỗi

"Thiết lập các tùy chọn để mở dự án ADP
srvname = "YOUR_SERVER_NAME"
dbname = "Tên_db_của bạn"

suid="your_login_name"
pwd = "mật khẩu của bạn"


"Vì người dùng hiện tại thay vì đăng nhập và mật khẩu máy chủ SQL
bolWindowsĐăng nhập = Sai

"Gọi thủ tục mở dự án ADP prname
"với xác thực Windows hoặc SQL Server

Kết thúc phụ
Sub OpenADPWindowsOrSQLServer(srvname Dưới dạng Chuỗi, dbname Dưới dạng Chuỗi, _
prpath Dưới dạng Chuỗi, prname Dưới dạng Chuỗi, _
suid dưới dạng chuỗi, pwd dưới dạng chuỗi, bolWindowsLogin dưới dạng Boolean)

Dim bolLeaveMở dưới dạng Boolean
Dim strPrFilePath dưới dạng chuỗi
Dim sConnectionString Dưới dạng Chuỗi

"Để dự án mở sau khi thủ tục hoàn tất?
Nếu MsgBox("Bạn có muốn để dự án mở không?", vbYesNo) = vbYes Then
bolLeaveOpen = Đúng
Kết thúc nếu

"Xác định đối tượng phiên Access (sử dụng .9 cho Access 2000
"i.10 cho Access 2002)
Đặt appAccess = CreateObject("Access.Application.9")

"Mở dự án bằng thông tin đăng nhập và mật khẩu của lần khởi chạy cuối cùng
"và cho nó xem
strPrFilePath = prpath & prname
appAccess.OpenAccessProject strPrFilePath
appAccess.Visible = Đúng

"Thiết lập thông tin đăng nhập mới để xác thực Windows hoặc SQL Server;
"và xử lý lỗi cố gắng kết nối sai cách
Nếu bolWindowsĐăng nhập thì
"PROVIDER=SQLOLEDB.1;BẢO MẬT TÍCH HỢP=SSPI;" & _
"THÔNG TIN BẢO MẬT KIÊN TRÌ=FALSE; DANH MỤC BAN ĐẦU=" & _
Khác
sConnectionString = "PROVIDER=SQLOLEDB.1;CATALOG BAN ĐẦU=" & _
dbname & "; NGUỒN DỮ LIỆU=" & srvname
appAccess.CurrentProject.OpenConnection_
sChuỗi kết nối, _
sud, pwd
Kết thúc nếu

"Chúng ta kết thúc phiên họp hoặc chúng ta dừng lại
"để xem hộp thoại Cài đặt kết nối
Nếu bolLeaveOpen = Sai thì
appAccess.CloseCurrentDatabase
Đặt appAccess = Không có gì
Kết thúc nếu

Thêm và xóa thông tin đăng nhập

Có ba cách để kết nối với SQL Server. Ba loại này bao gồm một loại được SQL Server kiểm tra và hai loại khác được Windows kiểm tra. Hai loại mà Windows kiểm tra là thông tin đăng nhập cho ID người dùng cá nhân và thông tin đăng nhập cho nhóm người dùng Windows. Nếu bạn đã có một nhóm người dùng Windows và tất cả các thành viên của nhóm này cần được cấp cùng quyền đối với tài nguyên máy chủ SQL, bạn chỉ cần đặt thông tin đăng nhập cho nhóm Windows. Điều này sẽ giúp bạn không phải tạo thông tin đăng nhập cho từng thành viên trong nhóm.

Ví dụ tạo thông tin đăng nhập thể hiện cú pháp tạo thông tin đăng nhập SQL Server tiêu chuẩn và thông tin đăng nhập dựa trên nhóm người dùng Windows. Mã để tạo thông tin đăng nhập SQL Server cho một nhóm Windows gần giống như mã để tạo thông tin đăng nhập cho một người dùng Windows riêng lẻ. Do đó, ví dụ sau đây về việc tạo thông tin đăng nhập cho một nhóm Windows hoàn toàn giống với việc tạo thông tin đăng nhập cho từng người dùng Windows.

Ví dụ về việc tạo thông tin đăng nhập bao gồm hai thủ tục. Quy trình đầu tiên xác định các tham số để tạo thông tin đăng nhập trên SQL Server, trong đó quy trình thứ hai sẽ tạo thông tin đăng nhập mới. Thủ tục thứ ba là một hàm chuyển đổi giá trị của hằng số bên trong thành một chuỗi mô tả tên của hằng số.

Quy trình thứ hai, sau khi kết nối với máy chủ, sẽ khởi tạo đối tượng đăng nhập. Đối tượng này là thành viên của bộ sưu tập Đăng nhập được hiển thị trong hình. Tiếp theo, quy trình đặt ba tham số cho thông tin đăng nhập: tên (login_name), cơ sở dữ liệu mặc định (defaulf_db_name) và mật khẩu (mật khẩu). Các phép gán đơn giản hoạt động trên hai đối số đầu tiên. Để đặt mật khẩu cho đăng nhập máy chủ SQL, phương thức SetPassword của đối tượng đăng nhập sẽ được gọi. Khi đặt mật khẩu cho lần đăng nhập mới, hãy sử dụng một chuỗi trống làm đối số đầu tiên cho phương thức; chỉ định mật khẩu cho lần đăng nhập mới làm đối số thứ hai. Trong ví dụ của chúng tôi, mật khẩu cho login_name được xác định là "password" (không có dấu ngoặc kép). Việc thêm thông tin đăng nhập login_name được hoàn tất bằng cách gọi phương thức Add của bộ sưu tập Đăng nhập.

Bạn cũng có thể sử dụng phương thức SetPassword để ghi đè mật khẩu của thông tin đăng nhập hiện có. Đối số đầu tiên của phương thức SetPassword trong trường hợp này là mật khẩu hiện tại. Tuy nhiên, nếu bạn không biết mật khẩu hiện tại, bạn có thể chỉ định một chuỗi trống làm đối số đầu tiên, giống như khi tạo mật khẩu cho lần đăng nhập mới. Có thể tạo hoặc thay đổi thông tin đăng nhập nếu thông tin đăng nhập hiện tại của bạn (mà bạn đã kết nối với máy chủ) được bao gồm trong một trong các vai trò máy chủ cố định: sysadmin hoặc securityadmin. Việc bạn thay đổi mật khẩu bằng cách nào không quan trọng: theo chương trình hay bằng cách khác. Ví dụ này sử dụng thông tin đăng nhập sa, một phần của vai trò máy chủ cố định sysadmin.

Một vài dòng tiếp theo của quy trình thứ hai tạo thông tin đăng nhập cho nhóm Windows có tên msdn_OS_users. Trong trường hợp của tôi, nhóm Windows gồm ba ID người dùng Windows này, trên thực tế, nhóm Windows có thể là nhóm người dùng máy tính cục bộ hoặc nhóm người dùng miền Máy chủ Windows. Quá trình tạo thông tin đăng nhập bắt đầu bằng việc khởi tạo một đối tượng đăng nhập mới (lgn1). Nếu bạn cố gắng sử dụng lại lgn1 mà không khởi tạo lại (về 0), lỗi thời gian chạy sẽ xảy ra nhắc nhở bạn rằng cần có một đối tượng mới. Quy trình sử dụng tên nhóm Windows gồm hai phần. Phần đầu tiên là tên máy chủ Windows, phần thứ hai là tên nhóm máy chủ Windows. Dấu gạch chéo ngược đóng vai trò là dấu phân cách. Cơ sở dữ liệu mặc định cho lần đăng nhập thứ hai lại là cơ sở dữ liệu your_db_name. Vì lần đăng nhập thứ hai được tạo để xác thực Windows nên không cần đặt mật khẩu. Tuy nhiên, bạn phải đặt thuộc tính Loại thành SQLDMOLogin_NTGroup. Giá trị này tương ứng với một hằng số nội bộ tương ứng với thông tin đăng nhập nhóm Windows. Khi thêm thông tin đăng nhập SQL Server, bạn không cần đặt thuộc tính Type vì đây là thuộc tính mặc định cho thông tin đăng nhập SQL Server. Việc tạo thông tin đăng nhập thứ hai kết thúc bằng cách gọi phương thức Thêm của bộ sưu tập Thông tin đăng nhập.

Sau khi thêm hai thông tin đăng nhập mới, quy trình sẽ in tên và loại của tất cả thông tin đăng nhập máy chủ. Loại thuộc tính tương ứng với giá trị của các hằng số bên trong. Để làm cho việc hiển thị các loại có thể đọc được, một hàm được sử dụng để chuyển đổi các hằng số thành tên văn bản tương ứng.

Sau khi in các thành viên của bộ sưu tập Đăng nhập, quy trình sẽ xóa hai thông tin đăng nhập mới được tạo theo tên: login_name và YOUR_SERVER_NAME\msdn_OS_users. Ví dụ này minh họa cách sử dụng bộ sưu tập Đăng nhập, phương thức Xóa của nó và thuộc tính Tên của thông tin đăng nhập mà bạn muốn xóa. Để xác nhận việc xóa hai thông tin đăng nhập, quy trình sẽ hiển thị lại danh sách thông tin đăng nhập từ bộ sưu tập Thông tin đăng nhập. Mở cửa sổ Ngay lập tức và so sánh hai danh sách thông tin đăng nhập: sau khi thêm và xóa hai thông tin đăng nhập.

Cuộc gọi phụĐăng nhậpDemo()
Dim srvname dưới dạng chuỗi
Dim suid Như Chuỗi
Dim pwd dưới dạng chuỗi

"đặt tham số đăng nhập khi xác thực bằng máy chủ SQL
srvname = "YOUR_SERVER_NAME"
suid="sa"
pwd="mật khẩu"

"Gọi thủ tục tạo thông tin đăng nhập
Đăng nhậpDemo srvname, suid, pwd

Đăng nhập phụDemo(srvname Dưới dạng chuỗi, _

suid dưới dạng chuỗi, pwd dưới dạng chuỗi)
Dim srv1 Như SQLDMO.SQLServer
Dim lgn1 Như SQLDMO.Login

"Khởi tạo đối tượng máy chủ
Đặt srv1 = SQLDMO.SQLServer mới

"Gọi phương thức Connect
srv1.Connect srvname, suid, pwd

"Khởi tạo đối tượng đăng nhập
Đặt lgn1 = SQLDMO.Login mới

"Thêm thông tin đăng nhập SQL Server
lgn1.Name = "tên_đăng nhập"
lgn1.SetPassword "", "mật khẩu"

srv1.Logins.Thêm lgn1

"Đang khởi tạo đăng nhập để sử dụng lại
Đặt lgn1 = SQLDMO.Login mới

"Thêm thông tin đăng nhập cho nhóm Windows
lgn1.Name = "YOUR_SERVER_NAME\msdn_OS_users"
lgn1.Database = "your_db_name"
lgn1.Type = SQLDMOLogin_NTGroup
srv1.Logins.Thêm lgn1

"Hiển thị tất cả thông tin đăng nhập sau khi thêm hai thông tin mới
Debug.Print "Đăng nhập sau khi thêm hai cái mới"

Nhật ký tiếp theo1

"Xóa thông tin đăng nhập mới được thêm vào
srv1.Logins.Xóa "YOUR_SERVER_NAME\msdn_OS_users"
srv1.Logins.Xóa "login_name"

"Hiển thị lại tất cả thông tin đăng nhập
Debug.Print vbCr & "Đăng nhập sau khi xóa hai thông tin đăng nhập"
Đối với mỗi lgn1 Trong srv1.Logins
Debug.Print DecodeLoginType(lgn1.Type), lgn1.Name
Nhật ký tiếp theo1

"Xóa biến
srv1.Ngắt kết nối
Đặt srv1 = Không có gì

Hàm DecodeLoginType(lgn_type As Byte) Dưới dạng chuỗi

Chọn trường hợp lgn_type
Trường hợp 0
DecodeLoginType = "SQLDMOLogin_NTUser"
Trường hợp 1
DecodeLoginType = "SQLDMOLogin_NTGroup"
Trường hợp 2
DecodeLoginType = "SQLDMOLogin_Standard"
Trường hợp khác
DecodeLoginType = "Gõ ngoài phạm vi"
Kết thúc chọn

Tạo thông tin đăng nhập với người dùng là thành viên của vai trò db_datareader

Việc thêm thông tin đăng nhập mới theo chương trình và gán nó vào cơ sở dữ liệu mặc định sẽ không tạo ra người dùng trong cơ sở dữ liệu cho lần đăng nhập đó. Do đó, dự án ADP dựa trên thông tin đăng nhập này không thể kết nối với cơ sở dữ liệu mặc định. Để dự án hoạt động với cơ sở dữ liệu, bạn phải tạo người dùng trong cơ sở dữ liệu để đăng nhập.

Ví dụ về mã cuối cùng của bài viết trình bày quy trình thêm thông tin đăng nhập xác thực SQL Server mới và đồng thời tạo người dùng cho thông tin đăng nhập đó trong cơ sở dữ liệu your_db_name. Trong ví dụ này, người dùng mới cũng được gán vai trò cơ sở dữ liệu cố định db_datareader. Cuối cùng, dự án ADP được mở dựa trên thông tin đăng nhập và người dùng mới.

Sau khi kết nối với máy chủ và tạo tên đăng nhập mới, mã sẽ tạo một người dùng mới. Tiếp theo, thuộc tính Tên và Đăng nhập được gán cho người dùng. Thuộc tính Đăng nhập có nghĩa là thông tin đăng nhập mà người dùng kết nối - login_name trong ví dụ của chúng tôi. Sau đó, người dùng đã sẵn sàng để được thêm vào bộ sưu tập Người dùng của cơ sở dữ liệu. Lưu ý rằng cú pháp để thêm người dùng mới tuân theo cú pháp phân cấp đối tượng. Phương thức Thêm cho người dùng mới được áp dụng cho tập hợp Người dùng, do đó thuộc về đối tượng cơ sở dữ liệu. Cơ sở dữ liệu là thành viên của bộ sưu tập Cơ sở dữ liệu thuộc sở hữu của đối tượng máy chủ (SQLserver). Sau khi tạo người dùng, cần có một hoặc nhiều dòng để thêm người dùng vào vai trò cơ sở dữ liệu cố định db_datareader. Phương thức thêm người dùng vào một vai trò được gọi là AddMember. Trong trường hợp của chúng tôi, phương thức AddMember của phần tử bộ sưu tập DatabaseRoles sẽ thêm người dùng vào vai trò cơ sở dữ liệu. Phương thức này lấy tham số là biểu thức chuỗi của thuộc tính Name của đối tượng người dùng mới.

Sau khi hoàn tất cấu hình bảo mật của thông tin đăng nhập và người dùng mới, quy trình OpenADPWindowsOrSQLServer sẽ được gọi. Các danh sách trước đây cung cấp một ví dụ về cách sử dụng quy trình này. Trong trường hợp của chúng tôi, tệp msdn_test_security.adp được mở dựa trên login_name. Để kiểm tra chức năng đăng nhập, hãy mở bảng cơ sở dữ liệu your_db_name. Ngoài ra, chức năng đăng nhập mới có thể được kiểm tra trong hộp thoại Tham số kết nối bằng cách chỉ định thông tin đăng nhập your_login.

Nếu bạn cố chạy lại quy trình MakeLoginWithDatareaderUser thì lần thử này sẽ thất bại. Điều này là do thông tin đăng nhập your_login đã tồn tại. Sẽ xảy ra lỗi khi bạn cố gắng thêm lại. Nỗ lực chạy quy trình có thể không thành công vì một lý do khác: Bạn chưa đóng dự án được kết nối với cơ sở dữ liệu bằng thông tin đăng nhập này. Bạn có thể viết cách xử lý lỗi VBA tiêu chuẩn để xử lý các lỗi thời gian chạy. Các lỗi tương tự có thể xảy ra khi thực hiện các ví dụ trước. Tôi đã chọn không đi sâu vào thảo luận về việc phát hiện lỗi thời gian chạy, tập trung vào các vấn đề bảo mật máy chủ SQL.

Sub MakeLoginWithDatareaderUser()
Dim srv1 Như SQLDMO.SQLServer
Dim lgn1 Như SQLDMO.Login
Dim usr1 Là SQLDMO.User
Dim srvname dưới dạng chuỗi
Dim suid Như Chuỗi
Dim pwd dưới dạng chuỗi
Dim dbname dưới dạng chuỗi
Đường dẫn mờ dưới dạng chuỗi
Tên mờ dưới dạng chuỗi
Dim bolWindowsĐăng nhập dưới dạng Boolean

“Xác định các đối số
srvname = "YOUR_SERVER_NAME"
suid="sa"
pwd="mật khẩu"
dbname = "your_db_name"

"khởi tạo máy chủ
Đặt srv1 = SQLDMO.SQLServer mới

"Gọi phương thức Connect để đăng nhập khi xác thực với máy chủ SQL
srv1.Connect srvname, suid, pwd

"Khởi tạo và thêm đối tượng đăng nhập
"tới máy chủ srv1
suid="tên_đăng nhập"
Đặt lgn1 = SQLDMO.Login mới
lgn1.Name = suid
lgn1.Database = dbname
lgn1.SetPassword "", pwd
srv1.Logins.Thêm lgn1

"Khởi tạo và thêm đối tượng người dùng
"vào cơ sở dữ liệu your_db_name
Đặt usr1 = SQLDMO.User mới
usr1.Name = suid
usr1.Login = lgn1.Name
srv1.Databases(dbname).Users.Add usr1
srv1.Databases(dbname).DatabaseRoles("db_datareader").AddMember usr1.Name

"Đặt tham số để mở dự án ADP

prpath = "Path_to_project_file"
prname = "msdn_security_test"

"Đối số này kiểm soát việc sử dụng thông tin đăng nhập Windows
"dành cho người dùng hiện tại thay vì máy chủ SQL suid và pwd
bolWindowsĐăng nhập = Sai

"Gọi tên thủ tục mở dự án
"với xác thực Windows hoặc SQL Server
Tên srv của OpenADPWindowsOrSQLServer, dbname, _
prpath, prname, suid, pwd, bolWindowsLogin

"Chúng tôi để đối tượng mở để xem

Phần kết luận

Bảo mật SQL Server được xây dựng trên các nguyên tắc khác với các nguyên tắc được các lập trình viên cơ sở dữ liệu Jet sử dụng. Tuy nhiên, SQL Server Books Online ghi lại cẩn thận các nguyên tắc bảo mật của SQL Server. Bài viết này dịch các quy tắc BOL cơ bản thành các quy tắc cụ thể với mục đích sử dụng dự án Access với SQL Server. Các ví dụ về mã trong bài viết này minh họa cách quản lý bảo mật SQL Server bằng Access.

Được đăng bởi Mike Weiner
Đồng tác giả: Burzin Patel
Biên tập: Lubor Kollar, Kevin Cox, Bill Emmert, Greg Husemeier, Paul Burpo, Joseph Sack, Denny Lee, Sanjay Mishra, Lindsey Allen, Mark Souza

Microsoft SQL Server 2008 chứa một số cải tiến và chức năng mới giúp mở rộng chức năng của các phiên bản trước. Quản trị và duy trì cơ sở dữ liệu, duy trì khả năng quản lý, tính khả dụng, bảo mật và hiệu suất đều là trách nhiệm của quản trị viên cơ sở dữ liệu. Bài viết này mô tả mười tính năng mới hữu ích nhất trong SQL Server 2008 (theo thứ tự bảng chữ cái) giúp công việc DBA của bạn trở nên dễ dàng hơn. Ngoài phần mô tả ngắn gọn, đối với mỗi chức năng, các tình huống có thể sử dụng được đưa ra và khuyến nghị quan trọng bằng cách sử dụng.

Giám sát hoạt động

Khi khắc phục sự cố về hiệu suất hoặc giám sát máy chủ trong thời gian thực, quản trị viên thường sẽ chạy một loạt tập lệnh hoặc kiểm tra các nguồn thông tin liên quan để thu thập dữ liệu tổng thể về các quy trình đang chạy và xác định nguyên nhân của sự cố. Trình giám sát hoạt động SQL Server 2008 tập hợp thông tin này để cung cấp thông tin nhanh về các quy trình đang chạy và đang chạy gần đây. Quản trị viên cơ sở dữ liệu có thể vừa xem thông tin cấp cao vừa phân tích bất kỳ quy trình nào chi tiết hơn, đồng thời xem số liệu thống kê chờ đợi, giúp xác định và giải quyết vấn đề dễ dàng hơn.

Để mở Trình giám sát hoạt động, bấm chuột phải vào tên máy chủ đã đăng ký trong Object Explorer, sau đó chọn Giám sát hoạt động hoặc sử dụng biểu tượng thanh công cụ tiêu chuẩn trong SQL Server Management Studio. Trình giám sát hoạt động cung cấp cho quản trị viên một phần tổng quan có giao diện tương tự như Trình quản lý tác vụ Windows, cũng như các thành phần để xem chi tiết các quy trình riêng lẻ, chờ tài nguyên, I/O tệp dữ liệu và các yêu cầu sử dụng nhiều tài nguyên gần đây, như trong Hình. 1.

Cơm. 1:Chế độ xem giám sát hoạt độngSQL Máy chủ2008 vào thứ TưSự quản lý Phòng thu

Ghi chú. Trình giám sát hoạt động sử dụng cài đặt tần suất làm mới dữ liệu có thể thay đổi bằng cách nhấp chuột phải. Khi chọn cập nhật dữ liệu thường xuyên (dưới 10 giây một lần), hiệu suất của tải cao hệ thống làm việc có thể đi xuống.

Khi sử dụng Trình giám sát hoạt động, quản trị viên cũng có thể thực hiện các tác vụ sau:

· Tạm dừng và tiếp tục theo dõi hoạt động chỉ bằng một cú nhấp chuột phải. Điều này cho phép quản trị viên "lưu" thông tin trạng thái vào một thời điểm cụ thể và sẽ không bị cập nhật hoặc ghi đè. Nhưng đừng quên rằng khi cập nhật dữ liệu thủ công, mở rộng hoặc thu gọn một phần nào đó thì dữ liệu cũ sẽ được cập nhật và mất đi.

· Nhấp chuột phải vào một mục hàng để hiển thị toàn bộ văn bản truy vấn hoặc kế hoạch thực hiện đồ họa bằng cách sử dụng mục menu Truy vấn cao gần đây.

· Theo dõi bằng Profiler hoặc chấm dứt các tiến trình trong khung nhìn Processes. Các sự kiện của ứng dụng Profiler bao gồm các sự kiện RPC:Hoàn thành, SQL:Bắt đầu hàng loạtSQL:Đợt đã hoàn thành, Và Kiểm toánĐăng nhậpKiểm toánĐăng xuất.

Giám sát hoạt động cũng cho phép bạn giám sát hoạt động của bất kỳ phiên bản SQL Server 2005 cục bộ hoặc từ xa nào được đăng ký với SQL Server Management Studio.

Kiểm toán

Khả năng giám sát và ghi lại các sự kiện xảy ra, bao gồm ai đang truy cập vào đối tượng cũng như thời gian và nội dung của các thay đổi, giúp quản trị viên đảm bảo tuân thủ các tiêu chuẩn tuân thủ quy định hoặc bảo mật của tổ chức. Ngoài ra, hiểu rõ các sự kiện xảy ra trong môi trường cũng có thể giúp xây dựng kế hoạch giảm thiểu rủi ro và duy trì môi trường an toàn.

Trong SQL Server 2008 (chỉ dành cho phiên bản Enterprise và Developer), SQL Server Audit cung cấp tính năng tự động hóa cho phép quản trị viên và những người dùng khác chuẩn bị, lưu và xem các bản kiểm tra Các thành phần khác nhau máy chủ và cơ sở dữ liệu. Chức năng này cung cấp khả năng kiểm tra chi tiết ở cấp độ máy chủ hoặc cơ sở dữ liệu.

Có các nhóm hành động kiểm tra cấp máy chủ, chẳng hạn như sau:

· FAILED_LOGIN_GROUP theo dõi các lần đăng nhập thất bại.

· BACKUP_RESTORE_GROUP báo cáo khi cơ sở dữ liệu được sao lưu hoặc khôi phục.

· DATABASE_CHANGE_GROUP kiểm tra thời gian cơ sở dữ liệu được tạo, sửa đổi hoặc xóa.

Các nhóm hành động kiểm tra cấp cơ sở dữ liệu bao gồm:

· DATABASE_OBJECT_ACCESS_GROUP được gọi bất cứ khi nào một câu lệnh CREATE, ALTER hoặc DROP được thực thi trên một đối tượng cơ sở dữ liệu.

· DATABASE_OBJECT_PERMISSION_CHANGE_GROUP được gọi khi các câu lệnh GRANT, REVOKE hoặc DENY được sử dụng trên các đối tượng cơ sở dữ liệu.

Có các hành động kiểm tra khác như CHỌN, XÓA và THỰC HIỆN. Để biết thêm thông tin, bao gồm danh sách đầy đủ tất cả các nhóm và hành động kiểm tra, hãy xem Nhóm hành động và hành động kiểm tra SQL Server.

Kết quả kiểm tra có thể được gửi đến một tệp hoặc nhật ký sự kiện (Nhật ký hệ thống hoặc Nhật ký sự kiện bảo mật Windows) để xem xét sau. Dữ liệu kiểm toán được tạo bằng cách sử dụng Sự kiện mở rộng- một tính năng mới khác trong SQL Server 2008.

Kiểm tra SQL Server 2008 cho phép quản trị viên trả lời các câu hỏi mà trước đây rất khó trả lời sau thực tế, chẳng hạn như “Ai đã bỏ chỉ mục này?”, “Quy trình lưu trữ được sửa đổi khi nào?”, “Thay đổi nào được thực hiện có thể ngăn cản người dùng truy cập vào bảng này? và thậm chí "Ai đã thực thi câu lệnh CHỌN hoặc CẬP NHẬT trên bảng [ dbo.Lương bổng] ?».

Để biết thêm thông tin về cách sử dụng tính năng kiểm tra SQL Server và các ví dụ về cách triển khai tính năng này, hãy xem Hướng dẫn tuân thủ SQL Server 2008.

Nén sao lưu

Các DBA đã đề xuất đưa tính năng này vào SQL Server từ lâu. Giờ thì mọi chuyện đã xong và vừa kịp lúc! Gần đây, vì một số lý do, ví dụ, do thời gian lưu trữ dữ liệu tăng lên và nhu cầu lưu trữ nhiều dữ liệu hơn về mặt vật lý, kích thước cơ sở dữ liệu đã bắt đầu tăng theo cấp số nhân. Khi sao lưu một cơ sở dữ liệu lớn, bạn phải phân bổ một lượng dung lượng ổ đĩa đáng kể cho các tệp sao lưu, cũng như phân bổ một lượng thời gian đáng kể cho thao tác.

Khi bạn sử dụng nén bản sao lưu SQL Server 2008, tệp sao lưu sẽ được nén khi nó được ghi, điều này không chỉ yêu cầu ít dung lượng ổ đĩa hơn mà còn giảm các thao tác I/O và mất ít thời gian hơn để hoàn thành sao lưu. Trong các thử nghiệm trong phòng thí nghiệm với dữ liệu người dùng thực, kích thước tệp sao lưu đã giảm 70-85% trong nhiều trường hợp. Ngoài ra, các thử nghiệm cho thấy thời gian thực hiện các thao tác sao chép và khôi phục đã giảm khoảng 45%. Cần lưu ý rằng xử lý bổ sung Khi được nén, nó sẽ tăng tải cho bộ xử lý. Để tách quy trình sao chép tốn nhiều thời gian khỏi các quy trình khác và giảm thiểu tác động của nó đến hoạt động của chúng, bạn có thể sử dụng một chức năng khác được mô tả trong tài liệu này - Nguồn Thống đốc.

Tính năng nén được bật bằng cách thêm mệnh đề WITH COMPRESSION vào lệnh BACKUP (xem Sách trực tuyến về SQL Server để biết thêm thông tin) hoặc bằng cách đặt tùy chọn này trên trang Tùy chọn hộp thoại Sao lưu cơ sở dữ liệu. Để tránh phải thực hiện thay đổi đối với tất cả tập lệnh sao lưu hiện có, cài đặt chung đã được triển khai cho phép nén tất cả các bản sao lưu được tạo trên phiên bản máy chủ theo mặc định. (Tùy chọn này có sẵn trên trang Cài đặt cơ sở dữ liệu hộp thoại Thuộc tính máy chủ; nó cũng có thể được cài đặt bằng cách thực hiện thủ tục được lưu trữ sp_ cấu hình với giá trị tham số hỗ trợnénmặc định, bằng 1). Lệnh sao lưu yêu cầu tùy chọn nén rõ ràng và lệnh khôi phục sẽ tự động nhận dạng bản sao lưu đã nén và giải nén nó khi khôi phục.

Nén sao lưu là một tính năng cực kỳ hữu ích giúp tiết kiệm dung lượng và thời gian trên ổ đĩa. Để biết thêm thông tin về cách định cấu hình nén bản sao lưu, hãy xem ghi chú kỹ thuật Điều chỉnh hiệu suất nén sao lưu trongSQL Máy chủ 2008 . Ghi chú. Sao lưu nén chỉ được hỗ trợ trong các phiên bản SQL Server 2008 Enterprise và Developer, nhưng tất cả các phiên bản SQL Server 2008 đều cho phép bạn khôi phục các bản sao lưu nén.

Máy chủ quản lý tập trung

Thông thường một DBA quản lý nhiều phiên bản SQL Server cùng một lúc. Khả năng tập trung quản lý và điều hành nhiều phiên bản SQL vào một vị trí duy nhất giúp tiết kiệm đáng kể công sức và thời gian. Việc triển khai máy chủ quản lý tập trung, có sẵn trong SQL Server Management Studio thông qua thành phần Máy chủ đã đăng ký, cho phép quản trị viên thực hiện các hoạt động quản trị khác nhau trên nhiều Máy chủ SQL từ một bảng điều khiển quản lý duy nhất.

Máy chủ quản lý tập trung cho phép quản trị viên đăng ký một nhóm máy chủ và thực hiện các hoạt động sau trên chúng dưới dạng một nhóm duy nhất, ví dụ:

· Thực thi truy vấn nhiều máy chủ: Giờ đây, bạn có thể chạy tập lệnh trên nhiều Máy chủ SQL từ một nguồn duy nhất và dữ liệu sẽ được trả về nguồn đó mà không cần phải đăng nhập riêng vào từng máy chủ. Điều này có thể đặc biệt hữu ích khi bạn cần xem hoặc so sánh dữ liệu từ nhiều Máy chủ SQL mà không cần chạy truy vấn phân tán. Ngoài ra, miễn là các phiên bản trước của SQL Server hỗ trợ cú pháp truy vấn, một truy vấn chạy từ Trình soạn thảo truy vấn SQL Server 2008 cũng có thể chạy trên các phiên bản của SQL Server 2005 và SQL Server 2000. Để biết thêm thông tin, hãy xem Nhóm làm việc về khả năng quản lý máy chủ SQL blog tại Chạy truy vấn nhiều máy chủ trong môi trường SQL Server 2008.

· Nhập và xác định chính sách trên nhiều máy chủ: trong phạm vi chức năng Quản lý dựa trên chính sách(một tính năng mới khác trong SQL Server 2008, cũng được mô tả trong bài viết này), SQL Server 2008 cung cấp khả năng nhập các tệp chính sách vào các nhóm máy chủ quản lý trung tâm riêng lẻ và cho phép bạn xác định chính sách trên tất cả các máy chủ được đăng ký trong một nhóm cụ thể.

· Quản lý dịch vụ và truy cập Trình quản lý cấu hình máy chủ SQL: Công cụ Máy chủ từ Quản lý trung tâm giúp bạn tạo một trung tâm điều khiển nơi DBA có thể xem và thậm chí thay đổi (với các quyền thích hợp) trạng thái của dịch vụ.

· Nhập và xuất máy chủ đã đăng ký: Máy chủ đã đăng ký với Máy chủ quản lý trung tâm có thể được xuất và nhập khi chuyển giữa các quản trị viên hoặc các bản cài đặt khác nhau của SQL Server Management Studio. Tính năng này cung cấp giải pháp thay thế cho quản trị viên nhập hoặc xuất các nhóm cục bộ của riêng mình trong SQL Server Management Studio.

Hãy nhớ rằng các quyền được thực thi bằng Xác thực Windows, do đó, các quyền và quyền của người dùng có thể khác nhau giữa các máy chủ khác nhau được đăng ký trong nhóm Máy chủ quản lý trung tâm. Để biết thêm thông tin, hãy xem Quản trị nhiều máy chủ bằng máy chủ quản lý trung tâm và blog của Kimberly Tripp: Máy chủ quản lý SQL trung tâmMáy chủ2008 - bạn có quen thuộc với họ không?

Người thu thập và quản lý dữ liệu Kho dữ liệu

Việc điều chỉnh và chẩn đoán hiệu suất tốn nhiều thời gian và có thể yêu cầu các kỹ năng SQL Server nâng cao cũng như hiểu biết về cấu trúc bên trong của cơ sở dữ liệu. Giám sát hệ thống Windows (Perfmon), SQL Server Profiler và các dạng xem quản lý động đã giải quyết được một số vấn đề này, nhưng chúng thường có tác động đến máy chủ, tốn nhiều công sức để sử dụng hoặc liên quan đến các phương pháp thu thập dữ liệu khác nhau khiến chúng khó kết hợp và diễn giải. .

Để cung cấp thông tin rõ ràng, hữu ích về hiệu suất hệ thống, SQL Server 2008 cung cấp một công cụ lưu trữ và thu thập dữ liệu hiệu suất có khả năng mở rộng hoàn toàn, Data Collector. Nó chứa một số tác nhân thu thập dữ liệu có thể dùng ngay, một kho lưu trữ dữ liệu hiệu suất tập trung được gọi là kho dữ liệu quản lý và một số báo cáo dựng sẵn để trình bày dữ liệu đã thu thập. Trình thu thập dữ liệu là một công cụ có thể mở rộng nhằm thu thập và tổng hợp dữ liệu từ nhiều nguồn, chẳng hạn như Chế độ xem quản lý động, Trình theo dõi hiệu suất Perfmon và truy vấn Transact-SQL, với tần suất thu thập dữ liệu có thể định cấu hình đầy đủ. Trình thu thập dữ liệu có thể được mở rộng để thu thập dữ liệu về bất kỳ thuộc tính ứng dụng nào có thể đo lường được.

Một tính năng hữu ích khác của kho dữ liệu quản lý là khả năng cài đặt nó trên bất kỳ Máy chủ SQL nào và sau đó thu thập dữ liệu từ một hoặc nhiều phiên bản SQL Server. Điều này giảm thiểu tác động đến hiệu suất của hệ thống sản xuất, đồng thời cải thiện khả năng mở rộng trong bối cảnh giám sát và thu thập dữ liệu từ nhiều máy chủ. Trong các thử nghiệm trong phòng thí nghiệm, sự mất mát quan sát được băng thông khi chạy tác nhân và chạy kho dữ liệu quản lý trên máy chủ bận (sử dụng khối lượng công việc OLTP) là khoảng 4%. Mức giảm hiệu suất có thể khác nhau tùy thuộc vào tần suất thu thập dữ liệu (thử nghiệm được đề cập được thực hiện trong khối lượng công việc kéo dài, với dữ liệu được truyền vào bộ lưu trữ cứ sau 15 phút) và nó cũng có thể tăng mạnh trong thời gian thu thập dữ liệu. Trong mọi trường hợp, bạn nên dự kiến ​​sẽ giảm một số tài nguyên sẵn có vì quy trình DCExec.exe sử dụng một lượng bộ nhớ và tài nguyên CPU nhất định, đồng thời việc ghi vào kho lưu trữ dữ liệu quản lý sẽ làm tăng tải trên hệ thống con I/O và yêu cầu phân bổ không gian trong vị trí của dữ liệu và tệp nhật ký Trong sơ đồ (Hình 2) hiển thị một báo cáo thu thập dữ liệu điển hình.

Cơm. 2:Chế độ xem báo cáo của người thu thập dữ liệuSQL Máy chủ 2008

Báo cáo hiển thị hoạt động của SQL Server trong khoảng thời gian thu thập dữ liệu. Nó thu thập và hiển thị các sự kiện như thời gian chờ, mức sử dụng CPU, I/O và bộ nhớ cũng như số liệu thống kê về các truy vấn sử dụng nhiều tài nguyên. Quản trị viên cũng có thể đi sâu vào các mục báo cáo, tập trung vào một truy vấn hoặc thao tác duy nhất để điều tra, xác định và giải quyết các vấn đề về hiệu suất. Các khả năng thu thập, lưu trữ và báo cáo dữ liệu này cho phép chủ động theo dõi tình trạng của SQLServers trong môi trường của bạn. Khi cần, chúng cho phép bạn xem lại dữ liệu lịch sử để hiểu và đánh giá những thay đổi ảnh hưởng đến hiệu suất trong khoảng thời gian được theo dõi. Trình thu thập dữ liệu và Kho dữ liệu quản lý được hỗ trợ trong tất cả các phiên bản SQLServer 2008 ngoại trừ SQLServerExpress.

nén dữ liệu

Việc quản lý cơ sở dữ liệu dễ dàng làm cho các công việc quản trị thông thường trở nên dễ dàng hơn nhiều. Khi các bảng, chỉ mục và tệp tăng kích thước và cơ sở dữ liệu rất lớn (VLDB) trở nên phổ biến hơn, việc quản lý dữ liệu và làm việc với các tệp lớn ngày càng trở nên phức tạp. Ngoài ra, nhu cầu ngày càng tăng về bộ nhớ và băng thông I/O vật lý tăng theo khối lượng dữ liệu được yêu cầu cũng làm tăng độ phức tạp quản trị và chi phí cho tổ chức. Kết quả là, trong nhiều trường hợp, quản trị viên và tổ chức phải mở rộng bộ nhớ hoặc băng thông I/O của máy chủ của họ hoặc chấp nhận giảm hiệu suất.

Tính năng nén dữ liệu được giới thiệu trong SQL Server 2008, giúp giải quyết những vấn đề này. Tính năng này cho phép quản trị viên nén có chọn lọc bất kỳ bảng, phân vùng bảng hoặc chỉ mục nào, do đó giảm dung lượng ổ đĩa, dung lượng bộ nhớ và các hoạt động I/O. Nén và giải nén dữ liệu sẽ tải bộ xử lý; tuy nhiên, trong nhiều trường hợp, tải CPU bổ sung được bù đắp nhiều hơn mức tăng I/O. Trong các cấu hình mà I/O là nút cổ chai, việc nén dữ liệu cũng có thể mang lại hiệu suất tăng.

Trong một số thử nghiệm trong phòng thí nghiệm, việc bật nén dữ liệu giúp tiết kiệm 50-80% dung lượng ổ đĩa. Mức tiết kiệm dung lượng rất khác nhau: nếu dữ liệu chứa ít giá trị trùng lặp hoặc các giá trị được sử dụng tất cả byte được phân bổ cho loại dữ liệu đã chỉ định thì mức tiết kiệm là tối thiểu. Tuy nhiên, hiệu suất của nhiều khối lượng công việc không tăng. Tuy nhiên, khi làm việc với dữ liệu chứa nhiều dữ liệu số và nhiều giá trị lặp lại, người ta thấy mức tiết kiệm dung lượng ổ đĩa đáng kể và mức tăng hiệu suất dao động từ vài phần trăm đến 40-60% đối với một số khối lượng công việc truy vấn mẫu.

SQLServer 2008 hỗ trợ hai kiểu nén: nén hàng, nén các cột trong bảng riêng lẻ và nén trang, nén các trang dữ liệu bằng cách sử dụng nén hàng, tiền tố và từ điển. Mức độ nén đạt được phụ thuộc nhiều vào kiểu dữ liệu và nội dung của cơ sở dữ liệu. Nói chung, nén hàng giúp giảm chi phí hoạt động của ứng dụng nhưng cũng làm giảm tỷ lệ nén, nghĩa là tiết kiệm được ít dung lượng hơn. Đồng thời, việc nén trang dẫn đến sử dụng CPU và chi phí ứng dụng nhiều hơn nhưng cũng tiết kiệm được nhiều dung lượng hơn đáng kể. Nén trang là siêu tập hợp của nén hàng, nghĩa là, nếu một đối tượng hoặc một phần của đối tượng được nén bằng cách nén trang thì nén hàng cũng được áp dụng cho nó. Ngoài ra, SQLServer 2008 hỗ trợ định dạng lưu trữ số thập phân từ SQL Server 2005 SP2. Xin lưu ý rằng vì định dạng này là một tập hợp con của nén chuỗi nên định dạng này không được dùng nữa và sẽ bị xóa khỏi các phiên bản tương lai của sản phẩm.

Cả nén hàng và nén trang đều có thể được bật trên bảng hoặc lập chỉ mục trực tuyến mà không ảnh hưởng đến tính khả dụng của dữ liệu đối với ứng dụng. Đồng thời, không thể nén hoặc giải nén một phần riêng biệt của bảng được phân vùng ở chế độ trực tuyến mà không tắt nó. Các thử nghiệm đã chỉ ra rằng cách tiếp cận tốt nhất là cách tiếp cận kết hợp, trong đó chỉ một số ít được nén. bàn lớn nhất: Điều này đạt được tỷ lệ tuyệt vời giữa tiết kiệm dung lượng ổ đĩa (đáng kể) và giảm hiệu suất (tối thiểu). Bởi vì một hoạt động thu gọn, như các hoạt động tạo hoặc xây dựng lại chỉ mục, cũng có các yêu cầu về dung lượng ổ đĩa sẵn có nên việc nén phải được thực hiện với các yêu cầu này. Sẽ cần một không gian trống tối thiểu trong quá trình nén nếu quá trình nén bắt đầu với các đối tượng nhỏ nhất.

Bạn có thể nén dữ liệu bằng câu lệnh Transact-SQL hoặc Trình hướng dẫn nén dữ liệu. Để xác định kích thước của một đối tượng có thể thay đổi như thế nào khi nó co lại, bạn có thể sử dụng quy trình lưu sẵn của hệ thống sp_ước lượng_dữ liệu_nén_tiết kiệm hoặc thuật sĩ nén dữ liệu. Nén cơ sở dữ liệu chỉ được hỗ trợ trong phiên bản SQLServer 2008 Enterprise và Developer. Nó được triển khai độc quyền trong cơ sở dữ liệu và không yêu cầu bất kỳ thay đổi nào đối với ứng dụng.

Để biết thêm thông tin về cách sử dụng tính năng nén, hãy xem Tạo bảng và chỉ mục nén.

Quản lý dựa trên chính sách

Trong nhiều tình huống kinh doanh, cần phải duy trì các cấu hình cụ thể hoặc thực thi các chính sách, trên một SQLServer cụ thể hoặc nhiều lần trên một nhóm SQLServer. Quản trị viên hoặc tổ chức có thể yêu cầu một sơ đồ đặt tên cụ thể được áp dụng cho tất cả các bảng người dùng hoặc các thủ tục được lưu trữ đã được tạo hoặc có thể yêu cầu một số thay đổi cấu hình nhất định được áp dụng cho nhiều máy chủ.

Quản lý dựa trên chính sách (PBM) cung cấp cho quản trị viên phạm vi kiểm soát rộng rãi đối với môi trường. Chính sách có thể được tạo và kiểm tra sự tuân thủ. Nếu mục tiêu quét (chẳng hạn như công cụ cơ sở dữ liệu, cơ sở dữ liệu, bảng hoặc chỉ mục SQLServer) không đáp ứng các yêu cầu thì quản trị viên có thể tự động đặt cấu hình lại để đáp ứng các yêu cầu đó. Ngoài ra còn có một số chế độ chính sách (nhiều chế độ được tự động hóa) giúp dễ dàng xác minh việc tuân thủ chính sách, ghi lại các vi phạm chính sách và gửi thông báo, thậm chí khôi phục các thay đổi để đảm bảo tuân thủ chính sách. Để biết thêm thông tin về các chế độ định nghĩa và cách chúng liên quan đến các khía cạnh (khái niệm về quản lý dựa trên chính sách (PBM), cũng được thảo luận trong blog này), hãy xem Blog quản lý dựa trên chính sách của SQL Server.

Các chính sách có thể được xuất và nhập dưới dạng tệp XML để xác định và áp dụng trên nhiều phiên bản máy chủ. Ngoài ra, trong SQLServerQuản lý Studio và dạng xem Máy chủ đã đăng ký, bạn có thể xác định chính sách trên nhiều máy chủ được đăng ký trong nhóm máy chủ cục bộ hoặc nhóm máy chủ quản lý trung tâm.

Các phiên bản trước của SQL Server có thể không cung cấp tất cả chức năng quản lý dựa trên chính sách. Tuy nhiên, chức năng làm báo cáo các chính sách có thể được sử dụng trên máy chủ SQL Server 2005 và SQL Server 2000. Để biết thêm thông tin về cách sử dụng quản lý dựa trên chính sách, hãy xem Quản trị máy chủ bằng cách sử dụng Quản lý dựa trên chính sách trong Sách SQLServer trực tuyến. Để biết thêm thông tin về chính công nghệ chính sách cùng với các ví dụ, hãy xem Hướng dẫn tuân thủ SQL Server 2008.

Hiệu suất và tính đồng thời được dự đoán

Nhiều quản trị viên phải đối mặt với những thách thức đáng kể khi hỗ trợ SQLServers với khối lượng công việc thay đổi liên tục và đảm bảo mức hiệu suất có thể dự đoán được (hoặc giảm thiểu các biến thể trong kế hoạch truy vấn và hiệu suất). Những thay đổi không mong muốn về hiệu suất truy vấn, những thay đổi trong kế hoạch truy vấn và/hoặc các vấn đề về hiệu suất chung có thể do một số lý do gây ra, bao gồm tải tăng từ các ứng dụng chạy trên SQLServer hoặc bản nâng cấp lên phiên bản của cơ sở dữ liệu. Khả năng dự đoán các truy vấn và hoạt động chạy trên SQLServer giúp đạt được và duy trì các mục tiêu về tính khả dụng, hiệu suất và/hoặc tính liên tục trong kinh doanh dễ dàng hơn nhiều (đáp ứng các thỏa thuận cấp độ dịch vụ và thỏa thuận cấp độ hỗ trợ vận hành).

Trong SQLServer 2008, một số tính năng đã được thay đổi để cải thiện hiệu suất có thể dự đoán được. Do đó, một số thay đổi nhất định đã được thực hiện đối với cấu trúc kế hoạch của SQLServer 2005 ( thống nhất kế hoạch) và thêm khả năng quản lý khóa leo thang ở cấp độ bảng. Cả hai cải tiến đều thúc đẩy các tương tác hợp lý và dễ dự đoán hơn giữa ứng dụng và cơ sở dữ liệu.

Đầu tiên, cấu trúc quy hoạch (Plan Guide):

SQL Server 2005 đã giới thiệu những cải tiến về độ ổn định của truy vấn và khả năng dự đoán thông qua một tính năng mới vào thời điểm đó được gọi là “hướng dẫn kế hoạch”, cung cấp hướng dẫn chạy các truy vấn không thể thay đổi trực tiếp trong ứng dụng. Để biết thêm thông tin, hãy xem sách trắng Thực thi kế hoạch truy vấn. Mặc dù gợi ý truy vấn USE PLAN là một tính năng rất mạnh mẽ nhưng nó chỉ hỗ trợ các thao tác DML SELECT và thường khó sử dụng do tính nhạy cảm của cấu trúc kế hoạch đối với việc định dạng.

SQL Server 2008 mở rộng công cụ hướng dẫn kế hoạch theo hai cách: thứ nhất, nó mở rộng hỗ trợ cho gợi ý truy vấn USE PLAN, hiện tương thích với tất cả các câu lệnh DML (INSERT, UPDATE, DELETE, MERGE); thứ hai, giới thiệu tính năng mới thống nhất kế hoạch, cho phép bạn trực tiếp tạo bản phác thảo kế hoạch (ghim) của bất kỳ gói truy vấn nào tồn tại trong bộ nhớ đệm gói SQL Server, như minh họa trong ví dụ sau.

sp_create_plan_guide_from_handle
@name = N'MyQueryPlan',
@plan_handle = @plan_handle,
@statement_start_offset = @offset;

Hướng dẫn kế hoạch được tạo theo bất kỳ cách nào đều có vùng cơ sở dữ liệu; nó được lưu trữ trong một bảng sys.plan_guides. Cấu trúc kế hoạch chỉ ảnh hưởng đến quá trình lựa chọn kế hoạch truy vấn của trình tối ưu hóa, nhưng không loại bỏ nhu cầu biên dịch truy vấn. Ngoài ra còn thêm chức năng sys.fn_validate_plan_guide, để xem lại các cấu trúc gói SQL Server 2005 hiện có và đảm bảo chúng tương thích với SQL Server 2008. Ghim gói có sẵn trong các phiên bản SQL Server 2008 Standard, Enterprise và Developer.

Thứ hai, leo thang chặn:

Việc chặn leo thang thường gây ra sự cố chặn và đôi khi thậm chí là bế tắc. Quản trị viên đã phải khắc phục những vấn đề này. Trong các phiên bản trước của SQLServer, có thể kiểm soát việc leo thang khóa (cờ theo dõi 1211 và 1224), nhưng điều này chỉ có thể thực hiện được ở mức độ chi tiết ở cấp phiên bản. Đối với một số ứng dụng, điều này đã khắc phục được sự cố nhưng đối với những ứng dụng khác, nó thậm chí còn gây ra nhiều vấn đề hơn. Một lỗ hổng khác trong thuật toán leo thang khóa của SQL Server 2005 là các khóa trên các bảng được phân vùng đã được leo thang trực tiếp lên cấp độ bảng chứ không phải đến cấp độ phân vùng.

SQLServer 2008 cung cấp giải pháp cho cả hai vấn đề. Nó giới thiệu một cài đặt mới cho phép bạn kiểm soát việc leo thang khóa ở cấp độ bảng. Sử dụng lệnh ALTERTABLE, bạn có thể chọn tắt leo thang hoặc leo thang lên cấp phân vùng cho các bảng được phân vùng. Cả hai tính năng này đều cải thiện khả năng mở rộng và hiệu suất mà không có tác dụng phụ không mong muốn ảnh hưởng đến các đối tượng khác trong phiên bản. Khóa leo thang được đặt ở cấp đối tượng cơ sở dữ liệu và không yêu cầu bất kỳ thay đổi ứng dụng nào. Nó được hỗ trợ trong tất cả các phiên bản SQLServer 2008.

Thống đốc tài nguyên

Việc duy trì mức độ dịch vụ bền vững bằng cách ngăn chặn các yêu cầu không thực hiện được và đảm bảo nguồn lực được phân bổ cho khối lượng công việc quan trọng trước đây là một thách thức. Không có cách nào để đảm bảo việc phân bổ một lượng tài nguyên nhất định cho một nhóm yêu cầu và không có quyền kiểm soát các ưu tiên truy cập. Tất cả các yêu cầu đều có quyền bình đẳng trong việc truy cập tất cả các tài nguyên có sẵn.

Mới hàm SQL Resource Governor của Server 2008 giúp giải quyết vấn đề này bằng cách cung cấp khả năng phân biệt khối lượng công việc và phân bổ tài nguyên dựa trên nhu cầu của người dùng. Các giới hạn của Resource Governor có thể dễ dàng được cấu hình lại theo thời gian thực với tác động tối thiểu đến khối lượng công việc đang chạy. Việc phân phối khối lượng công việc trên nhóm tài nguyên được định cấu hình ở cấp độ kết nối và quy trình này hoàn toàn minh bạch đối với các ứng dụng.

Sơ đồ dưới đây cho thấy quá trình phân bổ nguồn lực. Trong trường hợp này, ba nhóm khối lượng công việc được định cấu hình (khối lượng công việc Quản trị, OLTP và Báo cáo) và sau đó nhóm khối lượng công việc OLTP được ưu tiên cao nhất. Đồng thời, hai nhóm tài nguyên được định cấu hình (Nhóm nhóm và Nhóm ứng dụng) với các giới hạn được chỉ định về kích thước bộ nhớ và thời gian xử lý (CPU). Bước cuối cùng là chỉ định khối lượng công việc Quản trị viên cho Nhóm quản trị và chỉ định khối lượng công việc OLTP và Báo cáo cho Nhóm ứng dụng.

Sau đây là các tính năng cần cân nhắc khi sử dụng bộ điều chỉnh tài nguyên.

- Resource Governor sử dụng thông tin xác thực đăng nhập, tên máy chủ hoặc tên ứng dụng làm "mã định danh nhóm tài nguyên", do đó, việc sử dụng một thông tin đăng nhập duy nhất cho mỗi ứng dụng cho một số lượng khách hàng nhất định trên mỗi máy chủ có thể khiến việc tổng hợp trở nên khó khăn hơn.

- Nhóm đối tượng ở cấp cơ sở dữ liệu, nơi quyền truy cập vào tài nguyên được kiểm soát dựa trên các đối tượng cơ sở dữ liệu đang được truy cập, không được hỗ trợ.

— Bạn chỉ có thể định cấu hình việc sử dụng tài nguyên bộ xử lý và bộ nhớ. Quản lý tài nguyên I/O không được triển khai.

- Không thể chuyển đổi động khối lượng công việc giữa các nhóm tài nguyên sau khi kết nối.

- Resource Governor chỉ được hỗ trợ trong các phiên bản SQL Server 2008 Enterprise và Developer và chỉ có thể được sử dụng cho SQL Server Database Engine; việc quản lý Dịch vụ phân tích máy chủ SQL (SSAS), Dịch vụ tích hợp máy chủ SQL (SSIS) và Dịch vụ báo cáo máy chủ SQL (SSRS) không được hỗ trợ.

Mã hóa dữ liệu minh bạch (TDE)

Nhiều tổ chức rất quan tâm đến vấn đề bảo mật. Có nhiều lớp khác nhau bảo vệ một trong những tài sản quý giá nhất của tổ chức—dữ liệu của nó. Thông thường, các tổ chức bảo vệ thành công dữ liệu đang được sử dụng thông qua các biện pháp bảo mật vật lý, tường lửa và các chính sách hạn chế truy cập nghiêm ngặt. Tuy nhiên, trong trường hợp mất Phương tiện vật lý Với dữ liệu, chẳng hạn như đĩa hoặc băng có bản sao lưu, tất cả các biện pháp bảo mật được liệt kê đều vô ích vì kẻ tấn công có thể chỉ cần khôi phục cơ sở dữ liệu và có toàn quyền truy cập vào dữ liệu. SQL

Server 2008 đưa ra giải pháp cho vấn đề này thông qua Mã hóa dữ liệu trong suốt (TDE). Với mã hóa TDE, dữ liệu trong hoạt động I/O được mã hóa và giải mã theo thời gian thực; Các tệp dữ liệu và nhật ký được mã hóa bằng Khóa mã hóa cơ sở dữ liệu (DEK). DEK là khóa đối xứng được bảo vệ bởi chứng chỉ được lưu trữ trong cơ sở dữ liệu chính của máy chủ hoặc khóa bất đối xứng được bảo vệ bởi Mô-đun quản lý khóa mở rộng (EKM).

Tính năng TDE bảo vệ dữ liệu ở trạng thái nghỉ để dữ liệu được tập tin MDF, NDF và LDF không thể được xem bằng trình soạn thảo hex hoặc bất kỳ phương pháp nào khác. Tuy nhiên, dữ liệu hiện hoạt, chẳng hạn như kết quả của câu lệnh CHỌN trong SQL Server Management Studio, sẽ vẫn hiển thị đối với những người dùng có quyền xem bảng. Ngoài ra, do TDE được triển khai ở cấp cơ sở dữ liệu nên cơ sở dữ liệu có thể sử dụng các chỉ mục và khóa để tối ưu hóa các truy vấn. Không nên nhầm lẫn TDE với mã hóa cấp độ cột - nó là chức năng riêng biệt, cho phép bạn mã hóa ngay cả dữ liệu đang hoạt động.

Mã hóa cơ sở dữ liệu là quy trình một lần có thể được bắt đầu bằng lệnh Transact - SQL hoặc từ SQL Server Management Studio, sau đó chạy trên một luồng nền. Trạng thái mã hóa hoặc giải mã có thể được theo dõi bằng chế độ xem quản lý động sys.dm_database_encryption_keys. Trong các thử nghiệm trong phòng thí nghiệm, việc mã hóa cơ sở dữ liệu 100 GB bằng thuật toán mã hóa AES _128 mất khoảng một giờ. Mặc dù chi phí sử dụng TDE được xác định chủ yếu bởi khối lượng công việc của ứng dụng, nhưng trong một số thử nghiệm được tiến hành, chi phí này thấp hơn 5%. Một điều cần lưu ý là điều đó có thể ảnh hưởng đến hiệu suất là nếu TDE được sử dụng trên bất kỳ cơ sở dữ liệu nào trong phiên bản thì cơ sở dữ liệu hệ thống cũng được mã hóa tempDB. Cuối cùng, khi sử dụng các chức năng khác nhau cùng một lúc, phải xem xét những điều sau:

  • Khi bạn sử dụng tính năng nén sao lưu để nén cơ sở dữ liệu được mã hóa, kích thước của bản sao lưu đã nén sẽ lớn hơn so với khi không sử dụng mã hóa vì dữ liệu được mã hóa được nén kém.
  • Mã hóa cơ sở dữ liệu không ảnh hưởng đến việc nén dữ liệu (hàng hoặc trang).

TDE cho phép tổ chức đảm bảo tuân thủ các tiêu chuẩn quy định và mức độ bảo vệ dữ liệu tổng thể. TDE chỉ được hỗ trợ trong các phiên bản SQL Server 2008 Enterprise và Developer; việc kích hoạt nó không yêu cầu thay đổi các ứng dụng hiện có. Để biết thêm thông tin, hãy xem Mã hóa dữ liệu trong SQL Server 2008 Enterprise Edition hoặc thảo luận trong Mã hóa dữ liệu minh bạch.

Tóm lại, SQL Server 2008 cung cấp các tính năng, cải tiến và khả năng giúp công việc quản trị viên cơ sở dữ liệu của bạn trở nên dễ dàng hơn. 10 tính năng phổ biến nhất được mô tả ở đây, nhưng SQL Server 2008 có nhiều tính năng khác giúp quản trị viên và những người dùng khác dễ dàng hơn. Để biết danh sách "10 tính năng hàng đầu" dành cho các ngành dọc SQL Server khác, hãy xem các bài viết "Top 10... trong SQL Server 2008" khác trên trang web này. Danh sách đầy đủ các chức năng và chúng miêu tả cụ thể Xem Sách trực tuyến về SQL Server và trang web tổng quan về SQL Server 2008.

SQL Server Management Studio có hai mục đích sử dụng chính: quản trị máy chủ cơ sở dữ liệu và quản lý các đối tượng cơ sở dữ liệu. Các chức năng này sẽ được thảo luận dưới đây.

Quản trị máy chủ cơ sở dữ liệu

Các tác vụ quản trị mà bạn có thể thực hiện bằng SQL Server Management Studio bao gồm nhưng không giới hạn ở:

    đăng ký máy chủ;

    kết nối với máy chủ;

    tạo nhóm máy chủ mới;

    quản lý nhiều máy chủ;

    khởi động và dừng máy chủ.

Những nhiệm vụ quản trị này được mô tả trong các tiểu mục sau.

Đăng ký máy chủ

SQL Server Management Studio tách hoạt động đăng ký máy chủ khỏi hoạt động khám phá cơ sở dữ liệu và các đối tượng của chúng. (Cả hai loại hành động đều có thể được thực hiện thông qua Object Explorer.) Trước khi bạn có thể sử dụng cơ sở dữ liệu và đối tượng của bất kỳ máy chủ nào, dù là cục bộ hay từ xa, bạn phải đăng ký nó.

Bạn có thể đăng ký máy chủ khi khởi động SQL Server Management Studio lần đầu tiên trở lên. Để đăng ký máy chủ cơ sở dữ liệu, bấm chuột phải vào máy chủ mong muốn trong Object Explorer và chọn Đăng ký từ menu ngữ cảnh. Nếu bảng Object Explorer bị ẩn, hãy mở nó bằng cách thực hiện lệnh menu View --> Object Explorer. Hộp thoại Đăng ký máy chủ mới sẽ mở ra như trong hình bên dưới:

Chọn tên máy chủ bạn muốn đăng ký và loại xác thực cho máy chủ đó (nghĩa là Xác thực Windows hoặc Xác thực máy chủ SQL), sau đó bấm Lưu.

Kết nối với máy chủ

SQL Server Management Studio cũng tách biệt nhiệm vụ đăng ký máy chủ và kết nối với máy chủ. Điều này có nghĩa là khi một máy chủ được đăng ký, máy chủ đó không tự động kết nối. Để kết nối với máy chủ đã đăng ký, bạn cần nhấp chuột phải vào máy chủ mong muốn trong cửa sổ Trình kiểm tra đối tượng và chọn Kết nối từ menu ngữ cảnh xuất hiện.

Tạo một nhóm máy chủ mới

Để tạo một nhóm máy chủ mới trong bảng Máy chủ đã đăng ký, nhấp chuột phải vào nút Nhóm máy chủ cục bộ máy chủ cục bộ) trong cửa sổ Máy chủ đã đăng ký và trong menu ngữ cảnh, chọn Nhóm máy chủ mới. Trong hộp thoại Thuộc tính nhóm máy chủ mới mở ra, hãy nhập tên duy nhất cho nhóm và tùy chọn mô tả của nhóm.

Quản lý nhiều máy chủ

Sử dụng Object Explorer, SQL Server Management Studio cho phép bạn quản trị nhiều máy chủ cơ sở dữ liệu (được gọi là phiên bản) trên một máy tính. Mỗi phiên bản của thành phần Máy chủ cơ sở dữ liệu có một tập hợp các đối tượng cơ sở dữ liệu (cơ sở dữ liệu hệ thống và người dùng) riêng không được chia sẻ giữa các phiên bản.

Để quản lý máy chủ và cấu hình của nó, hãy nhấp chuột phải vào tên máy chủ trong Object Explorer và chọn Thuộc tính từ menu ngữ cảnh xuất hiện. Hộp thoại Thuộc tính Máy chủ sẽ mở ra, chứa một số trang như Chung, Bảo mật, Quyền, v.v.

Trang Chung hiển thị các thuộc tính chung của máy chủ:

Trang Bảo mật chứa thông tin về chế độ xác thực của máy chủ và phương thức kiểm tra đăng nhập. Trang Quyền hiển thị tất cả các tài khoản và vai trò có quyền truy cập vào máy chủ. Cuối trang hiển thị tất cả các quyền có thể được cấp cho các tài khoản và vai trò này.

Bạn có thể thay đổi tên của máy chủ bằng cách đặt cho nó một tên mới. Để thực hiện việc này, nhấp chuột phải vào máy chủ được yêu cầu trong cửa sổ Object Explorer và chọn Đăng ký từ menu ngữ cảnh. Bây giờ bạn có thể đặt tên mới cho máy chủ và thay đổi mô tả của nó. Không nên đổi tên máy chủ trừ khi cần thiết vì điều này có thể ảnh hưởng đến các máy chủ khác liên kết với chúng.

Khởi động và dừng máy chủ

Theo mặc định, máy chủ Database Engine tự động khởi động khi hệ điều hành Windows khởi động. Để khởi động máy chủ bằng SQL Server Management Studio, hãy nhấp chuột phải vào máy chủ mong muốn trong Trình kiểm tra đối tượng và chọn Bắt đầu từ menu ngữ cảnh. Menu này cũng chứa các tùy chọn Dừng và Tạm dừng để thực hiện các hành động thích hợp trên máy chủ.

Quản lý cơ sở dữ liệu với Object Explorer

Các tác vụ quản trị mà bạn có thể thực hiện bằng SQL Server Management Studio bao gồm:

    tạo cơ sở dữ liệu không sử dụng ngôn ngữ Transact-SQL;

    sửa đổi cơ sở dữ liệu mà không sử dụng ngôn ngữ Transact-SQL;

    quản lý bảng không sử dụng ngôn ngữ Transact-SQL;

    sáng tạo và thực hiện câu lệnh SQL(sẽ mô tả ở bài viết tiếp theo).

Tạo cơ sở dữ liệu mà không cần sử dụng T-SQL

Cơ sở dữ liệu mới có thể được tạo bằng Trình duyệt đối tượng Trình khám phá đối tượng. Đúng như tên gọi của nó, Object Explorer cũng có thể được sử dụng để khám phá các đối tượng máy chủ. Từ bảng điều khiển của công cụ này, bạn có thể xem tất cả các đối tượng máy chủ và quản lý máy chủ cũng như cơ sở dữ liệu. Cây phân cấp đối tượng máy chủ chứa thư mục Cơ sở dữ liệu, trong số các thư mục khác. Ngược lại, thư mục này chứa một số thư mục con, bao gồm một thư mục dành cho cơ sở dữ liệu hệ thống và một thư mục cho mỗi cơ sở dữ liệu do người dùng tạo.

Để tạo cơ sở dữ liệu bằng Object Explorer, bấm chuột phải vào nút Cơ sở dữ liệu và chọn mục menu Cơ sở dữ liệu mới. Trong hộp thoại Cơ sở dữ liệu mới mở ra, trong trường Tên cơ sở dữ liệu, nhập tên của cơ sở dữ liệu mới rồi bấm OK.

Mỗi cơ sở dữ liệu có một số thuộc tính, chẳng hạn như loại tệp, kích thước ban đầu, v.v. Danh sách các trang thuộc tính cơ sở dữ liệu nằm ở khung bên trái của hộp thoại Cơ sở dữ liệu mới. Trang Chung của hộp thoại Thuộc tính cơ sở dữ liệu chứa các thông tin như tên, chủ sở hữu và đối chiếu cơ sở dữ liệu, cùng với những thông tin khác:

Các thuộc tính của tệp dữ liệu của cơ sở dữ liệu cụ thể được liệt kê trên trang Tệp và chứa thông tin như tên và kích thước ban đầu của tệp, vị trí của cơ sở dữ liệu và loại tệp (ví dụ: chính). Cơ sở dữ liệu có thể được lưu trữ trong một số tập tin. SQL Server sử dụng quản lý không gian đĩa động. Điều này có nghĩa là kích thước cơ sở dữ liệu có thể được cấu hình để tự động tăng và thu nhỏ khi cần.

để thay đổi Thuộc tính tự động phát triển(Tự động phát triển) Trên trang Tệp, trong cột Tự động phát triển, hãy nhấp vào biểu tượng dấu chấm lửng (...) và thực hiện các thay đổi thích hợp trong hộp thoại Thay đổi Tự động phát triển. Để cho phép tự động tăng kích thước cơ sở dữ liệu, bạn cần đặt Bật hộp kiểm Tự động phát triển. Bất cứ khi nào kích thước tệp hiện có không đủ để lưu trữ dữ liệu đã thêm, máy chủ sẽ tự động yêu cầu hệ thống phân bổ dung lượng đĩa bổ sung cho tệp. Lượng dung lượng ổ đĩa bổ sung (phần trăm hoặc megabyte) được chỉ định trong Trường tăng trưởng tệp trong cùng một hộp thoại. Và trong phần Kích thước tệp tối đa Bạn có thể giới hạn kích thước tệp tối đa bằng cách chọn nút chuyển Giới hạn ở (MB) hoặc bạn có thể loại bỏ các giới hạn kích thước bằng cách chọn nút chuyển Không giới hạn (đây là cài đặt mặc định). Nếu kích thước tệp bị giới hạn, bạn phải chỉ định kích thước tối đa được phép của nó.

Trang Filegroups của hộp thoại Thuộc tính cơ sở dữ liệu hiển thị tên của các nhóm tệp chứa tệp cơ sở dữ liệu, phân vùng nhóm tệp (mặc định hoặc rõ ràng) và các thao tác được phép thực hiện trên nhóm tệp (đọc-ghi hoặc chỉ đọc) . đọc).

Trên trang Tùy chọn của hộp thoại Thuộc tính Cơ sở dữ liệu, bạn có thể xem và sửa đổi tất cả các tùy chọn cấp cơ sở dữ liệu. Các nhóm tham số là Tự động, Ngăn chặn, Con trỏ, Linh tinh, Khôi phục, Nhà môi giới dịch vụ và Trạng thái. Ví dụ, nhóm State chứa bốn tham số sau:

Cơ sở dữ liệu chỉ đọc

Cho phép bạn đặt quyền truy cập vào cơ sở dữ liệu là quyền truy cập đầy đủ hoặc quyền truy cập chỉ đọc. Trong trường hợp sau, người dùng không thể sửa đổi dữ liệu. Giá trị mặc định cho tham số này là Sai.

Hạn chế truy cập

Đặt số lượng người dùng có thể sử dụng đồng thời cơ sở dữ liệu. Giá trị mặc định là MULTI_USER.

Trạng thái cơ sở dữ liệu

Mô tả trạng thái của cơ sở dữ liệu. Giá trị mặc định cho tham số này là Bình thường.

Đã bật mã hóa

Chỉ định chế độ mã hóa cơ sở dữ liệu. Giá trị mặc định của tham số này là Sai.

Trang Thuộc tính mở rộng hiển thị các thuộc tính bổ sung cho cơ sở dữ liệu hiện tại. Trên trang này, bạn có thể xóa các thuộc tính hiện có và thêm các thuộc tính mới.

Trang Quyền hiển thị tất cả người dùng, vai trò và các quyền liên quan.

Các trang khác Theo dõi thay đổi, phản chiếu ( Phản chiếu gương) và Nhật ký giao dịch Vận chuyển mô tả các khả năng liên quan đến tính khả dụng của dữ liệu.

Sửa đổi cơ sở dữ liệu

Sử dụng Object Explorer, bạn có thể sửa đổi cơ sở dữ liệu hiện có bằng cách thay đổi các tệp cơ sở dữ liệu và nhóm tệp. Để thêm tệp mới vào cơ sở dữ liệu, nhấp chuột phải vào cơ sở dữ liệu mong muốn và chọn Thuộc tính từ menu ngữ cảnh. Trong hộp thoại Thuộc tính cơ sở dữ liệu mở ra, chọn trang Tệp và nhấp vào nút Thêm nằm ở cuối phần Tệp cơ sở dữ liệu. Một dòng mới sẽ được thêm vào phần này, trong trường Tên logic mà bạn nên nhập tên của tệp cơ sở dữ liệu sẽ được thêm vào và trong các trường khác, đặt các thuộc tính cần thiết của tệp này. Bạn cũng có thể thêm nhóm tệp phụ cho cơ sở dữ liệu bằng cách chọn trang Nhóm tệp và nhấp vào nút Thêm.

Các thuộc tính cơ sở dữ liệu được đề cập trước đó chỉ có thể được sửa đổi bởi Quản trị hệ thống hoặc chủ sở hữu cơ sở dữ liệu.

Để xóa cơ sở dữ liệu bằng Object Explorer, hãy nhấp chuột phải vào tên cơ sở dữ liệu mong muốn và chọn Xóa từ menu ngữ cảnh mở ra.

Quản lý bảng

Sau khi tạo cơ sở dữ liệu, nhiệm vụ tiếp theo là tạo tất cả các bảng cần thiết. Tương tự như việc tạo cơ sở dữ liệu, các bảng trong đó cũng có thể được tạo bằng Transact-SQL hoặc Object Explorer. Giống như việc tạo cơ sở dữ liệu, ở đây chúng ta sẽ xem xét việc tạo bảng chỉ bằng Object Explorer.

Để thực hành tạo bảng, hãy tạo bảng Bộ phận trong cơ sở dữ liệu SampleDb. Để tạo bảng cơ sở dữ liệu bằng Object Explorer, hãy mở rộng nút Cơ sở dữ liệu, sau đó đến nút cơ sở dữ liệu mong muốn, bấm chuột phải vào thư mục Bảng và chọn Bảng mới từ menu ngữ cảnh mở ra. Một cửa sổ sẽ mở ở phía trên bên phải cửa sổ Management Studio để tạo cột cho bảng mới. Nhập tên cột trong bảng, kiểu dữ liệu của chúng và độ phân giải giá trị null cho mỗi cột, như được hiển thị ở khung trên cùng bên phải trong hình ảnh bên dưới:

Để chọn một trong các kiểu dữ liệu được hệ thống hỗ trợ cho một cột, trong cột Kiểu dữ liệu, hãy chọn rồi bấm vào hình tam giác hướng xuống dưới ở cạnh phải của hộp (hình tam giác này xuất hiện sau khi bạn chọn một ô). Kết quả là, trong danh sách thả xuống mở ra, hãy chọn loại dữ liệu cần thiết cho cột.

Bạn có thể thay đổi kiểu dữ liệu của cột hiện có trên tab Thuộc tính Cột (bảng dưới cùng trong hình). Một số loại dữ liệu, chẳng hạn như char, yêu cầu độ dài phải được chỉ định trong dòng Độ dài, trong khi các loại khác, chẳng hạn như số thập phân, yêu cầu tỷ lệ và độ chính xác phải được chỉ định trong các dòng Tỷ lệ và Độ chính xác thích hợp trên tab Thuộc tính Cột. Một số khác, chẳng hạn như int, không yêu cầu phải chỉ định bất kỳ thuộc tính nào trong số này. (Các giá trị không hợp lệ cho một loại dữ liệu cụ thể được đánh dấu bằng phông chữ bóng mờ trong danh sách tất cả các thuộc tính cột có thể có.)

Để cho phép giá trị null cho một cột nhất định, bạn phải đặt cờ trường thích hợp cho cột đó. Ngoài ra, nếu một cột yêu cầu giá trị mặc định thì cột đó phải được nhập vào dòng Giá trị mặc định hoặc Ràng buộc của bảng Thuộc tính Cột. Một giá trị mặc định được tự động gán cho một ô cột trừ khi một giá trị được nhập rõ ràng cho nó.

Cột Số là khóa chính của bảng Phòng ban. Để đặt một cột làm khóa chính của bảng, hãy nhấp chuột phải vào cột đó và chọn Đặt khóa chính từ menu ngữ cảnh.

Khi bạn đã hoàn thành tất cả công việc tạo bảng, hãy nhấp vào dấu thập trên tab Table Designer. Một hộp thoại sẽ mở ra hỏi bạn có lưu các thay đổi của mình hay không. Bấm Có, thao tác này sẽ mở hộp thoại Chọn Tên, yêu cầu bạn nhập tên cho bảng. Nhập tên bảng mong muốn và nhấp vào OK. Bảng sẽ được lưu dưới tên được chỉ định. Để hiển thị bảng mới trong hệ thống phân cấp cơ sở dữ liệu, trên thanh công cụ Object Explorer, hãy nhấp vào biểu tượng Gia hạn.

Để xem và thay đổi các thuộc tính của bảng hiện có, hãy mở rộng cơ sở dữ liệu chứa bảng mong muốn, mở rộng nút Bảng trong cơ sở dữ liệu đó, bấm chuột phải vào bảng mong muốn rồi chọn Thuộc tính từ menu ngữ cảnh. Thao tác này sẽ mở hộp thoại Thuộc tính bảng cho bảng. Ví dụ, hình bên dưới hiển thị hộp thoại Thuộc tính bảng trên tab Chung cho bảng Nhân viên trong cơ sở dữ liệu SampleDb.

Để đổi tên một bảng, trong thư mục Bảng, nhấp chuột phải vào bảng đó trong danh sách bảng và chọn Đổi tên từ menu ngữ cảnh. Và để xóa một bảng, hãy nhấp chuột phải vào bảng đó và chọn Xóa.

Sau khi đã tạo tất cả bốn bảng của cơ sở dữ liệu SampleDb (Nhân viên, Bộ phận, Dự án và Công trình_on - bạn có thể tìm thấy cấu trúc bảng chi tiết trong mã nguồn), bạn có thể sử dụng một tính năng khác của SQL Server Management Studio để hiển thị sơ đồ mối quan hệ thực thể - sơ đồ (ER) (thực thể-mối quan hệ) cơ sở dữ liệu này. (Quá trình chuyển đổi các bảng cơ sở dữ liệu thành sơ đồ mối quan hệ thực thể (ER) được gọi là kỹ thuật đảo ngược.)

Để tạo sơ đồ ER cho cơ sở dữ liệu SampleDb, hãy nhấp chuột phải vào thư mục con Sơ đồ cơ sở dữ liệu của nó và chọn Sơ đồ cơ sở dữ liệu mới từ menu ngữ cảnh. Nếu hộp thoại xuất hiện hỏi có tạo đối tượng trợ giúp hay không, hãy chọn Có.

Thao tác này sẽ mở hộp thoại Thêm bảng, cho phép bạn chọn các bảng để thêm vào biểu đồ. Sau khi bạn đã thêm tất cả các bảng cần thiết (trong trường hợp này là cả bốn bảng), hãy nhấp vào Đóng và trình hướng dẫn sẽ tạo một biểu đồ tương tự như biểu đồ được hiển thị trong hình ảnh bên dưới:

Hình này chỉ hiển thị sơ đồ ER trung gian của cơ sở dữ liệu SampleDb chứ không phải sơ đồ ER cuối cùng, vì mặc dù nó hiển thị cả bốn bảng với các cột của chúng (và các khóa chính tương ứng của chúng), nhưng nó vẫn không hiển thị mối quan hệ giữa các bảng. Mối quan hệ giữa hai bảng dựa trên khóa chính của một trong các bảng và cột (hoặc các cột) tương ứng có thể có của bảng kia.

Có ba mối quan hệ giữa các bảng trong cơ sở dữ liệu SampleDb. Bảng Department có mối quan hệ 1:N với bảng Nhân viên vì mỗi giá trị trong khóa chính của bảng Department (cột Số) tương ứng với một hoặc nhiều giá trị trong cột DepartmentNumber của bảng Nhân viên (một bộ phận có thể có nhiều nhân viên).

Tương tự, có một mối quan hệ giữa bảng Nhân viên và Works_on vì chỉ những giá trị có trong cột khóa chính của bảng Nhân viên (Id) mới có mặt trong cột EmpId của bảng Works_on. Mối quan hệ thứ ba tồn tại giữa bảng Project và Works_on, bởi vì chỉ các giá trị có trong khóa chính của bảng Project (Số) cũng có trong cột ProjectNumber của bảng Works_on.

Để tạo ra ba mối quan hệ này, sơ đồ ER cần được xây dựng lại bằng cách chỉ định cho mỗi bảng các cột tương ứng với các cột chính của các bảng khác. Cột này được gọi là khóa ngoại. Để xem điều này được thực hiện như thế nào, hãy xác định cột DepartmentNumber của bảng Nhân viên làm khóa ngoại cho bảng Phòng ban. Để thực hiện việc này, hãy thực hiện các bước sau:


Hai mối quan hệ còn lại được tạo ra theo cách tương tự. Hình bên dưới hiển thị sơ đồ ER hiển thị cả ba mối quan hệ giữa các bảng cơ sở dữ liệu SampleDb:

Phiên bản đầu tiên của Microsoft Máy chủ SQLđược công ty giới thiệu vào năm 1988. DBMS ngay lập tức được định vị là một hệ thống quan hệ, theo nhà sản xuất, có ba ưu điểm:

  • các thủ tục được lưu trữ, nhờ đó việc truy xuất dữ liệu được tăng tốc và tính toàn vẹn của nó được duy trì ở chế độ nhiều người dùng;
  • truy cập liên tục để quản trị mà không ngắt kết nối người dùng;
  • nền tảng máy chủ mở cho phép bạn tạo ứng dụng bên thứ ba sử dụng SQL Server.

2005, có tên mã Yukon với khả năng mở rộng nâng cao, là phiên bản đầu tiên hỗ trợ đầy đủ công nghệ .NET. Hỗ trợ cho dữ liệu phân tán đã được cải thiện và các công cụ phân tích thông tin và báo cáo đầu tiên đã xuất hiện.

Việc tích hợp với Internet cho phép sử dụng SQL Servers 2005 làm cơ sở để tạo ra các hệ thống thương mại điện tử với khả năng truy cập dữ liệu đơn giản và an toàn thông qua trình duyệt phổ biến sử dụng Tường lửa tích hợp Phiên bản Enterprise hỗ trợ tính toán song song trên số lượng bộ xử lý không giới hạn.

Phiên bản 2005 đã được thay thế bởi Microsoft SQL Server 2008, đây vẫn là một trong những máy chủ cơ sở dữ liệu phổ biến nhất và một lát sau, phiên bản tiếp theo xuất hiện - SQL Servers 2012, hỗ trợ khả năng tương thích với .NET Framework và các công nghệ xử lý thông tin nâng cao khác. Môi trường phát triển Visual Studio. Một mô-đun SQL Azure đặc biệt đã được tạo để truy cập nó.

Giao dịch-SQL

Từ năm 1992, SQL đã trở thành tiêu chuẩn để truy cập cơ sở dữ liệu. Hầu như tất cả các ngôn ngữ lập trình đều sử dụng nó để truy cập cơ sở dữ liệu, ngay cả khi người dùng có vẻ như đang làm việc trực tiếp với thông tin. Cú pháp cơ bản của ngôn ngữ vẫn giữ nguyên để đảm bảo khả năng tương thích, nhưng mọi nhà cung cấp hệ thống quản lý cơ sở dữ liệu đều cố gắng thêm vào SQL chức năng bổ sung. Không thể tìm ra sự thỏa hiệp, và sau “cuộc chiến về tiêu chuẩn”, hai nhà lãnh đạo vẫn còn: PL/SQL từ Oracle và Transact-SQL từ Máy chủ Microsoft sSQL.

T-SQL mở rộng SQL theo thủ tục để truy cập Microsoft Servers SQL. Nhưng điều này không loại trừ việc phát triển các ứng dụng trên các toán tử “tiêu chuẩn”.

Tự động hóa doanh nghiệp của bạn với SQL Server 2008 R2

Hoạt động đáng tin cậy của các ứng dụng kinh doanh là vô cùng quan trọng đối với các doanh nghiệp hiện đại. Thời gian ngừng hoạt động nhỏ nhất của cơ sở dữ liệu có thể dẫn đến tổn thất lớn. Máy chủ cơ sở dữ liệu Microsoft SQL Server 2008 R2 cho phép bạn lưu trữ thông tin với khối lượng gần như không giới hạn một cách đáng tin cậy và an toàn bằng cách sử dụng các công cụ quản lý quen thuộc với tất cả quản trị viên. Được hỗ trợ chia tỷ lệ dọc lên tới 256 bộ xử lý.

Công nghệ Hyper-V tận dụng tối đa sức mạnh của các hệ thống đa lõi hiện đại. Hỗ trợ trên một bộ xử lý cho nhiều bộ xử lý hệ thống ảo giảm chi phí và cải thiện khả năng mở rộng.

Phân tích dữ liệu của bạn

Để phân tích nhanh các luồng dữ liệu theo thời gian thực, thành phần SQL Server StreamInsight được sử dụng, được tối ưu hóa cho loại tác vụ này. Có thể phát triển các ứng dụng của riêng bạn dựa trên .NET.

Hoạt động liên tục và bảo mật dữ liệu

Hỗ trợ cho hiệu suất tối ưu bất cứ lúc nào được đảm bảo bởi bộ điều chỉnh tài nguyên được tích hợp trong máy chủ. Quản trị viên có thể quản lý các công cụ tải và hệ thống, đặt giới hạn cho các ứng dụng về việc sử dụng tài nguyên bộ xử lý và bộ nhớ. Các chức năng mã hóa cung cấp khả năng bảo vệ thông tin linh hoạt và minh bạch, đồng thời duy trì nhật ký truy cập vào thông tin đó.

Kích thước cơ sở dữ liệu không giới hạn

Lưu trữ dữ liệu có thể được thu nhỏ một cách nhanh chóng và an toàn. Người dùng có thể sử dụng các mẫu Kho ngày theo dõi nhanh được tạo sẵn để hỗ trợ mảng đĩa lên tới 48TB. Cấu hình cơ bản hỗ trợ thiết bị của các hãng hàng đầu như HP, EMC và IBM. Chức năng nén thông tin theo tiêu chuẩn UCS 2 cho phép bạn sử dụng dung lượng ổ đĩa tiết kiệm hơn.

Nâng cao hiệu quả của nhà phát triển và quản trị viên

Mới thủ thuật phần mềm cho phép bạn nhanh chóng loại bỏ các máy chủ không được sử dụng đúng mức, cải thiện khả năng kiểm soát và tối ưu hóa hiệu suất mà không cần đến các chuyên gia bên thứ ba bên ngoài. Giám sát hiệu suất ứng dụng và cơ sở dữ liệu, tìm các cải tiến trong bảng thông tin cũng như tăng tốc độ cập nhật và cài đặt.

Công cụ phân tích kinh doanh cá nhân

Chưa bao giờ có sự đồng thuận giữa các công ty về việc ai sẽ thực hiện phân tích - bộ phận CNTT hoặc người dùng trực tiếp. Hệ thống báo cáo cá nhân giải quyết vấn đề này thông qua các công cụ hiện đại để đảm bảo an toàn và xây dựng hiệu quả, phân tích và mô hình hóa các quy trình kinh doanh. Hỗ trợ truy cập trực tiếp vào cơ sở dữ liệu trong Microsoft Office và SharePoint Server. Thông tin công ty có thể được tích hợp với các loại nội dung khác, chẳng hạn như bản đồ, đồ họa và video.

Môi trường cộng tác thuận tiện

Cung cấp cho nhân viên của bạn quyền truy cập vào thông tin, cộng tác và phân tích dữ liệu bằng ứng dụng thương mại điện tử PowerPivot. bảng excel. Chương trình cho phép bạn phân tích thông tin và lập mô hình quy trình kinh doanh cũng như xuất bản báo cáo cho truy cập công cộng trên web hoặc SharePoint.

Để tạo các báo cáo nội bộ một cách trực quan, hệ thống Report Builder 3.0 được cung cấp, hỗ trợ nhiều định dạng và nhiều mẫu được xác định trước.

Làm việc với cơ sở dữ liệu miễn phí

Công ty cung cấp cho các dự án nhỏ và các nhà phát triển mới làm quen một phiên bản miễn phí đặc biệt của Microsoft SQL Server Express. Điều này bao gồm các công nghệ cơ sở dữ liệu tương tự như "đầy đủ" Phiên bản SQL Máy chủ.

Môi trường phát triển Visual Studio và Web Developer được hỗ trợ. Tạo các bảng và truy vấn phức tạp, phát triển các ứng dụng Internet có hỗ trợ cơ sở dữ liệu và truy cập trực tiếp vào thông tin từ PHP.

Tận dụng toàn bộ sức mạnh của Transact-SQL và các công nghệ truy cập dữ liệu tiên tiến nhất của ADO.NET và LINQ. Các thủ tục lưu trữ, trình kích hoạt và chức năng được hỗ trợ.

Tập trung vào các yếu tố logic nghiệp vụ và hệ thống sẽ tự tối ưu hóa cấu trúc cơ sở dữ liệu.

Tạo các báo cáo phong phú về bất kỳ mức độ phức tạp nào. Sử dụng khả năng tìm kiếm, tích hợp báo cáo với ứng dụng Microsoft Office và thêm thông tin vị trí địa lý vào tài liệu.

Các ứng dụng đang được phát triển có thể hoạt động mà không cần kết nối với máy chủ cơ sở dữ liệu. Đồng bộ hóa được thực hiện tự động bằng cách sử dụng công nghệ sao chép giao dịch độc quyền Sync Framework.

Quản lý cơ sở hạ tầng của bạn bằng cách sử dụng các chính sách quản lý cho tất cả cơ sở dữ liệu và ứng dụng. Các kịch bản hoạt động phổ biến giúp giảm thời gian tối ưu hóa truy vấn cũng như tạo và khôi phục bản sao lưu ở quy mô doanh nghiệp.

SQL Server 2008 R2 Express Edition lý tưởng để triển khai nhanh chóng các trang web và cửa hàng trực tuyến, chương trình cho mục đích sử dụng cá nhân và doanh nghiệp nhỏ. Đây là một lựa chọn tuyệt vời để bắt đầu và học hỏi.

Quản lý cơ sở dữ liệu của bạn bằng SQL Server Management Studio

Microsoft SQL Server Management là môi trường chuyên biệt để tạo, truy cập và quản lý cơ sở dữ liệu cũng như tất cả các thành phần của SQL Server, bao gồm cả dịch vụ báo cáo.

Hệ thống kết hợp trong một giao diện tất cả khả năng của các chương trình quản trị từ các phiên bản trước đó, chẳng hạn như Trình phân tích truy vấn và Trình quản lý doanh nghiệp. Quản trị viên nhận được phần mềm với một bộ lớn các đối tượng quản lý và phát triển đồ họa, cũng như ngôn ngữ mở rộng để tạo tập lệnh để làm việc với cơ sở dữ liệu.

Trình soạn thảo mã Microsoft Server Management Studio đáng được quan tâm đặc biệt. Nó cho phép bạn phát triển các tập lệnh theo kịch bản trong Transact-SQL, lập trình các truy vấn truy cập dữ liệu đa chiều và phân tích chúng với sự hỗ trợ lưu kết quả dưới dạng XML. Có thể tạo các truy vấn và tập lệnh mà không cần kết nối với mạng hoặc máy chủ, sau đó thực hiện và đồng bộ hóa. Có nhiều lựa chọn về các mẫu được cài đặt sẵn và hệ thống kiểm soát phiên bản.

Mô-đun Trình duyệt đối tượng cho phép bạn xem và quản lý mọi đối tượng Microsoft Servers SQL tích hợp sẵn trên tất cả các máy chủ và phiên bản cơ sở dữ liệu. Dễ dàng truy cập vào thông tin bạn cần là rất quan trọng để phát triển ứng dụng và kiểm soát phiên bản nhanh chóng.

Hệ thống được xây dựng trên hệ thống Visual Studio Isolate Shell, hỗ trợ các cài đặt và tiện ích mở rộng mở rộng nhà phát triển bên thứ ba. Có rất nhiều cộng đồng trên Internet nơi bạn có thể tìm thấy mọi thứ thông tin cần thiết và các ví dụ về mã để phát triển các công cụ xử lý và quản lý dữ liệu của riêng bạn.

Theo công ty nghiên cứu Forrester Research, máy chủ cơ sở dữ liệu Microsoft SQL Server 2012 nằm trong số ba máy chủ hàng đầu trên thị trường lưu trữ thông tin doanh nghiệp vào cuối năm 2013. Các chuyên gia lưu ý rằng sự tăng trưởng nhanh chóng của thị phần của Microsoft là do một cách tiếp cận tích hợp các công ty để tự động hóa quy trình kinh doanh. Microsoft SQL Server là một nền tảng hiện đại để quản lý và lưu trữ mọi loại dữ liệu, được bổ sung bởi các công cụ phân tích và phát triển. Riêng biệt, điều đáng chú ý là khả năng tích hợp dễ dàng với các sản phẩm khác của công ty, chẳng hạn như Office và SharePoint.