Beruflich Dokumente
Kultur Dokumente
Vũ Tuyết Trinh
trinhvt-fit@mail.hut.edu.vn
Đại học Bách khoa Hà Nội
Trang 1
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
Giáo trình này giới thiệu về SQL Server, một hệ quản trị cơ sở dữ liệu của Microsoft.
Bộ giáo trình được biên soạn dựa trên những tài liệu mới nhất về SQL Server 2008
với mục đích cung cấp kiến thức cơ bản cũng như các kiến thức cập nhật về công
nghệ quản trị cơ sở dữ liệu của Microsoft.
3. cập nhật các tính năng mới, các đặc điểm nổi trội của SQL Server 2008.
Bộ giáo trình được biên soạn và tổng hợp bao gồm: slide bài giảng, bài thực hành
(lab), bài tập (exercise), và các video tự học. Toàn bộ giáo trình đều được trình bày
bằng tiếng Anh, nhằm mục đích nâng cao khả năng tiếp thu, phát triển các kỹ năng
học và nghiên cứu bằng tiếng Anh – kỹ năng vô cùng quan trọng đối với người học
công nghệ thông tin. Cùng với bộ giáo trình, tài liệu hướng dẫn này (dành cho giáo
viên) làm rõ y tưởng của mỗi bài giảng, các vấn đề mà giảng viên nên nhấn mạnh
trong từng bài giảng cũng như đưa ra một số gợi y về việc kết hợp giảng dạy ly thuyết
với thực hành.
Giáo trình có thể dùng làm tài liệu tham khảo cho sinh viên các ngành Công nghệ
thông tin, điện tử, viễn thông và tất cả những ai muốn tìm hiểu về SQL Server.
Một ví dụ điển hình về việc tổ chức các buổi học đã được áp dụng như sau: mỗi
Trang 2
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
tuần học gồm 1 buổi ly thuyết và 1 buổi thực hành / bài tập
Lý thuyết
- Thời lượng : 3 tiết học (có thể thay đổi tùy theo đối tượng sinh viên)
- Thời gian giảng slide: từ 2 đến 2.5 tiết học tùy vào nội dung bài giảng
và đối tượng học.
- Thời gian còn lại, giáo viên có thể tổ chức cho sinh viên nghe các đoạn
video và tiến hành thảo luận. Việc đan xen cho sinh viên nghe các bài
trình bày tiếng Anh có thể tốn khá nhiều thời gian. Do đó, giáo viên nên
cân đối việc chia thời gian và chọn lọc các bài trình bày để cho sinh viên
nghe và thảo luận trên lớp. Các phần khác có thể giao cho sinh viên về
nhà tự nghe rồi trả lời câu hỏi của giáo viên để buổi sau lên lớp trao đổi.
Thực hành
- Sinh viên thực hành với các bài lab được thiết kế cho từng nội dung ly
thuyết tương ứng.
- Thông qua ví dụ cụ thể trình bày trong tài liệu hướng dẫn thực hành
(hands-on-lab), giảng viên hướng dẫn sinh viên thực hiện các bài thực
hành từng bước một.
- Sinh viên tự thực hiện các bài tập khác dưới sự hướng dẫn của giảng
viên
- Kết thúc mỗi buổi thực hành (hoặc đầu buổi học ly thuyết tiếp theo), giảng
viên nên tổng kết lại nội dung bài thực hành (và bài tập), các vấn đề
chung mà sinh viên gặp phải để cùng rút kinh nghiệm.
Bên cạnh các bài thực hành theo từng chủ đề, giáo viên nên yêu cầu sinh viên
thực hiện một bài tập tổng hợp (project, tạm gọi là đồ án môn học). Đề bài cho đồ án
môn học có thể do sinh viên tự đăng ky và/hoặc tham khảo từ một danh sách các đề
tài mẫu để lựa chọn, hoặc cho phép sinh viên tự đăng ký. Việc lựa chọn đề tài có thể
được thực hiện vào giữa học kỳ hoặc vào cuối kỳ.
Để rèn luyện kỹ năng làm việc nhóm cho sinh viên, giáo viên có thể yêu cầu lớp
phân chia thành các nhóm sinh viên để làm các đề tài. Tùy vào độ lớn của đề tài mà
giáo viên quy định số lượng thành viên của một nhóm (nên giao động trong khoảng từ
2 đến 4 sinh viên). Khi bắt đầu thực hiện và trong quá trình thực hiện đồ án môn học,
giáo viên cần có mặt để tham gia cùng sinh viên, hướng dẫn để sinh viên đi đúng
hướng và hiểu vấn đề một cách chính xác.
Trang 3
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
Trang 4
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
Nội dung :
3.1 Data Manipulation Language
3.2 Selecting Records from Existing Table
3.3 Subqueries, Joins, Operations on Collection
3.4 Inserting Data into a Table
3.5 Updating Data in Table
3.6 Deleting Data from Table
3.7 Top-k queries
3.8 Full-text Search
Bài thực hành Lab 3
Bài tập : Exercise 3
Video training
Trang 5
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
Nội dung :
5.1 Understanding SQL Server Security Model
5.2 Managing logins, users, roles
5.3 Managing permissions
5.4 Data Control Language and Security Issues
5.5 Implementing Security through Database Objects
5.6 Other Security Options
Bài thực hành Lab 5
Bài tập : Exercise 5
Video training
Chương 7: Trigger
Bài giảng: Session 7: Implementing Triggers
Nội dung :
Trang 6
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
Trang 7
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
Trang 8
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
Trang 9
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
Chương 15: Những đặc điểm mới của SQL Server 2008
Bài giảng: Session 15: New Features in SQL Server 2008
Nội dung :
15.1 Policy-based Management
15.2 Optimized and Predictable System Performance
15.3 Dynamic Development
15.4 Beyond Relational Database
15.5 Pervasive Business Insight
Bài thực hành Lab 15
Bài tập : Exercise 15
Video training
Trang 10
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
C HƯƠNG 1
Các nội dung mà giảng viên cần chuyển tải đến người học gồm
- Vai trò và lợi ích của việc sử dụng cơ sở dữ liệu trong quản ly thông tin dữ liệu
của người dùng: từ một kịch bản thực tế, giảng viên cần chỉ ra các cách tiếp
cận lưu trữ và quản ly dữ liệu (tệp và CSDL), nêu các đặc điểm (điểm mạnh và
hạn chế) của từng cách tiếp cận.
- Vai trò của hệ quản trị cơ sở dữ liệu trong việc khai thác và quản trị cơ sở dữ
liệu
- Các khái niệm cơ bản về mô hình dữ liệu quan hệ: bảng/quan hệ, bản ghi/dòng
dữ liệu, thuộc tính (attributes), miền giá trị (domain), khóa (primary key, foreign
key)
- Tìm hiểu khái quát về các mô hình truy nhập dữ liệu SQL Server: mô hình tập
trung, mô hình khách/chủ, mô hình hướng dịch vụ. Giảng viên có thể tổ chức
thảo luận về các đặc điểm, ưu/nhược điểm của từng mô hình kiến trúc này. Ở
đây, giảng viên cũng nên đưa ra các gợi y về khả năng áp dụng và lựa chọn áp
dụng các mô hình kiến trúc này tùy từng điều kiện phát triển ứng dụng cụ thể.
- Tìm hiểu khái quát về kiến trúc bên trong của SQL Server: các thành phần
(components) và dịch vụ (services). Ở đây, giảng viên cũng nên làm rõ các
thành phần cơ bản (bắt buộc) đối với hệ quản trị cơ sở dữ liệu (cụ thể là: quản
ly lưu trữ, quản ly truy vấn và quản trị giao dịch) và các thành phần thêm vào
cung cấp giá trị gia tăng cho xử ly dữ liệu trên SQL Server (ví dụ như dịch vụ
tích hợp dữ liệu, dịch vụ phân tích dữ liệu, dịch vụ tạo báo cáo, …)
- Tìm hiểu khái quát về các ngôn ngữ lập trình hỗ trợ trong SQL Server:
Transact-SQL (hay T-SQL) và CLR. Giảng viên nên chỉ rõ sự khác nhau giữa
các ngôn ngữ lập trình này và phạm vi ứng dụng hiệu quả.
- Một vài nét về quá trình phát triển và tiến hóa của hệ quản trị cơ sở dữ liệu
SQL Server. Ở đây, giảng viên nên nhấn mạnh vào các khác biệt cơ bản giữa
các “thế hệ” quản trị cơ sở dữ liệu: Thế hệ 2 là mở rộng của thế hệ 1 về khả
năng định nghĩa kiểu dữ liệu của người dùng và một số dịch vụ phân tích dữ
Trang 11
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
liệu. Thế hệ 3 (SQL Server 2005 và SQL Server 2008) là bước nhảy vọt nhờ
tích hợp CLR bên trong lõi của hệ quản trị cơ sở dữ liệu SQL Server.
- Nêu khái quát các đặc điểm nổi trội của SQL Server 2008. Các dịch vụ hỗ trợ
của SQL Server cho phép bảo vệ dữ liệu mọi nơi, mọi lúc.
Trong giờ bài tập, giảng viên có thể đưa ra các yêu cầu về tìm hiểu và thiết kế cơ
sở dữ liệu. Mục đích của giờ bài tập này là giúp sinh viên “nhớ lại” hoặc tìm hiểu
kỹ hơn về cấu trúc cơ sở dữ liệu quan hệ như cài đặt trong SQL Server. Các bài
tập nên tập trung vào:
- Tìm hiểu cấu trúc dữ liệu của một cơ dữ liệu có sẵn: giải thích chi tiết các khái
niệm về cơ sở dữ liệu quan hệ đã nêu trên lớp
- Thiết kế một cơ sở dữ liệu cho bài toán cụ thể
Trang 12
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
C HƯƠNG 2
Các nội dung mà giảng viên cần chuyển tải đến người học gồm:
- Các thành phần chức năng
- Giới thiệu giao diện đồ họa cho phép thao tác với các đối tượng của cơ sở dữ
liệu SQL Server. Giảng viên nên đặc biệt nhấn mạnh vào 2 đặc điểm nổi bật của
bộ công cụ là (i) cửa sổ hiển thị và quản ly các mẫu (template explorer) và (ii)
khả năng kết nối đồng thời đến nhiều máy chủ SQL Server (registered servers)
- Với công cụ thiết kế bảng và thiết kế sơ đồ quan hệ, Management Studio cho
phép người dùng dễ dàng tạo các bảng và các liên kết thông qua giao diện đồ
họa. Giảng viên cần chỉ rõ sự tương đương trong việc xây dựng sơ đồ quan hệ
(diagram) và định nghĩa khóa ngoài cho từng bảng.
- Công cụ hỗ trợ soạn thảo và thực hiện các truy vấn Query Editor. Khi giới thiệu
về công cụ này, giảng viên nên nhấn mạnh đến xử ly va thông báo lỗi cú pháp và
ngữ nghĩa của câu truy vấn. Giảng viên giải thích cách hiểu và xử ly các thông
báo lỗi thông thường.
- Một trong những tiện ích mà Management Studio hỗ trợ người lập trình là quản
ly scripts của một dự án. Một dự án là một tập hợp các script và các files có mối
liên hệ logic với nhau. Tập hợp này gồm các thông tin về quản trị và phát triển
một cơ sở dữ liệu. Những thông tin về một dự án gồm
o Thông tin kết nối: tên máy chủ, cơ sở dữ liệu, giao thức, kiểu xác thực,
… Các thông tin này được lưu trong 1 script.
o Script SQL sử dụng bởi người dùng có thẻ được lưu trữ trong nhiều tệp
các tệp có phần mở rộng .sql và có thể được soạn thảo với Query
Editor
o Script MDX, DMX, XMLA
o Và các tệp lưu trữ các thông tin khác của một dự án
Trong phần trình bày này, giảng viên nên nêu ví dụ về một số dự án trên thực tế,
xác định các thông tin, xử ly cần thiết cho quản trị và phát triển dự án nêu trên.
Trang 13
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
Dựa trên đó, giảng viên cần làm rõ lợi ích của tiện ích hỗ trợ trong Management
Studio.
Trong giờ thực hành và bài tập, giảng viên nên để thời gian cho học viên thực hành
các nội dung:
- cài đặt và cấu hình SQL Server
- sử dụng một cơ sở dữ liệu mẫu để tìm hiểu về các thành phần chức năng của
Management Studio
- xây dựng cơ sở dữ liệu đã thiết kế trước
- sử dụng công cụ về quản trị dữ liệu và script dự án với SQL Server
Trang 14
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
C HƯƠNG 3
Nội dung mà giảng viên cần chuyển tải đến sinh viên bao gồm:
- Giới thiệu cú pháp chung câu lệnh Select-From-Where: Giảng viên nên sử
dụng các ví dụ cụ thể để minh họa khả năng biểu diễn yêu cầu thao tác dữ liệu
với câu lệnh SQL. Vì T-SQL là một cài đặt cụ thể của chuẩn SQL 92, giảng viên
cũng nên làm rõ các đặc điểm của cài đặt này so với chuẩn SQL 92 và các cài
đặt khác (nếu sinh viên đã từng làm quen với các cài đặt khác của SQL).
- Sau khi sinh viên đã năm chắc cách viết một câu lệnh SQL đơn giản, giảng
viên sẽ giới thiệu các mệnh đề ORDER BY, COMPUTE, GROUP BY, …
- Để giải thích về câu lênh join, outer-join, giảng viên không chỉ cần giới thiệu cú
pháp câu lệnh mà phải chỉ ra các ví dụ cụ thể để minh họa về các trường hợp
sử dụng chung
Ví dụ: đưa ra danh sách sinh viên và các khóa học mà sinh viên đăng ky
và đưa ra danh sách sinh viên và các khóa học mà sinh viên đăng ky (nếu có)
- Giới thiệu cú pháp và cách viết các câu truy vấn lồng nhau (subqueries,
join, union): Ngoài việc hướng dẫn sinh viên viết các câu truy vấn dạng này
theo cú pháp đã trình bày, giảng viên nên hướng dẫn cả cách sử dụng các
mẫu có sẵn (trong cửa sổ template explorer) để xây dựng các câu lệnh này.
- Giới thiệu các câu lệnh cập nhât dữ liệu như thêm (Insert), sửa (update) và
xóa (delete): Giảng viên nên nêu ví dụ cả với những câu lệnh cập nhật từng
bản ghi và câu lệnh cập nhật nhiều bản ghi đồng thời nhờ sử dụng kết hợp với
các câu lệnh đã được giới thiệu trước đó.
- Một trong những mở rộng quan trong của SQL Server là cho phép biểu diễn
và đánh giá các câu truy vấn top-k, các câu truy vấn này sẽ trả về kết quả là k
bản ghi thỏa mãn điều kiện tìm kiếm thay vì trả về tất cả các bản ghi tìm thấy
Trang 15
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
trong cơ sở dữ liệu (k do người dùng xác định thông qua câu truy vấn). Để
thực hiện việc lựa chọn k. Giảng viên cần giải thích các hàm Top %, Rank,
Dense_Rank
- Một mở rộng khác của SQL Server là hỗ trợ tìm kiếm trên nội dung các
trường dữ liệu (Full-text Search). Để hỗ trợ dạng tìm kiếm này, SQL Server mở
rộng câu lệnh truy vấn SQL truyền thống với hai mệnh đề la CONTAINS và
FREETEXT. Kiểu tìm kiếm này đã được hỗ trợ từ các phiên bản trước của SQL
Server dưới dạng các dịch vụ gia tăng xong từ phiên bản 2008, tìm kiếm trên
nội dung được tích hợp hoàn toàn bên trong mô-tơ cơ sở dữ liệu (database
engine). Nếu có điều kiện, giảng viên nên giải thích y nghĩa và mục đích của
cải tiến này của SQL Server 2008.
Trong giờ thực hành và bài tập, giảng viên nên để thời gian cho học viên thực hành
viết các câu lệnh SQL để thực hiện các thao tác trên cơ sở dữ liệu đã tạo. Học viên
cũng nên sử dụng kết hợp giữa các tiện ích khác nhau của môi trường SQL Server
như trình soạn thảo truy vấn hay sử dụng các mẫu (template) đã có trong quá trình
xây dựng các câu truy vấn SQL.
Trang 16
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
C HƯƠNG 4
Nội dung mà giảng viên cần chuyển tải đến sinh viên bao gồm:
- Phạm vi của ngôn ngữ định nghĩa dữ liệu giới hạn bởi các câu lệnh thực hiện
tạo mới (create), sửa đôi (alter), xóa (drop) các đối tượng dữ liệu trong cơ sở
dữ liệu (table, view, index, stored procedures, …). Giảng viên cũng nên phân
loại các đối tượng này và sau đó, chỉ tập trung vào 2 đối tượng chính liên quan
đến quản ly và hiển thị dữ liệu là table và view. Các đối tượng khác sẽ được đề
cập đến trong các chương có liên quan đến sau.
- Khi giải thích cú pháp câu lệnh CREATE DATABASE, giảng viên cần giải thích
kỹ nghĩa của các tham số và các lựa chọn của câu lệnh. Nếu điều kiện cho
phép, giảng viên nên trình bày và giải thích các câu lệnh trực tiếp trên máy để
có thể dễ dàng minh họa chi tiết y nghĩa của từng mệnh đề
- Giới thiệu các kiểu dữ liệu hỗ trợ trong SQL Server gồm các kiểu dữ liệu định
nghĩa sẵn (built-in data type) và kiểu dữ liệu người dùng định nghĩa (user-
defined data type). Giảng viên nên nhấn mạnh về khả năng biểu diễn mở rộng
của SQL Server so với cơ sở dữ liệu quan hệ truyền thống thông qua định
nghĩa các kiểu dữ liệu người dùng. Sau đó, giảng viên sẽ tập trung vào giới
thiêu 7 kiểu dữ liệu mới được hỗ trợ trong SQL Server 2008
- SQL Server 2008 hỗ trợ thêm 4 kiểu dữ liệu ngày tháng: date, time,
datetimeoffset, datetime2. Giảng viên cần so sánh 4 kiểu dữ liệu mới này với 2
kiểu dữ liệu ngày tháng (datetime và smalldatetime) hỗ trợ từ các phiên bản
trước, nêu một số ví dụ minh họa để làm rõ y nghĩa thực tiễn của việc sử dụng
các kiểu dữ liệu mới này
- SQL Server 2008 hỗ trợ kiểu dữ liệu mới HierarchyID cho phép biểu diễn mỗi
liên hệ giữa các giá trị trong một bảng. Giảng viên cần nêu một vài ví dụ thực
tế để sinh viên thấy rõ y nghĩa của kiểu dữ liệu này và tính thực tiễn của việc
hỗ trợ kiểu dữ liệu này trong các ứng dụng khác nhau.
- SQL Server 2008 hỗ trợ 2 kiểu dữ liệu Geography và Geometry để biểu diễn và
lưu trữ các đối tượng dữ liệu không gian. Thông qua các ví dụ ứng dụng cụ
Trang 17
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
thể, giảng viên cần làm cho sinh viên hiểu rõ các đối tượng dữ liệu không gian
cần lưu trữ như điểm (point), đường (linestring), …. Bên cạnh đó, giảng viên
cần nêu rõ các điểm khác biệt giữa 2 kiểu dữ liệu không gian mà SQL Server
2008 hỗ trợ. Thông qua việc trình bày thao tác với các đối tượng không gian
(như tính khoảng cách, tìm vùng cắt nhau, giao nhau,…), giảng viên cần làm rõ
các lợi ích đối với người lập trình, phát triển ứng dụng thông qua việc hỗ trợ
kiểu dữ liệu không gian bên trong hệ quản trị cơ sở dữ liệu.
- Khi giới thiệu về khả năng hỗ trợ lưu trữ XML bên trong SQL Server, giảng viên
nên chỉ rõ khả năng kiểm tra tính hợp lệ của dữ liệu XML dựa trên một lược đồ
định nghĩa trước.
- Trước khi giới thiệu về một kiểu dữ liệu mới hỗ trợ lưu trữ các tài liệu (văn bản
hay đa phương tiện) FileStream, giảng viên cần giải thích một số giải pháp cho
việc lưu trữ tài liệu cớ lớn, so sánh các giải pháp này và nhấn mạnh vào các
ưu điểm mà kiểu dữ liệu FileStream hỗ trợ cho quản ly các tài liệu kích thước
lớn.
- Lưu y: một số kiểu dữ liệu như HierarchyID, Geography, Geometry,… thực chất
là các CLR types cho phép định nghĩa cả các phương thức thao tác với dữ
liệu. Chi tiết về cách định nghĩa CLR type sẽ được đề cập đến trong bài giảng
về tích hợp .net trong SQL Server. Tuy nhiên, giảng viên cũng cần chỉ ra sự
khác biệt giữa các kiểu dữ liệu này với các kiểu dữ liệu truyền thống trong các
hệ quản trị cơ sở dữ liệu quan hệ.
Trong giờ thực hành và bài tập, giảng viên nên để thời gian cho học viên thực hành
viết các câu lệnh SQL để định nghĩa và cập nhật cấu trúc cơ sở dữ liệu . Học viên
cũng nên sử dụng kết hợp giữa các tiện ích khác nhau của môi trường SQL Server
như sử dụng các mẫu (template) sẵn có hay các công cụ đồ họa trong quá trình xây
dựng các yêu cầu định nghĩa dữ liệu.
Trang 18
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
C HƯƠNG 5
Nội dung mà giảng viên cần chuyển tải đến sinh viên bao gồm:
- Mô hình bảo mật của SQL Server: Ở đây, giảng viên cần làm rõ các mức bảo
mật khác nhau có thể cung cấp khi làm việc với cơ sở dữ. Cụ thể là: bảo mật ở
mức độ hệ điều hành, bảo mật chuẩn (ở mức hệ quản trị cơ sở dữ liệu SQL
Server) và bảo mật ở mức cơ sở dữ liệu.
- Quản ly quyền người dùng: Quyền của người dùng được định nghĩa như khả
năng người dùng có thể thao tác với cơ sở dữ liệu. Một cách khái quát, quyền
của người dùng có thể được chia làm 4 loại như sau: (i) quyền truy nhập vào
hệ quản trị cơ sở dữ liệu, (ii) quyền truy xuất cơ sở dữ liệu, (iii) quyền thực
hiện trên các đối tượng của cơ sở dữ liệu và (iv) quyền xử ly dữ liệu
- Vai trò của người dùng trên hệ quản trị cơ sở dữ liệu và trên cơ sở dữ liệu.
Giảng viên cần nhấn mạnh sự khác nhau giữa 2 loại bảo mật khác nhau. Với
mỗi loại, giảng viên cần giải thích chi tiết các vai trò mà hệ thống có thể gán
cho người dùng trong quá trình thao tác với hệ thống
- Ngôn ngữ điều khiển dữ liệu: Giảng viên giới thiệu cú pháp và cách sử dụng
các câu lệnh trong ngôn ngữ T-SQL để định nghĩa và phân quyền người dùng
(câu lệnh: Grant, Revoke, deny).
Bên cạnh đó, giảng viên cũng nên đề cập đến các phương pháp định nghĩa
và phân quyền cho người dùng thông qua bộ công cụ Management Studio,
thông qua các thủ tục của hệ thống
- Bảo mật cơ sở dữ liệu thông qua các đối tượng của cơ sở dữ liệu như khung
nhìn (view), thủ tục lưu trữ trong (stored procedures),… : Để hiểu rõ được kỹ
thuật này, giảng viên cần đưa ra minh họa về phân cấp và mối liên quan giữa
các đối tượng trong một cơ sở dữ liệu SQL Server. Qua đó, giảng viên giải
Trang 19
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
thích về mức độ phụ thuộc và phạm vi ảnh hưởng khi thực hiện phân quyền
người dùng trên các đối tượng này.
- Một số kỹ thuật bảo mật khác như sử dụng tài khoản, mã hóa,… cũng nên
được giới thiệu.
- Một điểm cần đặc biệt lưu y là bảo mật hệ cơ sở dữ liệu không chỉ đơn giản là
bảo mật cơ sở dữ liệu. Nó còn liên quan đến bảo mật hệ quản trị cơ sở dữ liệu,
bảo mật ứng dụng (môi trường thực thi ứng dụng), bảo mật hệ điều hành trên
đó chạy hệ cơ sở dữ liệu, bảo mật máy chủ web và môi trường mạng có kết
nối cơ sở dữ liệu. Để sinh viên có thể hiểu rõ thông điệp trên, giảng viên nên
nhắc lại khái niệm về hệ cơ sở dữ liệu để thấy rõ vị trí của nó trong các ứng
dụng thực tế.
Trong bài thực hành, sinh viên phải sử dụng các công cụ khác nhau để định nghĩa
các yêu cầu bảo mật cũng như đảm bảo việc thực hiện các yêu cầu này.
Trang 20
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
C HƯƠNG 6
Nội dung mà giảng viên cần chuyển tải đến sinh viên bao gồm:
- Giải thích khái niệm xử ly bó.
- Trong SQL Server, Transact-SQL (hay T-SQL) là một ngôn ngữ lập trình cơ bản
nhất. Nó cho phép ta định nghĩa các yêu cầu thao tác (thêm, xóa, sửa) trên các
bảng dữ liệu. Tuy nhiên, cú pháp của T-SQL chỉ tập trung vào thao tác dữ liệu
trên các bảng mà chưa có các thành phần xử ly, điều khiển. Giảng viên cần chỉ
rõ khả năng đưa các cấu trúc điều khiển, các biến vào trong câu lệnh T-SQL.
Dựa trên cấu trúc mở rộng đó, T-SQL có khả năng biểu diễn các yêu cầu thao
tác phức tạp hơn của người dùng.
- Cách cài đăt thủ tục lưu trữ trong và hàm người dùng: cú pháp câu lệnh và
cách xây dựng hàm, thủ tục thông qua công cụ Management Studio.
- Giảng viên cần nhấn mạnh những điểm giống và khác nhau khi viết và khi sử
dụng thủ tục và hàm, cách truyền tham số, …
- Nếu có thời gian, giảng viên nên giải thích quá trình thực hiện của một thủ tục
lưu trữ trong để chỉ ra lợi ích của việc sử dụng chúng. Giảng viên cũng nên giới
thiệu một số thủ tục lưu trữ trong của hệ thống hay được sử dụng
Trong giờ thực hành, sinh viên tiến hành xây dựng các thủ tục, hàm và kiểm tra việc
sử dụng chúng
Trang 21
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
C HƯƠNG 7
Trigger
Trigger là một dạng đặc biệt của thủ tục lưu trữ trong (stored procedures) dùng để
phản hồi các sự kiện cụ thể. Trigger gồm một đoạn mã được gắn với bảng dữ liệu và
được tự động kích hoạt khi có một sự kiện xác định trước được xảy ra. Bởi tính chất
đó, triggers không thể nhận các tham số đầu vào như hàm, thủ tục và cũng không có
giá trị trả về như hàm.
Chương này trình bày về cách tạo và sử dụng trigger khi xây dựng một ứng dụng cơ
sở dữ liệu.
Nội dung mà giảng viên cần chuyển tải đến sinh viên bao gồm:
- Định nghĩa về trigger: Giảng viên cần giải thích cho sinh viên đặc điểm của
trigger và so sánh nó với thủ tục lưu trữ trong và hàm người dùng
- Giải thích cú pháp câu lệnh tạo trigger: giảng viên cần nhấn mạnh đến liên kết
bắt buộc giữa một trigger và một bảng, các sự kiện mà trigger có thể gắn vào
để được kích hoạt (INSERT, UPDATE, DELETE) và so sánh mệnh đề FOR |
AFTER với mệnh đề INSTEAD OF.
- Giải thích về hoạt động của trigger: giảng viên nên đưa ra một số tình huống
sử dụng trigger và hướng dẫn sinh viên phân tích hoạt động của các trigger
này. Từ phân tích và nhận xét, giảng viên nhấn mạnh lợi ích của việc sử dụng
trigger trong một số trường hợp cũng như các bất lợi gặp phải khi các trigger
không được sử dụng một cách hợp ly. Từ đó, giảng viên hướng dẫn sinh viên
để tìm ra các trường hợp sử dụng trigger tốt
o Sử dụng trigger để đảm bảo các ràng buộc toàn vẹn
o Sử dụng để kiểm tra các ràng buộc một cách uyển chuyển hơn
o Sử dụng trigger để kiểm tra quy tắc ràng buộc
o Sử dụng các trigger có tính đệ quy
o Sử dụng trigger thực hiện theo thứ tự
o Sử dụng trigger để thực hiện thay thế các xử ly ngầm định như thêm,
xóa, sửa
- Một điểm quan trọng khác trong khai thác các trigger mà giảng viên cũng cần
đề cập là việc sử dụng các hàm UPDATE() và COLUMNS_UPDATED(). Các
Trang 22
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
hàm này chỉ có hiệu lực trong phạm vi của một trigger và cho biết chi tiết việc
cập nhật có tác dụng trên từng trường dữ liệu cụ thể nào trong bảng. Giảng
viên nên nêu một số ví dụ để giúp sinh viên thấy rõ ích lợi của việc sử dụng
các hàm này.
- Cũng như nhiều đối tượng khác của cơ sở dữ liệu SQL Server, tạo và cập nhât
các trigger có thể được thực hiện thông qua câu lệnh CREATE TRIGGER hay
sử dụng giao diện của Management Studio. Giảng viên nên giới thiệu cả hai
cách tạo trigger và để sinh viên thực hành với cả hai cách này trong giờ thực
hành
Trong giờ thực hành, sinh viên thực hiện tạo các trigger, chạy thử và kiểm tra hoạt
động của các trigger để làm sáng tỏ các lợi ích của việc sử dụng trigger đúng cách
cũng như các bất lợi mà việc sử dụng trigger một cách tùy tiện, không hợp ly
mang lại.
Trang 23
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
C HƯƠNG 8
Nội dung mà giảng viên cần chuyển tải đến sinh viên bao gồm:
- Nhắc lại các đặc điểm cơ bản của .Net: Do chương này trình bày sâu vào việc
khai thác và viết chương trình .net trong một cơ sở dữ liệu SQL Server, sinh
viên cần phải được làm quen với .net và ít nhất một ngôn ngữ lập trình trên
.net. Với đối tượng sinh viên chưa có khái niệm và chưa quen thuộc với .net,
giảng viên nên sắp xếp để có thể trình bày kỹ hơn trước khi giảng dạy chương
này.
- Giải thích về ADO.net: Ở đây, giảng viên cần giải thích rõ cơ chế thực hiện kết
nối cơ sở dữ liệu qua ADO.net. Theo mô hình này, phía ứng dụng mở kết nối
đến cơ sở dữ liệu, truy cập dữ liệu, lưu trữ dữ liệu trong bộ nhớ trong trong
quá trình thao tác với dữ liệu, gửi lại dữ liệu cập nhật và đóng kết nối. Giảng
viên cần làm rõ ưu nhược điểm của mô hình kết nối dữ liệu này. Tốt hơn, giảng
viên có thể đưa ra các tình huống, tổ chức thảo luận để tự sinh viên có thể
phát hiện ra các đặc điểm của mô hình.
- Trình bày về tích hợp CLR bên trong cơ sở dữ liệu SQL Server: Giảng viên cần
trình bày rõ mô hình ứng dụng mà trong đó ta có thể viết và khai thác CLR.
Phần trình bày này đòi hỏi phải đọc và hiểu nhiều mã chương trình. Nếu có
điều kiện, giảng viên nên kết hợp giữa trình bày ly thuyết, xem demo chương
trình và phân tích mã lệnh của chương trình demo.
- Từ các trình bày chi tiết về tích hợp CLR và các ví dụ, giảng viên hướng dẫn
sinh viên thảo luận để tìm ra ưu và nhược điểm của việc sử dụng mã lệnh CLR
Trang 24
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
và đưa ra các chỉ dẫn cho việc lựa chọn giữa sử dụng SQL CLR và T-SQL.
Trong giờ thực hành, học viên có thể sử dụng các demo đi kèm để tìm hiểu về
cách viết mã lệnh CLR trong các đối tượng cơ sở dữ liệu SQL Server. Đối với
chương này, phần bài tập có vai trò đặc biệt quan trọng. Đó là cách tốt nhất để
đánh giá mức độ tiếp thu và hiểu bài của sinh viên.
Nếu có điều kiện, giảng viên nên tổ chức các nhóm sinh viên, mỗi nhóm sẽ lựa
chọn một bài toán để giải quyết một cách trọn vẹn.
Trang 25
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
C HƯƠNG 9
Trang 26
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
dụng các phương thức khác nhau này trong kiểm tra các ràng buộc toàn vẹn
của dữ liệu.
Trong giờ thực hành, giảng viên hướng dẫn sinh viên thực hiện việc định nghĩa các
ràng buộc và thực hiện kiểm tra ràng buộc dữ liệu thông qua các ví dụ cụ thể trên
máy. Nếu có điều kiên, sinh viên nên chạy các ví dụ trong chế độ thực hiện từng bước
một để cố gắng giải thích nhận xét so sánh quá trình kiểm tra các ràng buộc dữ liệu
khác nhau thông qua các phương thức khác nhau.
Trang 27
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
C HƯƠNG 10
Trang 28
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
cách thức khai thác chúng để đảm bảo điều khiển truy nhập tương tranh.
- Nếu có điều kiện, giảng viên có thể đề cập đến một vài kỹ thuật khóa như khóa
2 pha, khóa với nhãn thời gian,… và phân tích so sánh các kỹ thuật này
Trong giờ thực hành, sinh viên cần viết các module (các thủ tục) và chạy thử để
xem tác động của các lệnh quản trị giao dịch và vai trò của khóa trong quản trị
giao dịch
Trang 29
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
C HƯƠNG 11
Nội dung mà giảng viên cần chuyển tải đến sinh viên bao gồm:
- Ý nghĩa của việc sử dụng chỉ mục trong truy nhập thông tin trên bộ nhớ ngoài:
Giảng viên nên lựa chọn một số ví dụ về tìm kiếm dữ liệu để minh họa rõ tác
dụng, vai trò của chỉ mục.
- Các hình thức tổ chức lưu trữ chỉ mục: Ở đây giảng viên cần giới thiệu chi tiết
các kiểu chỉ mục mà SQL Server hỗ trợ. Thông qua một vài câu truy vấn minh
họa, giảng viên làm cho sinh viên hiểu rõ chỉ mục được sử dụng như thế nào
khi thực hiện truy vấn và y nghĩa của nó. Nếu có thời gian, giảng viên nên yêu
cầu sinh viên thực hiên phân tích và tính toán độ phức tạp của từng kiểu tổ
chức chỉ mục. Thông qua đó, sinh viên sẽ chỉ ra kiểu chỉ mục nào phù hợp với
từng yêu cầu truy vấn khác nhau.
- Giảng viên cũng cần giới thiệu chi tiết cú pháp các câu lệnh tạo mới, thay đổi
và xóa chỉ mục trong cơ sở dữ liệu SQL Server, đặc biệt cần lưu giải thích các
lựa chọn với FILLFACTOR, PAD_INDEX
- Dựa trên phân tích về tác động của sử dụng chỉ mục trong truy nhập dữ liệu,
giảng viên làm rõ vai trò và y nghĩa của việc lựa chọn xây dựng hợp ly các chỉ
mục. Tuy nhiên, hiệu quả của chỉ mục lại phụ thuộc nhiều yếu tố, từ yêu cầu sử
dụng (cụ thể là các yêu cầu truy cập dữ liệu tù phía người dùng hay ứng dụng)
đến tổ chức lưu trữ chỉ mục này trên đĩa. SQL Server cung cấp một công cụ trợ
giúp tập hợp các thông số về hoạt động và sử dụng chỉ mục của hệ thống.
Người dùng có thể phân tích các thông số này cùng với các khuyến cáo mà
công cụ hỗ trợ của SQL Server đưa ra để điều chỉnh các định nghĩa chỉ mục
nhằm nâng cao hiệu năng hoạt động của hệ thống.
Trang 30
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
C HƯƠNG 12
Nội dung mà giảng viên cần chuyển tải đến sinh viên bao gồm:
- Giới thiệu về nguyên tắc của tối ưu hóa truy vấn: Tối ưu hóa truy vấn là một
vấn đề khá phức tạp. Với thời lượng 1 buổi học chúng ta khó có thể trình bày
tường tận về các kỹ thuật tối ưu hóa. Ở đây, giảng viên nên lựa chọn một số ví
dụ minh họa cụ thể để có thể làm nổi bật các “yếu tố” ảnh hưởng đến việc lựa
chọn chiến lược đánh giá truy vấn như: sự tồn tại của chỉ số trên một bảng nào
đó, kích thước các bảng dữ liệu, độ phân bố của giá trị một trường dữ liệu nào
đó,… Đây chính là các thông số mà công cụ giám sát (monitoring) của SQL
Server thu thập trong quá trinh thực thi truy vấn. Bên cạnh đó, giảng viên cũng
cần giới thiệu (nhắc lại) các phép toán đại số quan hệ cơ bản như phép chọn,
phép chiêu, kết nối, … và cây toán tử. Đây là những khái niệm hết sức cơ bản
để có thể hiểu được công việc của một bộ tối ưu hóa cũng như các nguyên tắc
cơ bản nhất của nó. Những kiến thức này là cần thiết để hiểu các kết quả kết
xuất của công cụ Tuning Advisor
- Giải thích khái niệm về workload và SQL Profiler, các thông số mà tiện tích của
SQL Server thu thập trong quá trình thực thi các truy vấn.
- SQL Server cung cấp các tiện ích cho phép người dùng có thể thao tác (ghi lại)
các thông tin trung gian trong quá trình xử ly thông qua việc lưu lại cây toán tử
trong bộ nhớ và các thông tin thống kê trong các lệnh STATISTICSTIME,
STATISTICSPROFILE, STATISTICSIO, SHOWPLAN_ALL, SHOWPLAN_TEXT
Output. Dựa trên ví dụ mẫu, giảng viên nên giải thích cho sinh viên nghĩa và
kết quả trả về từ các lệnh này, mối liên hệ với thực hiện truy vấn và những yếu
tố ảnh hưởng đến hiệu năng của thực thi truy vấn
- Bên cạnh đó, SQL Server còn cung cấp một số tiện ích đánh giá hiệu quả của
Trang 31
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
các định nghĩa chỉ mục. Dựa trên tần suất sử dụng các chỉ mục này, hệ thống
sẽ đưa các khuyến cáo về việc nên duy trì hay không nên duy trì các chỉ mục.
Giảng viên nên giải thích (nhắc lại) vai trò của chỉ mục trong việc nâng cao hiệu
quả của tìm kiếm.
Trang 32
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
C HƯƠNG 13
Nội dung mà giảng viên cần chuyển tải đến sinh viên bao gồm:
- Tổng quan về đánh giá hiệu năng cơ sở dữ liệu và tính khả chuyển của cơ sở
dữ liệu
- Tính tương thích giữa SQL Server 32 bit và 64-bit
- Các thành phần của SQL Server phiên bản 64 bit
- Lợi ích của môi trường 64-bit
- Một số vấn đề cần xem xét và triển khai với với SQL Server 64-bit
Trang 33
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
C HƯƠNG 14
Nội dung mà giảng viên cần chuyển tải đến sinh viên bao gồm:
- Tổng quan về SQL Server và các dịch vụ hỗ trợ thao tác và xử ly dữ liệu.Ở
đây, giảng viên nên làm rõ mối quan hệ và hỗ trợ lẫn nhau giữa các dịch vụ dữ
liệu dựa trên nền công nghệ của Microsoft.
- Dịch vụ phân tích: Giảng viên cần giới thiệu về mô hình dữ liêu đa chiều. Dựa
trên đó,giảng viên sẽ nêu lên yêu cầu đối với bài toán phân tích dữ liệu và giới
thiệu các tiện ích mà dịch vụ phân tích dữ liệu của Microsoft hỗ trợ
- Dịch vụ sinh báo cáo hỗ trợ phát triển việc sản sinh các báo cáo phức tạp trong
các ứng dụng
- Dịch vụ tích hợp cung cấp giải pháp tích hợp cho dữ liệu từ nhiều nguồn dữ
liệu khác nhau. Nếu có điều kiện, giảng viên cũng nên giải thích tổng quan về
các kỹ thuật tích hợp dữ liệu để sinh viên có được cái nhìn tổng thể hơn về vấn
đề này
Trang 34
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
C HƯƠNG 15
Nội dung mà giảng viên cần chuyển tải đến sinh viên bao gồm:
- Các đặc điểm của SQL Server 2008
- Hỗ trợ các kiểu dữ liệu mới trong SQL Server 2008
- Các nâng cấp về dịch vụ dữ liệu trong SQL Server 2008
- Các hỗ trợ mới cho truy cập và thao tác dữ liệu SQL Server 2008
Trang 35
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
Trang 36
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
P HỤ LỤC
Objective
Estimated time to complete this lab: 60 minutes
SQL CLR integration is one of the most controversial features of SQL Server. It does
have benefits in terms of simplifying conditional logic and performing complex
calculation and string manipulation. However, you should always try to use the T-SQL
SET-based equivalents of your queries before moving your code to .NET
Content
This lab consists of the following exercises:
Trang 37
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
Exercise 1:
Working with SQL Server Projects
In this exercise, you will learn how to work with Visual Studio and Microsoft SQL
Server in tandem by creating a SQL Server project, and a basic user-defined function
whose implementation is in managed code. Then you will build a Windows Form
application that displays the result returned from the user-defined function. The goal of
this exercise is to lay a foundation for subsequent exercises by introducing how Visual
Studio and Microsoft SQL Server work together.
Task 1: Creating a SQL Server Project
1. Start Visual Studio .
2. Select the File | New | Project menu command.
Visual Studio displays the Connection Properties dialog box (as shown in Figure 2).
Trang 38
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
References are shown in the Solution Explorer and become part of the Visual Studio
environment. As you open and close different projects, Database References are
saved so they can be reused.
Task 2: Creating a Database Reference
1. In the server name field, enter “localhost”.
2. Select Use Windows NT Integrated security.
6. In the Code Editor, before the closing bracket, type the following code:
[SqlFunction]
public static System.DateTime GetTodaysDate()
{
return System.DateTime.Today;
}
7. In the Solution Explorer, right-click test.sql and select Open.
Trang 39
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
select dbo.GetTodaysDate()
You can see that execution has stopped at the breakpoint. From here, you can step
through your routine, with full debugging capabilities.
3. Press F5.
4. In the Output window, in the Show output from drop-down list, select Database
Output.
You can see that the output from the user-defined function is displayed in the Output
window, allowing you to fully test your managed routines without leaving Visual
Studio .
Task 5: Accessing a User-Defined Function from a Windows Application
1. Select the File | Add | New Project menu command.
2. When prompted to save the existing project, select the C:\data folder.
3. In the Project Types pane, select Visual C#
4. In the Templates list, select Windows Application.
5. In the Name field, enter :"SqlServerProjectWinApp”. In the Location field, enter
"C:\data".
6. Click OK to dismiss the dialog box.
7. If the DataSource Fields window appears, you may close it.
8. From the Toolbox, drag a Button control to the design surface of Form1.
If the Toolbox window isn’t visible, select View | Toolbox to display it.
Note
9. Double-click Button1.
Trang 40
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
10. Scroll to the top of the code file, and enter the following Imports statement:
using System.Data.SqlClient;
11. In the Code Editor, type the following code within the Button1_Click event handler:
This code is very straightforward. It opens a connection to the database and executes
a simple command to display today’s date in a message box. Note that the code
required to call a managed code user-defined function is the same as the code to call
a T-SQL user-defined function.
12. In the Solution Explorer, right-click SqlServerProjectWinApp and select Set as
StartUp Project.
13. Select the Debug | Start menu command (or press F5).
14. Click Button1.
You can see that the user define function, implemented as managed code, is
accessed from the client exactly like a user-defined function written using T-SQL.
15. Click OK.
16. Close Form1.
17. Select the File | Close Solution menu command.
This exercise provided an introduction to working with Visual Studio and Microsoft
SQL Server . You also learned how to create SQL Server projects and how to write
user-defined functions with managed code.
Exercise 2:
Leveraging the .NET Framework in Database Development
In this exercise, you will learn how to leverage the .NET Framework when doing
database development. You will learn how to create a user-defined function that uses
regular expressions to validate input. In the past, this would have been difficult to
accomplish with only T-SQL. Validating data passed to a procedure or function is a
Trang 41
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
common database operation, and this exercise shows how easily this task can be
accomplished using managed code.
Task 1: Creating a User-Defined Function
1. Select the File | New | Project menu command.
2. Create a new C# project, selecting the SQL Server Project template.
3. In the Name field, enter “UserDefinedFunction”.
You will now create a user-defined function that validates a Postcode. Note that the
function is decorated with a [SqlFunction] attribute. This tells the compiler that the
function is a SQL Server user-defined function.
12. Delete the following two lines of code:
return System.Text.RegularExpressions.Regex.IsMatch(
Postcode, @"^\s*(\d{4})\s*$");
Regular expression support is just one area of additional functionality that the .NET
Framework provides. In fact, as a database developer, you now will have access to
literally thousands of pre-built classes that you can reuse in your database objects.
14. Select the File | Save All menu item to save the project. Save the project in the
C:\data folder.
Task 2: Calling a User-Defined Function from a Windows Application
Trang 42
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
You will now create a Windows Forms application that will test the IsValidPostcode
user-defined function.
4. In the Name field, enter “UserDefinedFunctionWinApp”.
5. In the Location field, enter "C:\data"
6. Click OK.
7. From the Toolbox, drag a TextBox control to the design surface of Form1.
The user will enter post codes into the TextBox control.
8. From the Toolbox, drag a Button control to the design surface of Form1.
9. Double-click button1.
10. In the Code Editor, type the following code within the button1_Click procedure:
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@Postcode", SqlDbType.VarChar);
cmd.Parameters["@Postcode"].Value = textBox1.Text;
This code opens a connection to the database, and executes a simple command to
call the user-defined function, passing in a value submitted by the user. This value will
then be compared to a regular expression to insure that it is a properly formatted post
code.
11. In the Code Editor, at the top of Form1.cs, type the following line of code:
Trang 43
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
using System.Data.SqlClient;
The application calls the user-defined function and displays a message box indicating
that the data is not a valid postcode.
17. Click OK.
18. In the text box, enter “1234”.
19. Click button1.
In this exercise, you learned how to create a user-defined function in managed code
using Visual Studio . By leveraging the Base Class Library in the .NET Framework,
you saw how you can use managed code to create powerful database objects.
Exercise 3:
Understanding Managed Code Permissions
In this exercise, you will understand how different permission sets can be applied to
assemblies running in Microsoft SQL Server . You will create a stored procedure that
uses the .NET Framework to write to an external file. By default, managed code within
Microsoft SQL Server is constrained so that it cannot access external resources.
Therefore, appropriate permission must be granted to the assembly in order for it to
write to the file. You will also learn how to load and unload assemblies manually using
DDL statements within SQL Server Management Studio.
Task 1: Creating a Stored Procedure that Writes to a File
1. Select the File | New | Project menu command.
Trang 44
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
6. In the Add Database Reference dialog box, select the existing reference to the
AdventureWorks database.
7. Click OK.
8. In the Solution Explorer, right-click Permissions and select Add | New Item from
the context menu.
9. In the Add New Item dialog box, select Stored Procedure.
10. Click Add.
11. In the Code Editor, change the existing subroutine declaration line to the following:
Note
Be careful to not delete the SqlProcedure attribute preceding the declaration.
Note:
You will now create the body of the stored procedure that writes to the file. The
procedure accepts two parameters: the file to write to, and the text to write.
12. Inside the WriteToFile subroutine, type the following lines of code:
This routine leverages the inherent functionality present in the .NET Base Class
Library to write to the file.
13. In the Solution Explorer, right-click Permissions and select Build.
14. Select the File | Save All menu item, and save the project.
Task 2: Introducing SQL Server Management Studio
For this exercise, you will use SQL Server Management Studio to load the assembly.
This will give you an opportunity to see how to load and unload assemblies manually
using DDL statements.
1. From the Windows Task Bar, navigate to Start | All Programs | Microsoft SQL
Server | SQL Server Management Studio.
2. When prompted to connect, ensure that the Server type value is set to SQL
Server, the Server name is set to localhost, and Authentication is set to
Windows Authentication. Click Connect.
Microsoft SQL Server introduces a brand new tool for database management named
SQL Server Management Studio. This serves as a replacement for Enterprise
Trang 45
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
After a few seconds, a message box displays indicating the connection has been
successful.
5. Click OK.
6. Click Save.
7. In Registered Servers, double-click localhost.
8. In the Object Explorer window, expand localhost | Databases |
AdventureWorks.
9. On the toolbar, click New Query, and then select New SQL Server Query.
Microsoft SQL Server displays the Connect to SQL Server dialog box.
10. In the Server instance field, enter “localhost”.
11. Ensure that the Authentication drop-down list has Windows Authentication
selected.
12. Click Connect.
USE AdventureWorks
Trang 46
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
Make sure that there are no line breaks in the folder name when typing the
Note code.
Running this DDL statement loads the Permissions.dll assembly into Microsoft SQL
Server . Up until now, you have been using Visual Studio to deploy all assemblies.
This exercise demonstrates how to load an assembly manually using DDL for two
reasons. First, loading the assembly automatically doesn’t allow you to configure the
permissions for an assembly, and the ability to configure a permission set will be
needed later in the exercise. Second, this gives you a great opportunity to see what is
going on under the covers.
4. Type the following lines of code:
Running this DDL statement will create an entry point for the managed stored
procedure in the assembly you just loaded.
7. Type the following line of code:
Running this T-SQL will cause an error indicating that you don't have permission to
write to the file you specified, with text looking something like this (the actual text may
be slightly different):
Trang 47
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
This error is expected. To ensure the security of the server, Microsoft SQL Server only
grants a limited set of permissions to an assembly. The file is a secured resource and
by default a stored procedure is not allowed to access secured resources. If an
assembly needs additional permissions, it must be specifically granted.
Task 5: Unloading an Assembly and Stored Procedure Manually Using DDL
Statements
1. Type the following two lines of code:
Trang 48
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
Make sure that there are no line breaks in the folder name when typing the
Note code.
Running this DDL statement loads the Permissions.dll assembly into Microsoft SQL
Server with the EXTERNAL_ACCESS permission set.
4. Type the following lines of code again (or highlight the ones you had typed
previously):
Trang 49
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
In this exercise, you began working with SQL Server Management Studio, part of
Microsoft SQL Server . You learned that .NET assemblies are loaded into Microsoft
SQL Server using a giver permission set. By default, assemblies are loaded with
limited privileges and cannot access external resources such files. To give an
assembly access to external resources, it must be loaded with a different additional
permission set such as EXTERNAL_ACCESS. You also learned how to manually load
and unload assemblies and stored procedures using DDL.
Exercise 4:
Creating User-Defined Aggregates
In this exercise, you will learn how to extend the list of installed aggregate functions by
creating new user-defined aggregates whose implementation is in managed code.
Task 1: Testing the User-Defined Aggregate Template
An aggregate function performs a calculation on a set of values and returns a single
value. T-SQL already comes with several built-in aggregate functions such as COUNT,
AVG and SUM. With CLR integration, you will now be able to create your own
aggregates using managed code. For this exercise, you will create a user-defined
aggregate that performs string concatenation.
1. In Visual Studio , select the File | New | Project menu command.
2. Create a new C# project, using the SQL Server Project template.
3. In the Name field, enter “UserDefinedAggregates”.
4. In the Location field, enter "C:\data".
5. Click OK.
6. In the Add Database Reference dialog box, select the existing reference to the
AdventureWorks database.
7. Click OK.
Trang 50
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
using System.Text;
The aggregate you are creating will be using the StringBuilder class of the
System.Text namespace. Importing System.Text will reduce typing.
13. Above the struct declaration, just below the serialization flag, you must indicate
that you will be performing the serialization yourself. To do this, add the following
attribute to the struct
14. In the UTSConcatenate class, before public void Init(), type the following code:
The StringBuilder object sb will be used to perform fast string concatenations. The
Boolean flag firstConcat indicates whether a concatenation is the first concatenation.
15. In the Init procedure, before the closing bracket, type the following code:
sb = new StringBuilder();
firstConcat = true;
This will initialize the StringBuilder object when the aggregate is invoked.
16. In the Accumulate procedure, before closing bracket, type the following code:
Trang 51
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
These lines of code perform the actual string concatenation. Accumulate is called for
each row in the result set from which values will be aggregated.
17. In the Merge procedure, before the closing bracket, type the following code:
Accumulate(Group.sb.ToString());
The Merge method is used by the query processor to merge another instance of this
aggregate class with another instance as part of partial computations.
18. In the Terminate procedure, delete the following lines of code:
19. In the Terminate() routine, before the closing bracket, type the following code:
return sb.ToString();
This line of code converts the StringBuilder object to a regular String object and
returns that String back to the calling code. Terminate is invoked when the entire result
set has been processed.
20. As the final step, we will need to add a Read and Write procedure required by the
IBinarySerialize interface. This is used to Serialize and De-Serialize the
StringBuilder object so that it can be passed as a parameter into the Merge
procedure.
Add the following procedures to the class before the closing bracket.
Trang 52
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
The completed UTSConcatenate class should now look like the following:
using System;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.Text;
[Serializable]
[SqlUserDefinedAggregate(Format.UserDefined, MaxByteSize = 8000)]
public struct UTSConcatenate : IBinarySerialize
{
private StringBuilder sb;
private bool firstConcat ;
Trang 53
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
Trang 54
SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội
4. Select the File | Exit menu command. If prompted to save changes, click No.
5. In Visual Studio , select the File | Close Solution menu command.
Trang 55