Tải bản đầy đủ (.doc) (7 trang)

ThuVienIT.oRg - Các Tài liệu SQL Server-15-2-2012 pot

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (152.15 KB, 7 trang )

Các Tài liệu SQL Server
Bắt đầu in từ : Cổng Thư Viện IT Số Việt Nam
Mục lục: Câu Lạc Bộ Webmaster & Lập Trình Viên
Tên diễn đàn: Cơ Sở Dữ Liệu
Forum Discription: Bao gồm Access , MySQL
URL:
Ngày In: 15/02/2012 lúc 15:27
Chủ đề : Các Tài liệu SQL Server
được đăng bởi: VanTrung87hvt
Đề tài: Các Tài liệu SQL Server
Ngày đăng bài: 16/01/2009 lúc 12:45
SQL Server 2005 Books Online" miễn phí
Ngày 20/07/2006, Microsoft đã chính thức ra mắt ấn bản cập nhật cho bộ sách tự học nổi
tiếng của hãng là "SQL Server Books Online". Ấn bản này được cập nhật và bổ sung cho
người tự tìm hiểu sản phẩm CSDL Microsoft SQL Server 2005.
Một số thông tin về cuốn ebook này:
• File Name: SqlServer2K5_BOL_Jul2006.msi
Version: 9.00.2510
Date Published: 7/20/2006
Language: English
Download Size: 123.1 MB
• />29C1E0B6585F&displaylang=en - Download tại đây
Các cuốn sách khác:
- Tài liệu SQL Server 2000 -
Tiếng Việt
-
SQL Server 2005 Administrator's Companion
Còn sau đây là các tài liệu dạy SQL bằng clip video:
/>_What_is_a_database.wmv - SQL Server 2005 Beginer (Phần 1)
/>_More_about_Column_Data_Types_and_Other_Properties.wmv - SQL Server 2005 Beginer
(Phần 2)


/>_Understanding_Database_Tables_and_Records.wmv - Understanding Database Tables and
Records
/>_Designing_Relational_Database_Tables.wmv - Designing Relational Database Tables
Chúc các bạn học tập tốt!

======================================
Link hữu ích cho lập trình viên và nhân viên văn phòng
======================================
- Convert C# to VB.NET
- Convert VB.NET to C#
- Convert Fonts

======================================

Trả lời:
được đăng bởi: vanthanhtt8
Ngày đăng bài: 19/02/2009 lúc 10:29
Bài viết SQL:
GIAO TÁC
(Transaction).<?: prefix = o ns = "urn:schemas-
microsoft-com:office:office" />
• Khái niệm.
• Tính chất của giao tác.
• Các lệnh trong giao tác.
• Khóa (Lock).
• Các mức độ của tính cô lập.
1. Khái niệm.
• Giao tác là một đõn vị làm việc trong đó tất cả các phát biểu phải đýợc xử lý thành công
hoặc không có phát biểu nào đýợc xử lý.


• Các giao tác có thể là giao tác ngầm hoặc giao tác khai báo rỏ ràng.

• Giao tác khai báo rỏ ràng bằng cách dùng các lệnh :
BEGIN TRAN : khai báo điểm bắt đầu của giao tác.
COMMIT TRAN : chấp nhận giao tác thành công.
ROLLBACK TRAN : trở lại trạng thái bắt đầu của giao tác
(giao tác thất bại).

• Giao tác ngầm : hệ QTCSDL tự động tạo giao tác và tự động chấp nhận nếu giao tác
thành công hoặc quay lui nếu giao tác thất bại.
2. Tính chất của giao tác.
Bốn tính chất của giao tác, gọi là ACID
(Atomicity, Consistency, Isolation, and Durability)
1. Atomicity (nguyên tử):
Mọi phát biểu trong giao tác phải đýợc thực hiện hoặc không có phát biểu nào đýợc thực hiện.
2. Consistency (nhất quán):
Khi kết thúc, một giao tác luôn luôn đặt dữ liệu ở trạng thái nhất quán, nghĩa là các luật và tính
toán vẹn dữ liệu phải đýợc bảo toàn.
3. Isolation (cô lập):
Một giao tác không bị ảnh hýởng hoặc xung đột bởi bất kỳ một giao tác nào khác.
4. Durability (bền vững):
Một giao tác bảo đảm hoàn tất mọi công việc bất chấp các trục trặc hệ thống.
3. Các lệnh trong giao tác.
• Một giao tác bắt đầu bằng lệnh BEGIN TRAN và kết thúc thành công bởi lệnh COMMIT
TRAN hoặc quay trở lại trạng thái bắt đầu giao tác bởi lệnh ROLLBACK TRAN.
• SQL Server dùng biến @@TRANCOUNT để đếm và quản lý các giao tác.
• Các giao tác có thể lồng với nhau.

1. Lệnh BEGIN TRANSACTION.
Chức năng : bắt đầu một giao tác, SQL Server tăng giá trị

biến @@TRANCOUNT lên 1.

Cú pháp :

BEGIN TRAN[SACTION] tên_giao_tác |@tên_biến_giao_tác
Thí dụ :
BEGIN TRAN T1
UPDATE table1
BEGIN TRAN M2
UPDATE table2
SELECT * from table1
COMMIT TRAN M2
UPDATE table3
COMMIT TRAN T1
2. Lệnh COMMIT TRANSACTION.
Chức năng : kết thúc thành công một giao tác.

Nếu biến @@TRANCOUNT có giá trị 1 thì SQL Server khôi phục lại trạng thái đầu của dữ liệu và gán
giá trị @@TRANCOUNT bằng 0.
Ngýợc lại SQL Server giảm giá trị biến @@TRANCOUNT xuống 1.

Cú pháp :
COMMIT TRAN[SACTION] tên_giao_tác | @tên_biến_giao_tác

Thí dụ 1 :
BEGIN TRANSACTION
USE pubs
GO
UPDATE titles SET advance = advance * 1.25
WHERE ytd_sales > 8000

GO
COMMIT
GO
Thí dụ 2 : dùng các giao tác lồng nhau
CREATE TABLE Test (ColA INT PRIMARY KEY, ColB CHAR(3))
GO
BEGIN TRANSACTION T1 biến @@TRANCOUNT = 1.
GO
INSERT INTO Test VALUES (1, 'aaa')
GO
BEGIN TRANSACTION T2 biến @@TRANCOUNT = 2.
GO
INSERT INTO Test VALUES (2, 'bbb')
GO
BEGIN TRANSACTION T3 biến @@TRANCOUNT = 3.
GO
INSERT INTO Test VALUES (3, 'ccc')
GO
COMMIT TRANSACTION T3 biến @@TRANCOUNT = 2.
GO
COMMIT TRANSACTION T2 biến @@TRANCOUNT = 1.
GO
COMMIT TRANSACTION T1 biến @@TRANCOUNT = 0.
GO
3. Lệnh ROLLBACK TRANSACTION.
Chức năng : quay ngýợc lại trạng thái bắt đầu của giao tác hoặc
điểm lýu trong giao tác.

Cú pháp :
ROLLBACK TRAN[SACTION] tên_giao_tác | @tên_biến_giao_tác

|tên_điểm_lýu | @ tên_biến_điểm_lýu.


4. Lệnh SAVE TRANSACTION.

Chức năng : tạo điểm lýu (save point) trong giao tác để có thể
quay ngýợc lại trạng thái của dữ liệu tại điểm lýu trong giao
tác.

Cú pháp :
SAVE TRAN[SACTION] tên_điểm_lýu | @tên_biến_điểm_lýu
Thí dụ :
BEGIN TRANSACTION royaltychange

UPDATE titleauthor SET royaltyper=65 FROM titleauthor, titles
WHERE royaltyper = 75
AND titleauthor.title_id = titles.title_id
AND title = 'The Gourmet Microwave'
UPDATE titleauthor SET royaltyper=35 FROM titleauthor, titles
WHERE royaltyper = 25
AND titleauthor.title_id = titles.title_id
AND title = 'The Gourmet Microwave‘

SAVE TRANSACTION percentchanged

UPDATE titles SET price = price * 1.1 WHERE title = 'The Gourmet Microwave'
SELECT (price*royalty*ytd_sales)*royaltyper FROM titles, titleauthor
WHERE title = 'The Gourmet Microwave'
AND titles.title_id = titleauthor.title_id


ROLLBACK TRANSACTION percentchanged

COMMIT TRANSACTION
5. Biến @@TRANCOUNT.
Chức năng : cho số (số nguyên) các giao tác đang hoạt động.
Cú pháp : @@TRANCOUNT
Ghi chú :
Lệnh BEGIN TRAN : tăng giá trị biến @@TRANCOUNT lên 1.
Lệnh ROLLBACK TRAN : gán giá trị biến @@TRANCOUNT về 0.
Lệnh ROLLBACK TRAN tên_điểm_lýu không thay đổi biến @@TRANCOUNT.
Lệnh COMMIT TRAN giảm giá trị biến @@TRANCOUNT xuống 1.

Thí dụ :
BEGIN TRANSACTION
UPDATE authors SET au_lname = upper(au_lname)
WHERE au_lname = 'White'
IF @@ROWCOUNT = 2
COMMIT TRAN
IF @@TRANCOUNT > 0
BEGIN
PRINT 'A transaction needs to be rolled back'
ROLLBACK TRAN
END
4. Khóa (Lock).
Khóa là cõ chế mà HQTCSDL dùng để kiểm soát và hạn chế việc nhiều ngýời dùng cùng một lúc cập nhật
vào dữ liệu.
Khóa có thể tác dụng lên nhiều đối týợng khác nhau trong CSDL nhý dòng, khóa, trang, chỉ mục, bảng,
hay toàn bộ CSDL với nhiều mức độ khác nhau.
Thí dụ : một bảng nhỏ có thể đýợc khóa toàn bộ bảng, trong khi một bảng lớn có thể chỉ khóa một số
dòng.

Một số kiểu khóa
Có một số kiểu khóa nhý : shared, exclusive, update,

Khóa dùng chung (Shared locks) : dùng cho các thao tác chỉ đọc
dữ liệu (lệnh SELECT). Không có giao tác nào khác có thể
hiệu chỉnh dữ liệu trong thời gian khóa có tác dụng. Khóa
dùng chung sẽ kết thúc ngay khi dữ liệu đýợc đọc xong.

Khóa độc quyền (Exclusive locks) : không cho phép giao tác
khác có thể đọc hoặc cập nhật dữ liệu bị khóa.

Khóa cập nhật (Update locks) : dùng để cập nhật dữ liệu và cho
phép các giao tác khác có thể đọc dữ liệu.
Khóa chết (dead lock)
Khóa chết (deadlock) là tình huống có hai hay nhiều tác vụ khóa lẩn nhau.
Thí dụ : giao tác A đã mở độc quyền (exclusive) bảng T1 và đang chờ mở độc quyền bảng T2, cùng lúc đó
giao tác B cũng đã mở độc quyền bảng T2 và đang chờ mở độc quyền bảng T1. Kết quả là hai giao
tác trên chờ vô tận.
SQL Server có thuật toán để phát hiện các khóa chết và rollback các giao tác.

Xem mục các mục “Undestanding and Avoiding blocking” và ‘Minimizing deadlocks” trong Book Online
Thí dụ : một cách hạn chế khóa chết.
5. Mức độ của tính cô lập (Isolation level)
• Hệ QLCSDL dùng cõ chế khoá để đảm bảo mọi giao tác hoàn toàn độc lập với các giao
tác khác mặc dù các giao tác có thể đýợc thực hiện bất cứ lúc nào.
• Tính tuần tự (serialization) là một tính chất quan trọng để đảm bảo tính cô lặp của các
giao tác. Tuy nhiên nhiều giao tác có thể đýợc thực hiện không hoàn toàn độc lập với nhau.
• Mức độ chấp nhận các xung đột của giao tác đýợc gọi là mức độ của tính cô lặp. Mức độ
cô lặp thấp cho phép tăng khả năng thực hiện đồng thời các giao tác nhýng phải trả giá cho tính đúng
đắn của dữ liệu. Ngýợc lại, mức độ của tính cô lặp cao bảo đảm tính đúng đắn của dữ liệu nhýng ngăn

cản các xử lý dữ liệu đồng thời.
Các mức độ của tính cô lập (từ thấp đến cao).
READ UNCOMMITTED : là mức độ cô lặp thấp nhất, dữ liệu
không đýợc khóa và có thể thay đổi trýớc khi kết thúc giao tác.
READ COMMITTED : là mức độ cô lặp mặc định của SQL
Server, dữ liệu đýợc khóa dùng chung (shared lock), nhýng có
thể thay đổi trýớc khi kết thúc giao tác.
REPEATABLE READ : cõ chế khóa xảy ra trên toàn bộ dữ
liệu đýợc dùng trong truy vấn, ngăn cản ngýời sử dụng khác
cập nhật dữ liệu nhýng cho phép ngýời sử dụng khác thêm các
record mới vào dữ liệu (phantom rows) và các lần đọc sau sẽ
có các dữ liệu đó.
SERIALIZABLE : là mức độ cô lặp cao nhất, cõ chế khóa trên
tập dữ liệu, ngăn cản ngýời sử dụng khác cập nhật hay thêm
dòng vào dữ liệu cho tới khi giao tác kết thúc.
Cài đặt mức độ tính cô lập.
SET TRANSACTION ISOLATION LEVEL
{ READ COMMITTED | READ UNCOMMITTED | REPEATABLE READ | SERIALIZABLE }
Thí dụ :
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
GO
BEGIN TRANSACTION
SELECT * FROM publishers
SELECT * FROM authors

COMMIT TRANSACTION
Các hành vi do các mức độ cô lập gây ra.



×