Giáo trình SQL Server 2008
Trình bày được các khái niệm cơ bản SQL Server 2008
Mô tả được các thành phần và kiến trúc SQL Server 2008.
Thực hành được cách tạo cơ sở dữ liệu, tạo bảng, tạo kết nối giữa các bảng
Thực hành được sao lưu và phục hồi cơ sở dữ liệu.
X
ON REBUILD | REORGANIZE | DISABLE
VÍ Dụ: chỉnh sửa Index dung Rebuild hoặc Disable
- Free Download
Trang 140
H 7.22 Chỉnh sửa Index
Lược đồ XML (XML Schema)
XML Schema mô tả cấu trúc của tài liệu dạng XML; sử dụng cú pháp của XML
Định nghĩa các thành phần, thuộc tính có trong tài liệu.
Định nghĩa kiểu dữ liệu của các thành phần bên trong.
Xác định và sắp xếp các thuộc tính con.
Xác định thành phần nào rỗng hoặc có thể thêm dữ liệu vào đó.
Cú pháp:
Tạo Schema:
CREATE XML SCHEMA COLLECTION
AS Expression
- Free Download
Trang 141
Chỉnh sửa Schema:
ALTER XML SCHEMA COLLECTION
Xóa Schema:
DROP XML SCHEMA COLLECTION
Ví dụ: Tạo 1 schema tên ContactSchemaCollection, sau đó tạo bảng Contacts và them dữ liệu
vào bảng theo cấu trúc Schema vửa tạo
H 7.23 Tạo Schema ContactSchemaCollection
- Free Download
Trang 142
Tạo bảng Contacts gồm 1 cột Contact
Sau khi đã tạo bảng, chúng ta có thể thêm dữ liệu
Do ta đã định nghĩa trước các thành phần của XML trong Schema, nên khi ta thêm dữ liệu
không phù hợp, SQL Server sẽ kiểm tra với Schema và báo lỗi
Để tìm hiểu rõ hơn về XML Schema cũng như các cách sử dụng khác của Schema, các bạn có
thể tham khảo tại:
- Free Download
Trang 143
Chương 8 .NET Integration & SQL Server
Common Language Runtime (CLR) cung cấp các phương thức quản lý mã nguồn như
tích hợp các ngôn ngữ, bảo mật bằng mã truy cập, quản lý vòng đời các đối tượng, gỡ
lỗi… Đối với người dùng SQL Server và các nhà phát triển ứng dụng, tích hợp CLR (CLR
Integration) trong .Net nghĩa là ta có thể viết và lưu trữ Store Procedure, triggers,
user-defined types, user-defined function bằng cách sử dụng bất kỳ .Net Framework.
Lưu ý rằng, CLR Integration không dùng trong Visual Studio 2003 (Framework 1.0) .
Những lợi ích chính của CLR Integration:
Mô hình lập trình tốt hơn: các nhà phát triển có thể tận dụng sức mạnh của thư
viện .Net Framework, trong đó cung cấp một tập hợp rộng rãi các class để sử dụng
nhanh chóng và hiệu quả nhằm giải quyết các vấn đề lập trình.
Cải thiện tính an toàn và bảo mật: quản lý các mã trong môi trường CLR đượ tổ
chức trong cơ sở dữ liệu. SQL Server cung cấp một sự thay thế an toàn và bảo mật
hơn các phiên bản trước.
Khả năng xác định kiểu dữ liệu: User-defined type và user-defined aggregates
là 2 đối tượng quản lý dữ liệu mới, mở rộng khả năng lưu trữ và truy vấn SQL
Server.
Kết thúc chương này các bạn có thể :
Trình bày được các khái niệm về .NET Integration với SQL Server 20008
Trình bày và xây dựng được CLR Store Procedure
Trình bày và xây dựng được CLR User-Defined Function
Trình bày và xây dựng CLR User-Defined Type
8.1 Giới thiệu về .NET Integration & SQL Server 2008
- Free Download
Trang 144
CLR Store Procedure được sử dụng như các phương thức dạng public static. Các
phương thức static có thể khai báo dạng void hay trả về một giá trị kiểu interger.
Nếu khai báo dạng void, giá trị trả về là 0.
Giá trị trả về của Store Procedure có thể là tham số, bảng kết quả hoặc một thông
báo.
Màn hình làm việc với CLR Store Procedure trong Visual Studio 2008
H 8.1 Giao diện viết Store Procedure
8.2 Xây dựng CLR Store Procedure
- Free Download
Trang 145
Để tìm hiểu rõ hơn về cách tạo một CLR Store Procedure Integration, chúng ta sẽ
tạo môt store procedure tên GetProducts trong CSDL Northwind theo các bước sau :
Bước 1: mở VS 2008 chọn File -> New Project.
Chọn Database -> SQL Server Project
Đặt tên Project: SampleCLRStoreProcedure
H 8.2 Tạo Project mới
- Free Download
Trang 146
Sau khi tạo Project, ta chọn Database cần làm việc; trong ví dụ này ta chọn
Northwind, VS 2008 mở cửa sổ chính của project.
H 8.3 Cửa sổ chính Project
- Free Download
Trang 147
Bước 2: Thêm vào project 1 class dùng để tạo store procedure
Right click tên Project -> Add -> Store Procedure
H 8.3 Thêm Store Procedure
- Free Download
Trang 148
Bươc 4: Đặt tên Store Procedure là GetProducts
H 8.4 Tạo store GetProducts
Bước 5: Chúng ta tạo store GetProducts có 1 tham số truyền vào kiểu int để nhận
giá trị CategoryID do người dùng nhập vào
- Free Download
Trang 149
H 8.5 Viết code Store GetProducts
Chú ý: kiểu dữ liệu dùng cho @CategoryID là SqlInt32
Bước 6: Deploy Store GetProducts
Right click Project -> Deploy
- Free Download
Trang 150
H 8.6 Deploy store
Nếu kết nối được với Server, Visual Studio sẽ thông báo Deploy Succeeded. Nếu
thất bại sẽ xuất thông báo trong mục Output: Deploy Failed.
Bước 7 : Để thực thi store procedure vừa tạo chúng ta sẽ thực hiện trong SQL
Server 2008.
Chúng ta mở SQL Server Management Studio -> chọn New Query
- Free Download
Trang 151
H 8.7 Thực thi Store
User-Defined Function có thể nhận tham số, thực hiện tính toán, các thao tác khác và
trả về một giá trị nào đó.
Tương tự T-SQL Function, CLR User-Defined Function có 2 loại Function:
Scalar function trả về một giá trị đơn.
Table Valued function: trả về một tập hợp các dòng dữ liệu.
8.3 Xây dựng CLR User-Defined Function
- Free Download
Trang 152
Ví dụ: Chúng ta sẽ tạo một User-defined Function dùng kiển tra Email có hợp lệ hay
không để hiểu rõ hơn về cách tạo và sử dụng Function.
Bước 1: Add ->User-Defined Function
H 8.8 Thêm mới Function
Bước 2 : Viết code cho hàm kiểm tra Email tên ValidateEmail
- Free Download
Trang 153
H 8.9 Nội dung hàm ValidateEmail
Bước 3 :Nhấn phải chuột | Deploy thì VS.Net sẽ cài đặt hàm này vào SQL Server tự
động .
Lưu ý : Khi deploy thì VS.Net sẽ tạo một tập tin *.dll trong thư mục Bin\Debug để
chúng ta có thể cài đặt trên cơ cở dữ liệu khác bằng cách sử dụng các lệnh T-SQL .
- Free Download
Trang 154
H 8.10 Deploy hàm vừa tạo
Bước 4 : Đăng ký thư viện .dll để sử dụng trong SQL Server 2008 ( đăng ký bằng
tay sử dụng lệnh T-SQL ). Nếu chúng ta đã chọn Deploy ở bước 3 thì có thể sang
bước 5.
H 8.11 Đăng ký dll
Bước 5 : Trong trường hợp ta không sử dụng tên hàm có sẳn trong .Net , ta có thể tạo
hàm mới tên RegEx trong SQL Server 2008 dựa trên hàm đã tạo trong .Net.
Sau khi tạo hàm, chúng ta có thể gọi hàm này trong lệnh SELECT
- Free Download
Trang 155
H 8.12 Tạo và gọi hàm RegEx
SQL Server 2008 cho phép ta tạo những đối tượng cơ sở dữ liệu trong .NET Framework
CLR. Chúng ta có thể dùng User-Defined Tpyes (UDTs) để tạo ra các kiểu dữ liệu mới
để lưu trữ các đối tượng của CLR trong SQL Server. UDTs có thể chứa nhiều thành
phần và có nhiều thuộc tính khác với những kiểu dữ liệu sẵn có trong SQL Server.
Để xây dựng UDTs, ta thực hiện tương tự như CLR User-defined Function:
Viết code và biên dịch thư viện tạo UDTs trong .NET.
Đăng ký thư viện vừa tạo trong SQL Server (CREATE ASSEMBLY)
Tạo UDTs trong SQL Server
Tạo bảng, tham số sử dụng UDTs.
8.4 Xây dựng CLR User-Defined Types
- Free Download
Trang 156
Ví dụ : Tạo một User-defined Types dùng để kiểm tra Mật khẩu nhập vào trong CSDL
Bước 1: Thêm class dạng User-defined Type vào project ( tên project là ThuVien)
H 8.13 Thêm class User-defined Type
Bước 2 : Viết code cho User-defined vừa thêm vào
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.Text.RegularExpressions;
- Free Download
Trang 157
using System.IO;
[Serializable]
[SqlUserDefinedType(Format.UserDefined,
IsByteOrdered=true, MaxByteSize=8000)]
public struct MatKhau : INullable, IBinarySerialize
{
private bool m_Null;
public string m_ChuoiMK;
public override string ToString()
{
return m_ChuoiMK;
}
public bool IsNull
{
get
{
return m_Null;
}
}
public static MatKhau Null
{
get
{
MatKhau matKhau = new MatKhau();
matKhau.m_Null = true;
return matKhau;
}
}
public static MatKhau Parse(SqlString chuoi)
{
if (chuoi.IsNull)
{
return Null;
}
- Free Download
Trang 158
MatKhau matKhau = new MatKhau();
bool hopLe = Regex.IsMatch(chuoi.ToString(), "[a-zA-Z]{4,}[0-9]");
if (hopLe == true)
{
matKhau.m_ChuoiMK = chuoi.ToString();
return matKhau;
}
throw new SqlTypeException("Mat khau khong hop le.");
}
public void Write(BinaryWriter writer)
{
writer.Write(m_ChuoiMK);
}
public void Read(BinaryReader reader)
{
m_ChuoiMK = reader.ReadString();
}
}
Bước 3 : Build và Deploy User-defined Type tương tự như phần CLR User-defined
Function.
Bước 4: Đăng ký .dll vào SQL Server
- Free Download
Trang 159
H 8.14 Đăng ký dll
Bước 5 : Tạo bản Users và thêm 3 dòng dữ liệu, trong đó có dòng dữ liệu đầu tiên
không đúng với kiểu MAT_KHAU mà ta đã định nghĩa là phải bao gồm cả chữ lẫn số.
Trong ví dụ này , chúng ta tạo ra một kiểu dữ liệu tên MAT_KHAU có dạng 4 ký tự
đầu là chữ cái sau đó là các số nguyên từ 0-9
- Free Download
Trang 160
H 8.15 Thông báo lỗi sau khi nhập dữ liệu
Theo như thông báo lỗi ở trên thì chỉ có 2 dòng dữ liệu 2 và 3 được thêm vào bảng
Users, dòng đầu tiên không đúng với kiểu dữ liệu.
H 8.16 Liệt kê dữ liệu vừa thêm
- Free Download
Trang 161
Dữ liệu trong cột MyPassword đã dược chuyển sang dạng Binary trong câu lệnh
public void Write(BinaryWriter writer)
{
writer.Write(m_ChuoiMK);
}
Để có thể thấy được mật khẩu ta có thể sử dụng hàm Cast trong câu lệnh Select
Select UserName,Cast(MyPassword as varchar) as MyPassword from Users
Kết quả
Trên đây là 2 ví dụ đơn giản về User-defined Function và User-defined Type, để tìm
hiểu chi tiết hơn về CLR Integration trong SQL Server 2008. Chúng ta sử dụng kỹ
thuật này để viết các hàm phức tạp bằng cách sử dụng các ngôn ngữ .Net ( C#,
VB.Net,.. ) thay vì phải viết bằng các lệnh T-SQL .
Các bạn có thể tham khảo theo Book Online 2008 và MSDN của Microsoft.
- Free Download
File đính kèm:
Giáo trình SQL Server 2008.pdf

