huong dan giang day sql2008

104
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ẠY DÀNH CHO GIẢNG VIÊN Vũ Tuyết Trinh [email protected] Đại học Bách khoa Hà Nội Trang 1

Upload: na480

Post on 13-Apr-2015

35 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Huong Dan Giang Day SQL2008

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: Huong Dan Giang Day SQL2008

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

Phương pháp giảng dạy

Khó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ú

Trang 2

Page 3: Huong Dan Giang Day SQL2008

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

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

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,

Trang 3

Page 4: Huong Dan Giang Day SQL2008

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

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 4

Page 5: Huong Dan Giang Day SQL2008

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 & Tools

1.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 Studio

Bà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, and Source Control

Bài thực hành Lab2

Bài tập : Exercise2

Video training

Trang 5

Page 6: Huong Dan Giang Day SQL2008

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

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

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

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

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

Trang 6

Page 7: Huong Dan Giang Day SQL2008

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ài giảng: Sesion 5: Securing Database and T-SQL for Data Control

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 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-Defined Functions

Bài thực hành Lab 6

Bài tập : Exercise 6

Video training

Trang 7

Page 8: Huong Dan Giang Day SQL2008

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

Chương 7: Trigger

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

Nội dung :

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 :

Trang 8

Page 9: Huong Dan Giang Day SQL2008

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

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

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

Trang 9

Page 10: Huong Dan Giang Day SQL2008

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

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 :

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 Performance

12.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-bit

Bà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

Trang 10

Page 11: Huong Dan Giang Day SQL2008

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

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

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 11

Page 12: Huong Dan Giang Day SQL2008

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

CHƯƠNG 1

Tổng quan về SQL Server 2008

Chương này nhằm mục đích giới thiệu khái quát (hoặc nhắc lại) các kiến thức cơ bản về cơ sở dữ liệu và giới thiệu tổng quan về 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

- 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 12

Page 13: Huong Dan Giang Day SQL2008

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 13

Page 14: Huong Dan Giang Day SQL2008

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

Trang 14

Page 15: Huong Dan Giang Day SQL2008

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

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 15

Page 16: Huong Dan Giang Day SQL2008

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ôn ngữ đị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ệ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 trong

Trang 16

Page 17: Huong Dan Giang Day SQL2008

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

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 17

Page 18: Huong Dan Giang Day SQL2008

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 định nghĩ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ên bả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â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 18

Page 19: Huong Dan Giang Day SQL2008

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 19

Page 20: Huong Dan Giang Day SQL2008

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ệu cũ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ảo mậ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ả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 20

Page 21: Huong Dan Giang Day SQL2008

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 21

Page 22: Huong Dan Giang Day SQL2008

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ả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 22

Page 23: Huong Dan Giang Day SQL2008

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ủ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 23

Page 24: Huong Dan Giang Day SQL2008

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 24

Page 25: Huong Dan Giang Day SQL2008

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, đảm bả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ạn chươ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, 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 25

Page 26: Huong Dan Giang Day SQL2008

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 26

Page 27: Huong Dan Giang Day SQL2008

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ác loạ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ộc khó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ừ SQL Server 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ệu có 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) để đảm bả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ĩa rà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ản tiế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 cho cá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ác chương trước. Ở đây, mặc dù chúng ta không đề cập lại tới nó, giảng viên cũ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 27

Page 28: Huong Dan Giang Day SQL2008

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 28

Page 29: Huong Dan Giang Day SQL2008

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. Giao dị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à ta có 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ển tiền, đặt tình huống các sự cố xảy ra trong quá trình thực thi giao dich và phát hiệ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 giao dị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 giao dị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 giao dich. 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ấu

trúc nhật ky (log) của SQL Server. Nhật ky hệ cơ sở dữ liệu có nhiệm vụ lưu giữ (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 point và 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âu

lệ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 ly

Trang 29

Page 30: Huong Dan Giang Day SQL2008

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

truy nhập tương tranh và khóa. Thông qua môt ví dụ cụ thể (như giao dịch ngâ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à 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 30

Page 31: Huong Dan Giang Day SQL2008

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á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 31

Page 32: Huong Dan Giang Day SQL2008

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

CHƯƠNG 12

Tối ưu hóa truy vấn

Mục đích của tối ưu hóa truy vấn là tìm ra một chiến lược “tốt nhất” để thực hiện một yêu cầu tìm kiếm đầu vào của người dùng. Tùy theo yêu cầu tìm kiếm, tổ chức dữ liệu và nội dung dữ liệu lưu trữ trong cơ sở dữ liệu, hệ thống sẽ dự đoán một chiến lược đánh giá câu truy vấn

Chương này giới thiệu về một công cụ của SQL Server cho phép theo dõi (monitoring) và trợ giúp quá trình tối ưu truy vấn cũng như đưa ra các thông tin cần thiết cho việc tối ưu thiết kế một 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 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 32

Page 33: Huong Dan Giang Day SQL2008

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 33

Page 34: Huong Dan Giang Day SQL2008

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 34

Page 35: Huong Dan Giang Day SQL2008

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ự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 35

Page 36: Huong Dan Giang Day SQL2008

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 2008

Chươ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 36

Page 37: Huong Dan Giang Day SQL2008

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

Tài liệu tham khảo

[1] Biil Hamilton. Programming SQL Server 2005. O’Reilly, 2006[2] Robert Vieira. Beginning Microsoft SQL Server 2008 Programming. Wrox, 2008.[3] Rodney Landrum, Shawn McGehee and Walter J. Voytec. Pro SQL Server 2008 Reporting Services, Apress, 2008[4] Robert D. Schneider and Darril Gibson. Microsoft SQL Server 2008 All-in-One Desk Reference For Dummies, 2008.[5] Thomas Rizzo, Adam Machanic, Robin Dewson, Rob Walters, Joseph Sack, Julian Skinner, Louis Davidson. Pro SQL Server 2005, Apress, 2006.[6] Rob Walters, Michael Coles, Robin Dewson, Fabio Claudio Ferracchiata, Jan D. Narkiewicz, and Robert Rae. Accelerated SQL Server, Apress, 2008.

Trang 37

Page 38: Huong Dan Giang Day SQL2008

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

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

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 38

Page 39: Huong Dan Giang Day SQL2008

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 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 boxA 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 39

Page 40: Huong Dan Giang Day SQL2008

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.

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 Item from 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 programming languages. Unlike a stored procedure, which can return only an integer or result set, a user-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 directly against 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 Studio automatically added an additional file to your project named test.sql. You can use the script in test.sql for debugging your code. This script performs the actions in the database 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 40

Page 41: Huong Dan Giang Day SQL2008

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 the database server. Visual Studio makes deploying an assembly to Microsoft SQL Server easy to do. Just by right-clicking the project name in the Solution Explorer and selecting the Deploy menu item, Visual Studio will automatically build and deploy your assembly to Microsoft SQL Server . The assembly is also deployed and debugged simply 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 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.

Trang 41

NoteNote

Page 42: Huong Dan Giang Day SQL2008

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

9. Double-click Button1.

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;Integrated Security=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 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

Trang 42

Page 43: Huong Dan Giang Day SQL2008

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

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

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 | New Item 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 following code:

public static bool IsValidPostcode(string Postcode)

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:

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

Trang 43

Page 44: Huong Dan Giang Day SQL2008

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

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

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

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

Trang 44

Page 45: Huong Dan Giang Day SQL2008

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

code.11. In the Code Editor, at the top of Form1.cs, type the following line of code:

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 indicating that 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 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.

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

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

Trang 45

Page 46: Huong Dan Giang Day SQL2008

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

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

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

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

Trang 46

Note:

Page 47: Huong Dan Giang Day SQL2008

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

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 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 is selected.

4. Click Test.

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.

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

Trang 47

Page 48: Huong Dan Giang Day SQL2008

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

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:

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

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

2. Select the above lines of code.

3. Press F5.

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:

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 stored procedure 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.

Trang 48

Note

Page 49: Huong Dan Giang Day SQL2008

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

9. Press F5.

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

Msg 6522, Level 16, State 1, Procedure WriteToFile, Line 0A .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 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:

DROP PROCEDURE WriteToFileDROP 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

Trang 49

Page 50: Huong Dan Giang Day SQL2008

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

1. Type the following lines of code:

ALTER DATABASE AdventureWorks SET TRUSTWORTHY ON

CREATE ASSEMBLY PermissionsFROM '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 the code.

An important distinction between this CREATE ASSEMBLY statement and the previous 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. When code in an assembly runs under the SAFE permission set, it can only do computation and data access within the server via the in-process managed provider.EXTERNAL_ACCESS is a code permission set that addresses scenarios where the code needs to access resources outside the server such as the files, network, registry and 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 SQL Server 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 50

Note

Page 51: Huong Dan Giang Day SQL2008

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 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 51

Page 52: Huong Dan Giang Day SQL2008

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

[SqlUserDefinedAggregate(Format.UserDefined, MaxByteSize = 8000)] You must also implement the IBinarySerialize interface so SQL knows how to retain the values in the Stringbuilder within the struct

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

Page 53: Huong Dan Giang Day SQL2008

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 this aggregate class with another instance as part of partial computations.18. In the Terminate procedure, delete the following lines of code:

’ Put your code here return 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 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 53

Page 54: Huong Dan Giang Day SQL2008

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 54

Page 55: Huong Dan Giang Day SQL2008

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 Function

1. 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 the following 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 55

Page 56: Huong Dan Giang Day SQL2008

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

Debur and Polish,Final Assembly,Finished Goods Storage,Frame Forming,Frame Welding,Metal Storage,Miscellaneous Storage,Paint,Paint Shop,Paint Storage,Sheet Metal 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 managed code.

Lab Summary

This lab showed you how Microsoft SQL Server and Visual Studio combine to provide 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-defined functions and aggregates using managed code with languages such as Visual Basic .NET and Visual C#. Although managed code does not replace T-SQL, the ability to use managed code is an important new tool in the database developer's toolbox.

Trang 56