55
SQL Server 2008 Trường Đại Hc Bách Khoa Ni TÀI LIU HƯỚNG DN GING DY DÀNH CHO GING VIÊN Vũ Tuyết Trinh [email protected] Đại hc Bách khoa Hà Ni  T rang 1

48680425 Teaching Guide SQL2008

Embed Size (px)

Citation preview

Page 1: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 1/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

TÀI LIỆU HƯỚNG DẪN GIẢNG DẠYDÀNH CHO GIẢNG VIÊN

Vũ Tuyết [email protected]

Đại học Bách khoa Hà Nội

 Trang 1

Page 2: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 2/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

Thông tin chung

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.

Mục đích của giáo trình là:

1. cung cấp cho sinh viên các kiến thức cơ bản về quản trị cơ sở dữ liệu SQL

Server,

2. giới thiệu môi trường phát triển ứng dụng với cơ sở dữ liệu SQL Server,

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ếtvớ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.

 

Phương pháp giảng dạyKhóa học này yêu cầu sinh viên phải được thực hành nhiều với các ví dụ và bài toán

thực tế để rèn luyện các kỹ năng chứ không chỉ dừng lại ở tìm hiểu ly thuyết. Giáo

viên nên tổ chức các buổi học lý thuyết và thực hành đan xen nhau, lý thuyết mà sinh

viên mới học có thể được thể hiện ngay bằng các bài thực hành. Điều này giúp cho

sinh viên nhớ và hiểu kỹ hơn những gì giáo viên truyền đạt, và cũng tăng sự hứng thú

trong việc học.

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

Page 3: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 3/55

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ảngviê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

Page 4: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 4/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

 Đề cương chi tiết

Giáo trình được chia làm 15 chương. Nội dung của mỗi chương sẽ được giảng dạy

trong một buổi ly thuyết và một buổi hướng dẫn thực hành và/hoặc làm bài tập.

Chương 1: Tổng quan về SQL Server 

Bài giảng : Session 1: Overview of SQL Server 

Nội dung : 1.1 Introduction to SQL Server Database

1.2 Relational Data Model

1.3 Data Access Architectures

1.4 SQL Server Services & Tools1.5 Transact-SQL Language

1.6 CLR integration in SQL Server 

1.7 Evolution of SQL Server 

Bài tập : Exercise1

Video training 

Chương 2: Bộ công cụ Management StudioBài giảng : Session 2: Management Studio

Nội dung :

2.1 Integrated Management Environement

2.2 Navigation

2.3 Administering Databases

2.4 Maintaining Databases

2.5 Writing and Executing Transact-SQL with Query Editor 2.6 Working with Templates, Solutions, Script Projects, andSource Control

Bài thực hành Lab2

Bài tập : Exercise2

Video training 

Chương 3: Thao tác dữ liệu với T-SQL

Bài giảng : Session 3: T-SQL for Data Manipilation

 Trang 4

Page 5: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 5/55

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 Collection3.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 

Chương 4: Định nghĩa dữ liệu với T-SQL

Bài giảng : Session 4: T-SQL for Data Definition

Nội dung :

4.1 Data Definition Language

4.2 Managing Databases

4.3 Data Types

4.4 Managing Tables

4.5 Managing other SQL Server Database Objects

Bài thực hành Lab 4

Bài tập : Exercise 4

Video training 

Chương 5: Bảo mật cơ sở dữ liệu SQL Server 

Bài giảng: Sesion 5: Securing Database and T-SQL for Data Control

 Trang 5

Page 6: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 6/55

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 permissions5.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 6: Thủ tục lưu trữ trong và hàm người dùng

Bài giảng: Session 6: Stored Procedures and User-Defined Functions

Nội dung :

6.1 Understanding the concepts of batch and batch processing

6.2 Control statements

6.3 Defining and assigning variables

6.4 Implementing stored procedures

6.5 Implementing User-Defined Functions

6.6 Difference between Stored Procedures and User-DefinedFunctions

Bài thực hành Lab 6

Bài tập : Exercise 6

Video training 

Chương 7: Trigger 

Bài giảng: Session 7: Implementing Triggers

Nội dung :

 Trang 6

Page 7: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 7/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

7.1 Introduction to Triggers

7.2 Creating, Altering, and Dropping Triggers

7.3 Working with Triggers

7.4 Uses of Trigger 7.5 Performance Consideration

Bài thực hành Lab 7

Bài tập : Exercise 7

Video training 

Chương 8: Lập trình SQL Server với .Net

Bài giảng: Session 8: Programming SQL Server with .Net

Nội dung :

8.1.Net Framework

8.2 ADO.net

8.3 CLR Integration

8.4 Enabling CLR Integration

8.5 CLR Integration: Pros & Cons

Bài thực hành Lab 8

Bài tập : Exercise 8

Video training 

Chương 9: Ràng buộc toàn vẹn

Bài giảng: Session 9: Implementing Data Integrity

Nội dung :

9.1 Types of Data Integrity

9.2 Enforcing Data Integrity

9.3 Defining Constraints

9.4 Types of Constraints

9.5 Disability Constraints

9.6 Using Defaults and Rules

9.7 Deciding Enforcement Method to Use

 Trang 7

Page 8: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 8/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

Bài thực hành Lab 9

Bài tập : Exercise 9

Video training 

Chương 10: Quản ly giao dịch và khóa

Bài giảng: Session 10: Managing Transactions and Locks

Nội dung :

10.1 Transaction

10.2 Review of Transaction Log in SQL Server 

10.3 Managing Transactions

10.4 Managing Locks

Understanding SQL Server Locking Architecture

Bài thực hành Lab 10

Bài tập : Exercise 10

Video training 

Chương 11: Định nghĩa và tạo chỉ mục

Bài giảng: Session 11: Planning and Creating Index

Nội dung :

11.1 Introdution to Indexes

11.2 Understanding Index Architecture

11.3 Retrieving Stored Data with SQL Server 

11.4 Defining Indexes

11.5 Creating Indexes

11.6 Maintaining Index

Bài thực hành Lab 11

Bài tập : Exercise 11

Video training 

Chương 12: Tối ưu hóa truy vấn

Bài giảng: Session 12: Optimizing Query Performance

Nội dung :

 Trang 8

Page 9: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 9/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

12.1 Introduction to the Query Optimizer 

12.2 Tuning Performance Using SQL Utilities

12.3 Using an Index to Cover a Query

12.4 Using Views to Optimize Performance12.5 Overriding the Query Optimizer 

12.6 Understanding Indexing Strategies and Guidelines

Bài thực hành Lab 12

Bài tập : Exercise 12

Video training 

Chương 13: Phiên bản SQL Server 64-bitBài giảng: Session 13: SQL Server 64 bit

Nội dung :

13.1 Overview of database performance and scalability

13.2 SQL Server 2005 Components

13.3 Advantages of 64-bit environment

13.4 Consideration for choosing SQL Server 64-bit

13.5 Deployment consideration

Video training 

Chương 14: Các dịch vụ dữ liệu

Bài giảng: Session 14: Data Platform Vision

Nội dung :

14.1 Overview of Microsoft Data Platform Vision

14.2 Integration Services

14.3 Data Analysis Services

14.4 Reporting Services

Bài thực hành Lab 14

Bài tập : Exercise 14

Video training 

 Trang 9

Page 10: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 10/55

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

Page 11: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 11/55

Page 12: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 12/55

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ểukỹ hơn về cấu trúc cơ sở dữ liệu quan hệ như cài đặt trong SQL Server. Các bàitậ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áiniệ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

Page 13: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 13/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

CHƯƠNG 2

Công cụ Management Studio

Chương này nhằm mục đích giới thiệu về công cụ Management Studio, một môi trường tích hợp cho phép truy nhập, cấu hình, quản trị và lập trình với SQL Server.

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ủabộ 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 chophé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ệuvề 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ôngbá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ảnly 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ốiliê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ểnmộ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ệpcá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

Page 14: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 14/55

Page 15: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 15/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

CHƯƠNG 3

Ngôn ngữ thao tác dữ liệu T-SQL

 Ngôn ngữ Transact-SQL (viết tắt T-SQL) của SQL Server cài đặt chuẩn AINSI SQL 92.Các câu lệnh của T-SQL được chia làm 3 loại là (i)ngôn ngữ thao tác dữ liệu, (ii) ngônngữ định nghĩa dữ liệu và (iii) ngôn ngữ điều khiển dữ liệu.

Chương này tập chung vào trình bày cú pháp các câu lệnh T-SQL để thao tác với một cơ sở dữ liệu đã định nghĩa và đặc biệt nhấn mạnh đến các điểm mới của ngôn ngữ càiđặt trong SQL Server 2008

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ệuvớ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êncũ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ảngviê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ợpsử 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àytheo cú pháp đã trình bày, giảng viên nên hướng dẫn cả cách sử dụng cácmẫ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ừngbả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ớicá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à kbả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

Page 16: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 16/55

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 SQLServer dưới dạng các dịch vụ gia tăng xong từ phiên bản 2008, tìm kiếm trênnội dung được tích hợp hoàn toàn bên trong mô-tơ cơ sở dữ liệu (databaseengine). 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ủacả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ànhviế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ìnhxây dựng các câu truy vấn SQL.

 Trang 16

Page 17: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 17/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

CHƯƠNG 4

Ngôn ngữ định nghĩa dữ liệu T-SQL

Chương này tập chung vào trình bày cú pháp các câu lệnh T-SQL cho địnhnghĩa dữ liệu và nhấn mạnh đến các kiểu dữ liệu mới được cài đặt trong phiênbản mới nhất SQL Server 2008.

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ânloạ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íchkỹ 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 địnhnghĩ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ộngcủa SQL Server so với cơ sở dữ liệu quan hệ truyền thống thông qua địnhnghĩa các kiểu dữ liệu người dùng. Sau đó, giảng viên sẽ tập trung vào giớithiê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 2kiểu dữ liệu ngày tháng (datetime và smalldatetime) hỗ trợ từ các phiên bảntrướ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ụngcá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ỗiliê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ựctế để 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ệchỗ 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

Page 18: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 18/55

Page 19: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 19/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

CHƯƠNG 5

Bảo mật cơ sở dữ liệu SQL Server

Bảo mật cơ sở dữ liệu nhằm mục đich kiểm tra tính hợp pháp của truy nhập dữ liệucũng như tính an toàn của thông tin. Dựa trên các công cụ quản trị hệ thống, người quản trị cơ sở dữ liệu phải đưa ra quyết định cho phép hay không cho phép người dùng truy cập và thao tác trên các đối tượng cơ sở dữ liệu.

Chương này tập trung vào trình bày các giải pháp bảo mật cơ sở dữ liệu trong 

SQL Server và thảo luận về phạm vi cũng như hiệu quả của các phương pháp bảomật được áp dụng.

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ảomậ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 SQLServer) 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ềncủa người dùng có thể được chia làm 4 loại như sau: (i) quyền truy nhập vàohệ quản trị cơ sở dữ liệu, (ii) quyền truy xuất cơ sở dữ liệu, (iii) quyền thựchiệ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ớimỗ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áncho 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ụngcá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ĩavà 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ư khungnhì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ữacác đối tượng trong một cơ sở dữ liệu SQL Server. Qua đó, giảng viên giải

 Trang 19

Page 20: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 20/55

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ềnngườ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ếtnố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ênnhắ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 ứngdụ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ĩacá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

Page 21: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 21/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

CHƯƠNG 6

Thủ tục lưu trữ trong và hàm người dùng

Thủ tục lưu trữ trong và hàm người dùng là những thành phần rất quan trọng trong cơ sở dữ liệu SQL Server. Chương này trình bày cách thức tạo (viết) và sử dụng thủ tục và hàm cũng như lợi ích của việc sử dụng các thủ tục/hàm này trong thao tác với 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:

- 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ảnnhấ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ácbả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ệutrê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ụclư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ớithiệ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ệcsử dụng chúng

 Trang 21

Page 22: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 22/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

CHƯƠ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ủatrigger 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ếtbắ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ốngsử 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ụngtrigger 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

Page 23: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 23/55

Page 24: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 24/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

CHƯƠNG 8

Lập trình SQL Server với .Net

.Net framework là một môi trường phát triển ứng dụng với một thư viện lập trình phong phú hỗ trợ cho xây dựng giao diện, kết nối cơ sở dữ liệu, mã hóa,…Trong .Net framework, CLR (Common language runtime) là thành phần quan trọng nhất, đảmbảo môi trường thực thi chương trình trên nền .net 

Chương này tập trung vào trình bày về lập trình SQL Server với .Net. Không chỉ dừng lại ở việc xây dựng các ứng dụng trên nền .net kết nối đến cơ sở dữ liệu thông qua ADO.net, SQL Server 2008 tích hợp CLR bên trong lõi hệ quản trị cơ sở dữ liệu cho phép viết các truy vấn dữ liệu, định nghĩa các kiểu dữ liệu mới và viết các đoạnchương trình xử ly bên trong SQL Server với một ngôn ngữ bất kỳ trên .net.

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, sinhviê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ươngnà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ếtnố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 trongquá 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ảngviê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ầntrì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ươngtrì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

Page 25: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 25/55

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ớichươ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ựachọn một bài toán để giải quyết một cách trọn vẹn.

 Trang 25

Page 26: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 26/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

CHƯƠNG 9

Ràng buộc toàn vẹn

Theo định nghĩa, cơ sở dữ liệu là một tập hợp thông tin có liên hệ logic với nhau. Một mặt, mối liên hệ logic này được quy định bởi ngữ nghĩa dữ liệu đưa vào trong cơ sở dữ liệu, mặt khác, mối liên hệ này được định nghĩa thông qua các ràng buộc về dữ liệu. Các ràng buộc này được dùng để kiểm tra khi có sự biến đổi từ phía dữ liệu như thêm, xóa, cập nhật.

Trong chương này, chúng ta sẽ tìm hiểu chi tiêt về ràng buộc dữ liệu và các phương  pháp đảm bảo ràng buộc toàn vẹn của dữ liệu.

.

Nội dung mà giảng viên cần chuyển tải đến sinh viên bao gồm:

- Các loại ràng buộc: Giảng viên cần tìm các ví dụ thực tế để minh họa về cácloại ràng buộc như ràng buộc về miền giá trị, ràng buộc khóa chính, ràng buộckhóa ngoài, ràng buộc duy nhất, ràng buộc kiểm tra, ràng buộc giá trị mặc định,ràng buộc theo quy tắc hay quy luật.

- Giảng viên cần nhấn mạnh vào 2 loại ràng buộc mới chỉ được hỗ trợ từ SQLServer 2005 là (i) cascade update và (ii) cascade delete. Cascade update dùngđể kiểm tra ràng buộc khi cập nhật thông tin để xem sự thay đổi trong dữ liệucó vi phạm vào các ràng buộc đã định nghĩa hay không. Cascade delete đểkiểm tra ràng buộc khi xóa thông tin và cập nhật thông tin (nếu cần) để đảmbảo những thay đổi mới trong cơ sở dữ liệu không vi phạm vào các ràng buộcđã định nghĩa trước đó.

- Ràng buộc quy luật và ràng buộc giá trị ngầm định là một số kiểu định nghĩaràng buộc dữ liệu. Ở đây, giảng viên cũng nên thận trọng đưa ra khuyến cáo

của Microsoft về việc ràng buộc quy luật sẽ không được hỗ trợ trong phiên bảntiếp theo của SQL Server 2008 (theo tài liệu trực tuyến về SQL Server 2008).Vì vậy, chúng ta cũng nên thận trong khi sử dụng định nghĩa ràng buộc này chocác ứng dụng đang và sẽ phát triển.

- Triggers và thủ tục lưu trữ trong là các kỹ thuật dã được tìm hiểu từ cácchương trước. Ở đây, mặc dù chúng ta không đề cập lại tới nó, giảng viêncũng nên có những liên hệ cụ thể về việc sử dụng nó trong việc kiểm tra vàđảm bảo các ràng buộc toàn vẹn về dữ liệu.

-  Điểm quan trọng nhất trong chương này là so sánh các phương thức đảm bảo

ràng buộc toàn vẹn dữ liệu. Từ đó, ta có thể đưa các khuyến cáo về việc sử

 Trang 26

Page 27: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 27/55

Page 28: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 28/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

CHƯƠNG 10

Quản trị giao dịch và khóa

Chương này trình bày về vấn đề quản trị giao dịch trong các hệ cơ sở dữ liệu. Giaodịch được coi là đơn vị thực hiện nhỏ nhất trong hệ 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ề giao dịch: Giảng viên nên sử dụng các ví dụ thực tế để minh họa

cho khái niệm giao dịch và tại sao phải quản ly giao dịch. Ví dụ điển hình mà tacó thể sử dụng ở đây là một giao dịch chuyển tiền giữa 2 tài khoản ngân hàng.Giáo viên giải thích các hành động cụ thể để có thể thực hiện giao dịch chuyểntiền, đặt tình huống các sự cố xảy ra trong quá trình thực thi giao dich và pháthiện các vấn đề về dữ liệu xảy ra nếu không có một cơ chế quản ly thích hợp.

- Nếu có điều kiện, giảng viên nên trình bày cho tiết tính chất ACID của giaodịch, nghĩa của việc đảm bảo các tính chất này trong quản ly thực thi các giaodịch.

- Thông qua ví dụ minh họa, giảng viên nên để thời gian cho sinh viên tìm hiểu

và thảo luận về các giải pháp để đảm bảo hoạt động thông suốt của các giaodich. Từ đó, ta xác định các phép toán cơ bản trong thực thi giao dich nhưBEGIN, COMMIT, ROLLBACK, SAVE

- Nếu có điều kiện, giảng viên nên dành thời gian để giới thiệu chi tiết về cấutrúc nhật ky (log) của SQL Server. Nhật ky hệ cơ sở dữ liệu có nhiệm vụ lưugiữ (trên đĩa cứng) tất cả các thông tin có liên quan đến thay đổi như DELETE,UPDATE, INSERT. Giảng viên cần giải thích các thời điểm cần tạo check pointvà ghi thông tin ghi nhật ky.

- Lỗi và phục hồi lỗi cũng là một vấn đề cần được đề cập đến. Nếu có thời gian,

giảng viên nên giải thích chi tiết về các kỹ thuật này. Đây chính là kỹ thuật cơbản trong quản trị giao dịch.

- Thiết lập và khai thác các giao dịch không tường minh (không sử dụng với câulệnh BEGIN TRAN, COMMIT TRAN, ROLLBACK TRAN) cũng nên được đềcập đến trong chương này.

- Khi nói đến quản trị giao dịch, người ta không thể không nói đến vấn đề quản lytruy nhập tương tranh và khóa. Thông qua môt ví dụ cụ thể (như giao dịchngân hàng), giảng viên cần làm rõ khái niệm về truy nhập tương tranh, các vấn

đề gặp phải và giới thiệu về kỹ thuật khóa như một giải pháp cơ bản cho vấnđề này. Dựa trên các tình huống cụ thế, giảng viên giới thiệu các loại khóa và

 Trang 28

Page 29: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 29/55

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óa2 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

Page 30: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 30/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

CHƯƠNG 11

Lập kế hoạch và tạo chỉ mục

Chương này trình bày về việc xác định và tạo chỉ mục trên các bảng dữ liệu. Chỉ mục là cách tổ chức lưu trữ dữ liệu trên bộ nhớ ngoài nhằm cải thiện tốc độ truy nhập dữ liệu. Chương này tập trung vào tìm hiểu cách tổ chức và khai thác chỉ mục trong hệquản trị cơ sở dữ liệu SQL Server.

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ácdụ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ếtcác kiểu chỉ mục mà SQL Server hỗ trợ. Thông qua một vài câu truy vấn minhhọa, giảng viên làm cho sinh viên hiểu rõ chỉ mục được sử dụng như thế nàokhi 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ớitừ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 đổivà 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áclự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ụcnhằm nâng cao hiệu năng hoạt động của hệ thống.

 Trang 30

Page 31: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 31/55

Page 32: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 32/55

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ốngsẽ đư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ệuquả của tìm kiếm.

 Trang 32

Page 33: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 33/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

CHƯƠNG 13

Phiên bản SQL Server 64 bit

Chương này trình bày tổng quan về phiên bản 64 bit:lợi ich và triển vọng.

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

Page 34: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 34/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

CHƯƠNG 14

Các dịch vụ dữ liệu

Hệ quản trị SQL Server không chỉ cung cấp các công cụ cho phép lưu trữ và quản trị dữ liệu. Nó còn bao gồm các dịch vụ xử ly dữ liệu. Trong chương này, chúng ta đềcập đến 3 dịch vụ dữ liệu là dịch vụ tích hợp, dịch vụ phân tích và dịch vụ lập báo cáo.

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ựatrê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ớithiệ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 trongcá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

Page 35: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 35/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

CHƯƠNG 15

Các đặc điểm mới của SQL Server 2008Chươngnày trình bày về một số đặc điểm của phiên bản 2008 từ góc nhìn của người 

 phát triển ứng dụng.

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

Page 36: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 36/55

Page 37: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 37/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

PHỤ LỤC

Bài thực hành (Mẫu)

Programming SQL Server with .NetHands-on Lab

ObjectiveEstimated 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

 After completing this lab you will be able to:

• Work with SQL Server Projects

• Work with the in-process managed provider 

• Leverage the .NET Framework in database development

• Understand managed code permissions

• Creating user-defined aggregates

Content

This lab consists of the following exercises:

• Working with SQL Server Projects

• Leveraging the .NET Framework in Database Development

• Understanding Managed Code Permissions

• Creating User-Defined Aggregates

 Trang 37

Page 38: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 38/55

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 SQLServer 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 Formapplication 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 VisualStudio 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 New Project dialog:

.1 In the Project Types pane, indicate that you want to create a Visual C# project.

.2 In the Templates pane, select SQL Server Project.

.3 In the Name field, enter “SqlServerProject”.

.4 In the Location field, enter "C:\SQL Labs\User Projects".

.5 Click OK.

Visual Studio displays the Connection Properties dialog box (as shown in Figure 2).

Figure 2: The Connection Properties dialog box A SQL Server project is associated with a specific database. This dialog box lets you

select the database to which you will be deploying managed code. Database

 Trang 38

Page 39: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 39/55

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 Studioenvironment. As you open and close different projects, Database References aresaved 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.

3. In the database field, enter “AdventureWorks”.

4. Click OK to dismiss the Add Database Reference dialog box.

Task 3: Using a User-Defined Function Template

1. In the Solution Explorer, right-click SqlServerProject and select Add | New Itemfrom the context menu.

2. In the Add New Item dialog box, click User-Defined Function.3. Click Add.

In SQL Server, a user-defined function is similar to a function in other programminglanguages. Unlike a stored procedure, which can return only an integer or result set, auser-defined function can return a variety of data types. You also can treat a user-defined function similarly to a table or view, issuing SELECT statements directlyagainst the function. In prior versions of SQL Server, you could only create a user-defined function using T-SQL. With Microsoft SQL Server , you can now create user-defined functions using managed code. Visual Studio includes a pre-defined template

to use in your SQL Server Projects to make the process easier.4. In the Solution Explorer , open the TestScripts folder, right-click test.sql and select

Open.

Notice that when you used the User-Defined Function template, Visual Studioautomatically added an additional file to your project named test.sql. You can use thescript in test.sql for debugging your code. This script performs the actions in thedatabase that are required to start and test your database object.5. In the Solution Explorer, right-click Function1.cs and select View Code.

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.

8. Change the first line to:

 Trang 39

Page 40: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 40/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

select dbo.GetTodaysDate()

Task 4: Deploying a .NET Assembly to SQL Server 1. In the Solution Explorer , right-click SqlServerProject and select Deploy.

Before an assembly can be used by a database, it must first be deployed to thedatabase server. Visual Studio makes deploying an assembly to Microsoft SQLServer easy to do. Just by right-clicking the project name in the Solution Explorer andselecting the Deploy menu item, Visual Studio will automatically build and deploy your assembly to Microsoft SQL Server . The assembly is also deployed and debuggedsimply by pressing F5.2. Once the deployment process has completed, press F5.

If execution stops on an ALTER PROCEDURE statement, press F5 again.

You can see that execution has stopped at the breakpoint. From here, you can stepthrough your routine, with full debugging capabilities.3. Press F5.

4. In the Output window, in the Show output from drop-down list, select DatabaseOutput.

You can see that the output from the user-defined function is displayed in the Outputwindow, allowing you to fully test your managed routines without leaving VisualStudio .

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.

9. Double-click Button1.

 Trang 40

Note

Note

Page 41: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 41/55

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:

string connectionString = "Data Source=localhost;IntegratedSecurity=SSPI;Initial Catalog=AdventureWorks";

using (SqlConnection conn = new SqlConnection(connectionString)){

conn.Open();SqlCommand cmd =

new SqlCommand("SELECT dbo.GetTodaysDate()", conn);Object result = cmd.ExecuteScalar();DateTime d = (DateTime) result;MessageBox.Show(d.ToString());

}

This code is very straightforward. It opens a connection to the database and executesa simple command to display today’s date in a message box. Note that the coderequired to call a managed code user-defined function is the same as the code to calla 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, isaccessed 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 MicrosoftSQL Server . You also learned how to create SQL Server projects and how to writeuser-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 doingdatabase 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 toaccomplish with only T-SQL. Validating data passed to a procedure or function is a

 Trang 41

Page 42: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 42/55

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 beaccomplished 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”.

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.

8. In the Solution Explorer, right-click UserDefinedFunction and select Add | NewItem from the context menu.

9. In the Add New Item dialog, click User-Defined Function.

10. Click Add.

11. In the Code Editor , change the existing function declaration line to the followingcode:

public static bool IsValidPostcode(string Postcode)

You will now create a user-defined function that validates a Postcode. Note that thefunction is decorated with a [SqlFunction] attribute. This tells the compiler that thefunction is a SQL Server user-defined function.12.Delete the following two lines of code:

// Put your code herereturn "Hello";

13.Inside IsValidPostcode, type the following line 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 .NETFramework provides. In fact, as a database developer, you now will have access toliterally 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

Page 43: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 43/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

1. Select the File | Add | New Project menu command.

2. Ensure that Visual C# is still selected in the Project Types pane.

3. In the Templates list, select Windows Application.

You will now create a Windows Forms application that will test the IsValidPostcodeuser-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:

string connectionString = "Data Source=localhost;" +"Integrated Security=SSPI;" +"Initial Catalog=AdventureWorks";

using (SqlConnection conn =new SqlConnection(connectionString))

{conn.Open();

SqlCommand cmd = new SqlCommand("SELECT dbo.IsValidPostcode(@Postcode)", conn);

cmd.CommandType = CommandType.Text;cmd.Parameters.Add("@Postcode", SqlDbType.VarChar);cmd.Parameters["@Postcode"].Value = textBox1.Text;

Object result = cmd.ExecuteScalar();MessageBox.Show(result.ToString());

}

This code opens a connection to the database, and executes a simple command tocall the user-defined function, passing in a value submitted by the user. This value willthen be compared to a regular expression to insure that it is a properly formatted postcode.11. In the Code Editor , at the top of Form1.cs, type the following line of code:

 Trang 43

Page 44: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 44/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

using System.Data.SqlClient;

12. In the Solution Explorer, right-click UserDefinedFunctionWinApp and select Set

as StartUp Project.13. Select the File | Save All menu command.

14. Select the Debug | Start menu command (or press F5).

15. In the text box enter “555-5555”.

To test IsValidPostcode, you will first enter data that is invalid.16. Click Button1.

The application calls the user-defined function and displays a message box indicatingthat the data is not a valid postcode.

17. Click OK.18. In the text box, enter “1234”.

19. Click button1.

Because “1234” is a valid post code, the code displays True.

20. Click OK.

21. Close Form1.

22. Select the File | Close Solution menu command.

In this exercise, you learned how to create a user-defined function in managed codeusing 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 toassemblies running in Microsoft SQL Server . You will create a stored procedure thatuses the .NET Framework to write to an external file. By default, managed code withinMicrosoft SQL Server is constrained so that it cannot access external resources.Therefore, appropriate permission must be granted to the assembly in order for it towrite to the file. You will also learn how to load and unload assemblies manually usingDDL 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.

2. Using C#, create a new SQL Server project..

3. In the Name field, enter “Permissions”.

4. In the Location field, enter “C:\data”

5. Click OK.

 Trang 44

Page 45: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 45/55

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 fromthe 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:

public static void WriteToFile( string fileName, string message)

Note

Be careful to not delete the SqlProcedure attribute preceding the declaration.

You will now create the body of the stored procedure that writes to the file. Theprocedure accepts two parameters: the file to write to, and the text to write.12. Inside the WriteToFile subroutine, type the following lines of code:

using (System.IO.StreamWriter sw = new System.IO.StreamWriter(fileName,true))

{ sw.WriteLine(message);}

This routine leverages the inherent functionality present in the .NET Base ClassLibrary 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 manuallyusing 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 SQLServer , the Server name is set to localhost, and Authentication is set toWindows Authentication. Click Connect.

Microsoft SQL Server introduces a brand new tool for database management namedSQL Server Management Studio. This serves as a replacement for Enterprise

 Trang 45

Note:

Page 46: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 46/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

Manager and the Query Analyzer.3. Select the View | Registered Servers menu command to ensure that the

Registered Servers window is visible.

The Registered Servers window displays all the SQL Servers that have been

registered.4. Select the View | Object Explorer menu command to ensure that the Object

Explorer window is visible.

The Object Explorer window displays various objects for a particular server.Specifically, it will show databases and their associated diagrams, tables, views,stored procedures, triggers, types, etc.

Task 3: Registering a Server in SQL Server Management Studio

1. In Registered Servers, right-click Microsoft SQL Servers and select New |Server Registration. 

2. In the Server  instance field, enter “localhost”.

3. In the Authentication drop-down list, ensure that Windows Authentication isselected.

4. Click Test.

 After a few seconds, a message box displays indicating the connection has beensuccessful.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.

13. In the query window, type the following line of code:

USE AdventureWorks

14. Press F5.

Task 4: Loading an Assembly Manually using DDL Statements

1. Type the following lines of code into the query window:

 Trang 46

Page 47: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 47/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

CREATE ASSEMBLY PermissionsFROM 'C:\data\Permissions\Permissions\bin\Permissions.dll'

Make sure that there are no line breaks in the folder name when typing thecode.

2. Select the above lines of code.

3. Press F5.

Running this DDL statement loads the Permissions.dll assembly into Microsoft SQLServer . 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 tworeasons. First, loading the assembly automatically doesn’t allow you to configure thepermissions for an assembly, and the ability to configure a permission set will beneeded later in the exercise. Second, this gives you a great opportunity to see what isgoing on under the covers.4. Type the following lines of code:

CREATE PROCEDURE WriteToFile@FILENAME NVARCHAR(256),@MESSAGE NVARCHAR(4000) ASEXTERNAL NAME Permissions.[StoredProcedures].WriteToFile

5. Select the above lines of code.

6. Press F5.

Running this DDL statement will create an entry point for the managed storedprocedure in the assembly you just loaded.7. Type the following line of code:

EXEC WriteToFile 'c:\test.txt', 'This is a test'

8. Select the above line of code.

9. Press F5.

Running this T-SQL will cause an error indicating that you don't have permission towrite to the file you specified, with text looking something like this (the actual text maybe slightly different):

 Trang 47

Note

Page 48: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 48/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

Msg 6522, Level 16, State 1, Procedure WriteToFile, Line 0 A .NET Framework error occurred during execution of user defined routine or aggregate 'WriteToFile':

System.Security.SecurityException: Request for the permission of type'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.System.Security.SecurityException:

at System.Security.CodeAccessSecurityEngine.Check(Object demand,StackCrawlMark& stackMark, Boolean isPermSet)

at System.Security.CodeAccessPermission.Demand()at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32

rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options,SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)

at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access,FileShare share, Int32 bufferSize, FileOptions options)

at System.IO.StreamWriter.CreateFile(String path, Boolean append)at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding,

Int32 bufferSize)at System.IO.StreamWriter..ctor(String path, Boolean append)at StoredProcedures.WriteToFile(String fileName, String message)

This error is expected. To ensure the security of the server, Microsoft SQL Server onlygrants a limited set of permissions to an assembly. The file is a secured resource andby default a stored procedure is not allowed to access secured resources. If anassembly needs additional permissions, it must be specifically granted.

Task 5: Unloading an Assembly and Stored Procedure Manually Using DDLStatements

1. Type the following two lines of code:

DROP PROCEDURE WriteToFile

DROP ASSEMBLY Permissions

2. Select the above lines of code.

3. Press F5.

This will unload the stored procedure and assembly.

Task 6: Loading an Assembly with a Specific Permission Set

1. Type the following lines of code:

 Trang 48

Page 49: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 49/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

 ALTER DATABASE AdventureWorks SET TRUSTWORTHY ON

CREATE ASSEMBLY Permissions

FROM 'C:\data\Permissions\Permissions\bin\Permissions.dll'WITH PERMISSION_SET = EXTERNAL_ACCESS

Make sure that there are no line breaks in the folder name when typing thecode.

 An important distinction between this CREATE ASSEMBLY statement and theprevious one is that this time you’re specifying the permission set to be used by the

assembly. There are three different permission sets: SAFE, EXTERNAL_ACCESS,and UNSAFE.SAFE is the default permission set and works for the majority of scenarios. Whencode in an assembly runs under the SAFE permission set, it can only do computationand data access within the server via the in-process managed provider.EXTERNAL_ACCESS is a code permission set that addresses scenarios where thecode needs to access resources outside the server such as the files, network, registryand environment variables.UNSAFE code permission is for those situations where an assembly is not verifiably

safe or requires additional access to restricted resources, such as the Win32 API.2. Highlight the above lines of code so that they are selected.

3. Press F5.

Running this DDL statement loads the Permissions.dll assembly into Microsoft SQLServer with the EXTERNAL_ACCESS permission set.4. Type the following lines of code again (or highlight the ones you had typed

previously):

CREATE PROCEDURE WriteToFile

@FILENAME NVARCHAR(256),@MESSAGE NVARCHAR(4000) ASEXTERNAL NAME [Permissions].[StoredProcedures].WriteToFile

5. Select the above lines of code.

6. Press F5.

7. Type the following line of code:

 Trang 49

Note

Page 50: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 50/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

EXEC WriteToFile 'c:\test.txt', 'This is a test'

8. Highlight the above line of code so that it is selected.

9. Press F5.This time, the command is completed successfully.10. In SQL Server Management Studio, select the File | Exit menu command. If 

prompted to save your changes, click No.

Task 7: Viewing the File

1. Open Windows Explorer and find the file you just created.

2. Double-click the file to load it into NotePad.

You can see that the message was written from the managed code into this file.

3. Close Notepad.

In this exercise, you began working with SQL Server Management Studio, part of Microsoft SQL Server . You learned that .NET assemblies are loaded into MicrosoftSQL Server using a giver permission set. By default, assemblies are loaded withlimited privileges and cannot access external resources such files. To give anassembly access to external resources, it must be loaded with a different additionalpermission set such as EXTERNAL_ACCESS. You also learned how to manually loadand unload assemblies and stored procedures using DDL.

Exercise 4:

Creating User-Defined AggregatesIn this exercise, you will learn how to extend the list of installed aggregate functions bycreating 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 singlevalue. 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 ownaggregates using managed code. For this exercise, you will create a user-definedaggregate 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

Page 51: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 51/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

8. In the Solution Explorer , right-click UserDefinedAggregates and select Add |New Item.

9. In the Add New Item dialog box, click Aggregate.

10.Type UTSConcatenate as the name

11. Click Add.

12. In the Code Editor , at the top of the code window, type the following code:

using System.Text; The aggregate you are creating will be using the StringBuilder class of theSystem.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 followingattribute to the struct

[SqlUserDefinedAggregate(Format.UserDefined, MaxByteSize = 8000)] 

You must also implement the IBinarySerialize interface so SQLknows how to retain the values in the Stringbuilder within thestruct

public struct UTSConcatenate : IBinarySerialize 

14. In the UTSConcatenate class, before public void Init(), type the following code:

private StringBuilder sb;private bool firstConcat ;

The StringBuilder object sb will be used to perform fast string concatenations. TheBoolean 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

Page 52: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 52/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

public void Accumulate(SqlString value){

if (firstConcat)

{sb.Append(value);firstConcat = false;}else{

sb.Append(",");sb.Append(value);

}}

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 thisaggregate class with another instance as part of partial computations.

18. In the Terminate procedure, delete the following lines of code:

’ Put your code herereturn new SqlString("");

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 andreturns that String back to the calling code. Terminate is invoked when the entire resultset 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 theStringBuilder object so that it can be passed as a parameter into the Mergeprocedure. Add the following procedures to the class before the closing bracket.

 Trang 52

Page 53: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 53/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

public void Read(System.IO.BinaryReader r){

sb = new StringBuilder(r.ReadString());}

public void Write(System.IO.BinaryWriter w){

w.Write(sb.ToString());}

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 ;

public void Init(){sb = new StringBuilder();firstConcat = true;

}

public void Accumulate(SqlString value){

if (firstConcat){

sb.Append(value);firstConcat = false;}else{

sb.Append(",");sb.Append(value);

}}

 Trang 53

Page 54: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 54/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

public void Merge(UTSConcatenate Group){

Accumulate(Group.sb.ToString());

}

public SqlString Terminate(){

return sb.ToString();}

public void Read(System.IO.BinaryReader r){

sb = new StringBuilder(r.ReadString());

}

public void Write(System.IO.BinaryWriter w){

w.Write(sb.ToString());}

}

21. In the Solution Explorer , right-click UserDefinedAggregates and select Rebuild.

Task 4: Deploying a User-Defined Function1. Switch to SQL Server Management Studio.

2. Switch to Visual Studio .

3. In the Solution Explorer , right-click UserDefinedAggregates, and select Deploy.

Task 5: Testing the User-Defined Aggregate

1. In Microsoft SQL Server Management Studio, in the existing query, type thefollowing lines of code:

SELECT dbo.UTSConcatenate(Name) FROM production.location

2. Select the above lines of code.

3. Press F5.

The results should be:

 Trang 54

Page 55: 48680425 Teaching Guide SQL2008

7/18/2019 48680425 Teaching Guide SQL2008

http://slidepdf.com/reader/full/48680425-teaching-guide-sql2008 55/55

SQL Server 2008 Trường Đại Học Bách Khoa Hà Nội

Debur and Polish,Final Assembly,Finished Goods Storage,Frame Forming,FrameWelding,Metal Storage,Miscellaneous Storage,Paint,Paint Shop,Paint Storage,SheetMetal Racks,Specialized Paint,Subassembly,Tool Crib

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.

This exercise demonstrated how to create a user-defined aggregate using managedcode.

Lab Summary

This lab showed you how Microsoft SQL Server and Visual Studio combine toprovide a new level of power and flexibility when developing database and data-centric applications. You learned that the .NET Common Language Runtime is now

hosted in Microsoft SQL Server so that you can stored procedures, user-definedfunctions and aggregates using managed code with languages such as VisualBasic .NET and Visual C#. Although managed code does not replace T-SQL, theability to use managed code is an important new tool in the database developer'stoolbox.