Luận văn Tìm hiểu các chức năng hỗ trợ lập trình trên môi trường mạng của SQL Server và Visual Basic – viết chương trình quản lý mua bán tại cửa hàng kim khí điện máy

MỤC LỤC

LỜI GIỚI THIỆU

MỤC LỤC

NHẬN XÉT CỦA CÔNG TY TNHH RỒNG TIẾN

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN

PHẦN A: XÂY DỰNG BÀI TOÁN

PHẦN MỞ ĐẦU : GIỚI THIỆU ĐỀ TÀI

I. Tên đề tài .2

II. Phạm vi đề tài .2

III. Tính thực tiễn của đề tài .2

PHẦN I : TÌM HIỂU HIỆN TRẠNG VÀ YÊN CẦU THỰC TẾ.

I. Giới thiệu công ty TNHH thiết bị Rồng Tiến .3

II. Sơ đồ các phòng ban tại công ty .4

III. Sự cần thiết của tin học hóa 5

IV. Mô tả bài toán .6

V. Mục tiêu của đề tài .7

VI. Các mẫu biểu .7

PHẦN II : PHÂN TÍCH HỆ THỐNG.

I. Xây dựng mô hình.

1. Các bước phân tích và xây dựng mô hình dữ liệu

mức quan niệm (ERD) 13

2. Mô tả thực thể và mối kết hợp giữa các thực thể 18

II. Xây dựng mô hình DFD .28

PHẦN III : THIẾT KẾ HỆ THỐNG

I. Xây dựng mô hình quan hệ .34

1. Mô tả các quan hệ .34

2. Mô tả chi tiết các thuộc tính của từng quan hệ .35

3. Phụ thuộc hàm 41

4. Đánh giá các dạng chuẩn của quan hệ .42

5. Mô hình dữ liệu mức vật lý 43

6. Ràng buộc toàn vẹn 44

1) Ràng buộc toàn vẹn trên một quan hệ 44

2) Ràng buộc toàn vẹn trên nhiều quan hệ .48

II. Đặc tả qúa trình xử lý 54

PHẦN IV : CÀI ĐẶT HỆ THỐNG

I. Cài đặt trên sql_server .61

II. Các form mẫu của chương trình 78

 

PHẦN B: TÌM HIỂU SQL_SERVER & VB

PHẦN I : TÌM HIỂU CÁC CHỨC NĂNG HỔ TRỢ MẠNG CỦA

SQL_SERVER

CHƯƠNG I : TÌM HIỂU CÔNG CỤ TỐI ƯU HÓA TRUY VẤN CỦA

MICROSOFT CỦA SQL SERVER.

I. Tổng quan về tối ưu hóa hiệu qủa của cơ sở dữ liệu trong

SQL Server 87

II. Điều chỉnh truy vấn. . .88

III. Phân tích câu truy vấn .92

IV. Các khái niệm trong việc điều chỉnh truy vấn phức tạp .93

CHƯƠNG 2 : TRANSACTION

I. Giới thiệu về giao dịch trong SQL Server 98

II. Việc chỉ rõ & ràng buộc transaction trong SQL Server. 98

III. Giao dịch phân bố 102

IV. Những tích chất của giao dịch .105

V. Kiến trúc giao dịch .108

VI. Lock .110

VII. Share .118

CHƯƠNG III : NHÂN BẢN TRONG SQL SERVER.

I. Kiến trúc nhân bản trong SQL Server 122

II. Mục tiêu chính trong nhân bản 122

III. Kiến trúc nhân bản .124

IV. Tác nhân .125

V. Các loại tác nhân .126

VI. Nhân bản giao dịch .128

VII. Nhân bản kết hợp 135

CHƯƠNG 4 : TOPOLOGY.

I. Thiết kế Topology .140

II. Các kiểu Topology .140

 

PHẦN II: TÌM HIỂU CÁC CHỨC NĂNG HỔ TRỢ MẠNG CỦA

VISUAL BASIC

CHƯƠNG I : Các chức năng lập trình của Visual Basic6.0

I. Xây dựng ứng dụng Internet trên Visual Basic 6.0 146

II. Xem lại Internet và HTML .146

III. Visual Basic và sự phát triển Internet .147

IV. Cách tạo ứng dụng IIS sử dụng WebClass .154

V. WebClass và file. Asp .157

VI. Cách Debug và triển khai ứng dụng WebClass .161

VII. Sự tích hợp giữa Visaul basic và những công cụ Web khác.162

VIII. Cách sử dụng WebClass để tạo những ứng dụng phân phối.162

IX. DownLoad ActiviX Components .163

CHƯƠNG II : ĐỐI TƯỢNG DỮ LIỆU ACTIVE.

I. Xây dựng ứng dụng Visual Basic với ADO 166

II. Làm việc với con trỏ . .168

III. Khóa mẩu tin trong ADO .170

IV. Mở và đóng kết nối đến nguồn dữ liệu .171

V. Sử dụng đối tượng Recordset của ADO để thao tác với dữ liệu

đối tượng .171

VI. Tạo Recorset ngắt kết nối 172

 

doc63 trang | Chia sẻ: maiphuongdc | Lượt xem: 1721 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Luận văn Tìm hiểu các chức năng hỗ trợ lập trình trên môi trường mạng của SQL Server và Visual Basic – viết chương trình quản lý mua bán tại cửa hàng kim khí điện máy, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
kết thúc giao dịch đảm bảo tính chất ACID của giao dịch . Nếu dữ liệu được thay đổi thì sự thay phải được bảo vệ với lock loại trừ (exclusive) ngăn cản các giao dịch khác đọc những dòng này và lock loại trừ phải được giữ cho đến khi giao dịch commit hay roll back .Trong hệ thống nhiều người sử dụng , giao dịch phải càng ngắn càng tốt để giảm sự tranh chấp tài nguyên giữa những kết nối đồng thời . Việc thực hiện một giao dịch lớn thì sự không hiệu quả của giao dịch có lẽ không thành vấn đề đối với hệ thống ít người sử dụng nhưng không thể chịu đựng đối với hệ thống hàng ngàn người sử dụng . Có một vài nguyên tắc làm giao dịch hiệu quả: Không đòi hỏi input từ người sử dụng trong một giao dịch : nhận tất cả yêu cầu của người sử dụng trước khi một giao dịch được khởi động . Nếu thêm những yêu cầu vào trong giao dịch đã được khởi động thì roll back giao dịch hiện thời và khởi động giao dịch với đầy đủ yêu cầu . Thậm chí user đáp ứng ngay lập tức thì phảøn xạ của con người cũng không thể bằng tốc độ của máy tính . Đừng mở một giao dịch trong khi đang đọc data nếu có thể . Giao dịch không nên được khởi động cho tới khi sự phân tích dữ liệu chuẩn bị hoàn thành . Làm cho giao dịch càng ngắn càng tốt . Sử dụng các mức độ tách biệt của giao dịch một cách hiệu quả. Sử dụng các cursor đồng thời hiệu quả như phương pháp đồng thời lạc quan . Trong hệ thống mà khả năng cập nhật đồng thời thấp , tổng phí tổn gây ra do tranh chấp thấp hơn là dùng cơ chế lock . Truy cập tối thiểu dữ liệu trong một giao dịch . Việc làm giảm số lượng lock các dòng thì dẫn tới giảm sự tranh chấp giữa các giao dịch . 2.5 > KIẾN TRÚC GIAO DỊCH SQL Server bảo đảm tính nhất quán và toàn vẹn dữ liệu cho mỗi cơ sở dữ liệu khi lỗi xuất hiện trong hệ thống . Mỗi ứng dụng cập nhật vào cơ sở dữ liệu thông qua giao dịch . Giao dịch là một đơn vị luận lý bao gồm nhiều tác vụ (select , , insert , update , hay delect) . Nếu lỗi không xảy ra thì tất cả những thay đổi tạo ra từ giao dịch trở thành một phần vĩnh cửu của cơ sở dữ liệu . Nếu có lỗi xuất hiện thì không có sự thay đổi nào được cập nhật . Một giao dịch thông qua một số giai đoạn sau : Trước khi khởi động một giao dịch , cơ sở dữ liệu nằm trong trạng thái nhất quán . Ứng dụng gởi tín hiệu khởi động giao dịch . Điều này được thực thi bằng lệnh BEGIN TRANSACTION . Không có một record nào được ghi vào log, record đầu tiên được ghi khi ứng dụng tạo ra sự thay đổi dữ liệu . Ứng dụng bắt đầu thay đổi dữ liệu . Những sự thay đổi này được tạo ra trên một bảng tại một thời điểm . Khi một loạt các thay đổi được tạo ra, chúng được đưa vào vùng cơ sở dữ liệu tạm thời . Khi ứng dụng tìm thấy có khả năng cập nhật dữ liệu mà đảm bảo cơ sở dữ liệu đạt trong trạng thái nhất quán , khi đó ứng dụng sẽ commit giao dịch . Nếu ứng dụng xuất hiện lỗi ngăn cản giao dịch hoàn thành thì nó sẽ undo hay roll back tất cả các thay đổi. Nó sẽ trả lại trạng thái nhất quán mà khi bắt đầu khởi động giao dịch . Khôi phục giao dịch: Mỗi cơ sở dữ liệu SQL Server có một transaction log lưu trữ những thay đổi dữ liệu trong cơ sở dữ liệu . Log file lưu trữ quá trình khởi động và kết thúc của mỗi giao dịch và kết hợp với mỗi sự thay đổi trong giao dịch . Mỗi một record được lưu trong log được chỉ ra bởi một số tuần tự duy nhất (LSN) . Tất cả các record trong log của một giao dịch được xích nối với nhau . Khi một sự cố cùngvới việc mất thông tin chứa trong bộ nhớ tạm xảy ra thủ tục khôi phục sẽ đọc log file và thực hiện các tác vụ sau : Xác định tất cả các giao dịch chưa hoàn tất mà vẫn chưa được roll back . Các giao dịch chưa hoàn tất có thể được nhận dạng bởi vì chúng có trạng thái khởi động giao dịch (BEGIN TRANSACTION) trong log file mà không có những trạng thái commit hay roll back . Xác định tất cả giao dịch cần được roll forward . Theo nguyên tắc tập hợp này bao gồm tất cả các giao dịch có commit record trong log fig . Để phân biệt những giao dịch phải được roll forward với những giao dịch roll back SQL Server dùng cơ chế checkpoint . Roll back các giao dịch xác định ở bước một và roll forward những giao dịch xác định ở bước hai . SQL Server lưu nhiều kiểu thông tin khác nhau trong transaction log. SQL Server ghi nhận những thao tác luận lý đã được thực hiện . Những thao tác này được nhân bản roll forward hay roll back sự thay đổi . SQL Server điều khiển khi những thay đổi được ghi từ vùng đệm dữ liệu vào dĩa . SQL Server cất những thay đổi vào vùng đệm dịnh kì dể tối ưu việc ghi dĩa . Những trang vùng đệm chứa những thay đổi mà chưa được ghi vào dĩa được gọi là dirty page (những trang cất trong cache được thay đổi kể từ checkpoint cuối cùng ) . Để đảm bảo có thể khôi phục tất cả nhưng thay đổi , SQL Server sử dụng write_ahead log có nghĩa là tất cả hình ảnh log được ghi vào dĩa trước khi tương thích . Thao tác commit bắt buộc tất cả các record log đưa vào log file để giao dịch có thể phục hồi thậm chí SQL Server shut down . SQL Server đảm bảo tất cả dirty log và trang dữ liệu phải được đẩy lên dĩa . Điều này gọi là checkpoint . Checkpoint là các tác vụ được thực hiện định kì . Checkpoint thu giảm thời gian và tài nguyên để phục hồi khi sự sao chép của SQL Server được khởi động . Checkpoint viết lên dĩa tất cả trang dữ liệu dirty cái được ghi vào tại lần checkpoint cuối cùng và không đẩy lên dĩa sau thời điểm đó . Checkpoint ghi lên dĩa một danh sách các giao dịch còn tồn tại . Danh sách này chứa LNS của record log đầu tiên . Checkpoint ghi lên dĩa tất cả trang dirty log . Checkpoint lưu một danh sách tất cả trang dữ liệu dirty còn lại . Checkpoint lưu LSN của một chuỗi các record log trên những tranh cơ sở dữ liệu khởi động . Điều này thu giảm chi phí cho việc checkpoint trong SQL Server 7.0 so với các phiên bản khác . Vì hầu hết các trang dirty data sẽ được lưu trên dĩa trong khoảng thời gian giữa hai checkpoint , hầu hết checkpoint sẽ có ít trang thay đổi dữ liệu . Bởi vì tất cả các hình ảnh log được ghi vào log , tất cả những thông tin cần thiết để khôi phục sự thay đổi được lưu vào dĩa tại một checkpoint . > LOCK Microsoft® SQL Server™ đảm bảo sự toàn vẹn của giao dịch và sự nhất quán dữ liệu . Locking ngăn cản user đọc dữ liệu đang được thay đổi bởi những user khác , và ngăn cản nhiều user thay đổi cùng một dữ liệu trong cùng thời gian . Nếu locking không được sử dụng thì dữ liệu trong một database trở nên không đúng và các truy vấn tương phản với dữ liệu sẽ cho kết quả không như mong đợi . Mặc dù Microsoft® SQL Server™ đã thực thi locking một cách tự động ,user có thể thiết kế ứng dụng hiệu quả hơn . Bốn vấn đề đồng thời Vấn đề mất hay bị dấu đi , cập nhật : điều phát sinh do hai hay nhiều giao dịch chọn cùng một dòng và cập nhật dữ liệu dựa vào giá trị được trọn ban đầu . Bởi vì mỗi một giao dịch không có ý thức về những giao dịch khác , giá trị update cuối cùng sẽ viết đè giá trị update của những giao dịch khác .Vì vậy dữ liệu bị mất . Vấn đề sự phụ thuộc uncommit (dirty data) : Ví dụ : Giao dịch T1 thay đổi một dòng dữ liệu . Giao dịch T2 đọc sự thay đổi trước khi giao dịch T1 commit . Nếu giao dịch T1 roll back sự thay đổi thì giao dịch T2 đọc một dòng dữ liệu được xem như không tồn tại .) Vấn đề phân tích mâu thuẫn (nonrepeatable read : Nếu một giao dịch đọc cùng một dữ liệu hơn một lần và giữa hai lần đọc đó có sự thay đổi dữ liệu có thay đổi dữ liệu bởi một giao dịch tách biệt khác . Bởi việc đọc dữ liệu nhiều lần trong cùng một giao dịch mà có sự thay đổi khác tác động vào do một giao dịch khác gây ra sự mâu thuẫn . Vấn đề phantom read (phantom : khi một giao dịch cố gắng select một dòng mà nó không tồn tại và giao dịch thứ hai insert dòng đó trước khi giao dịch thứ nhất kết thúc . Nếu dòng này được chèn vào thì nó xuất hiện như một phantom đối với giao dịch thứ nhất , sự xuất hiện và biến mất gây ra mâu thuẫn . Optimistic and Pessimistic Concurrency Microsoft® SQL Server™ cung cấp cả điều khiển đồng thời bi quan (pessimistic) và lạc quan (optimistic) . Điều khiển đồng thời bi quan được khởi động mặc định trong SQL Server . Giải thuật bi quan đồng bộ việc thực thi đồng thời của giao dịch sớm trong chu kì làm việc , giải thuật lạc quan giữ việc đồng bộ của các giao dịch cho tới khi các giao dịch kết thúc . Đồng thời lạc quan : luôn luôn thực hiện giao dịch cho đến khi hoàn tất . Tuy nhiên tác vụ write mà giao dịch sinh ra sẽ thực hiện trên các bản sao cục bộ của dữ liệu . Chỉ đến cuối giao dịch, nếu giao dịch được kiểm tra là hợp lệ (validation) thì tác vụ write mới được áp dụng lên cơ sỡ liệu .Nếu kiểm tra giao dịch không hợp lệ thì giao dịch sẽ được roll back . Việc kiểm tra hợp lệ sẽ kiểm chứng sự thực thi các giao dịch có tuần tự hay không . Để có tiến hành việc kiểm tra một số thông tin về sự thực thi cần được giữ lại cho đến khi việc hợp lệ hóa được tiến hành . Cách tiếp cận optimistic dựa trên giả thiết các tranh chấp ít xảy ra và do đó hầu hết các giao dịch sẽ vượt qua việc kiểm tra . Bằng việc xử lý các tác vụ mà không phải tốn chí phí cho điều khiển đồng thời , một giao dịch sẽ không bị trì hoãn trong suốt quá trình nó thực thi . Đồng thời bi quan : điều khiển sẽ khóa tài nguyên mà nó yêu cầu để đảm bảo tính bền của giao dịch . Trừ khi không có deadlock thì giao dịch đảm bảo chắc chắn thành công . Các mức độ tách biệt Khi lock được sử dụng như là một công cụ điều khiển đồng thời thì nó sẽ giải quyết vấn đề đồng thời . Điều này cho phép tất cả các giao dịch chạy đồng thời tách biệt với nhau , mặc dù có nhiều giao dịch chạy trên cùng một SQL Server tại một thời điểm. Tính tuần tự (Serializability) là một tính chất mà cơ sở dữ liệu đạt được khi một số giao dịch được thực hiện đồng thời thì kết quả phải giống như khi chúng thực hiện tuần tự hteo một số thứ tự nào đó . Nếu một hệ thống cung cấp điều khiển đồng thời , người lập trình có thể viết các giao dịch như là khi chúng được thực hiện một mình . Mức độ mà một giao dịch chấp nhận sự không nhất quán dữ liệu được nhóm thành các mức độ khác nhau . Điều này sẽ làm giảm khi một giao dịch phải được tách biệt với những giao dịch khác . Mức độ tách biệt thấp thì làm tăng tính đồng thời nhưng phải trả giá cho sự đúng đắn dữ liệu cao . Ngược lại đối với mức độ tách biệt cao hơn thì đảm bảo dữ liệu đúng nhưng không hiệu quả về việc đồng thời . Mức độ tách biệt trong ứng dụng xác định cách thức lock trong SQL Server . SQL-92 định nghĩa ra bốn mức độ , tất cả đều được hỗ trợ trong SQL Server: Read uncommit : đây là mức độ tách biệt thấp nhất chỉ đủ đảm bảo dữ liệu vật lý bị hư hỏng không được đọc . Read commit : SQL Server mặc định loại này . Repeatable read Serializable : mức độ cao nhất đảm bảo một giao dịch tách biệt với các giao dịch khác . Nếu một giao dịch được chạy trên mức này thì bất kì giao dịch chồng chéo nào đều được đảm bảo tuần tự . Isolation level Dirty read Nonrepeatable read phantom Read uncommitted Yes Yes Yes Read committed No Yes Yes Repeatable read No No Yes Serializable No No No Giao dịch phải được chạy ở mức repeatable read hay các mức ở trên thì nó ngăn cản những cập nhật bị mất xuất hiện khi hai giao dịch truy cập cùng một dòng , và các sự cập nhật sau này dựa vào những giá trị được truy cập ban đầu . Nếu hai giao dịch sử dụng lệnh update đơn để cập nhật và không dựa vào những giá trị truy cập trước đó , việc mất dữ liệu cập không thể xảy ra ở mức mặc định (read committed) . Phân loại lock mode : Shared lock (S) :cho phép các giao dịch đồng thời đọc (SELECT) tài nguyên . Không có giao dịch nào có thể chỉnh sửa dữ liệu trong khi shared lock đang tồn tại trên tài nguyên đó . Shared lock sẽ được tháo bỏ nhay khi dữ liệu được đọc , trừ khi mức độ tách biệt của giao dịch được thiết lập ở mức repeatable read hay mức cao hơn . Update lock (U) : ngăn cản các trường hợp thông thường xảy ra deadlock . Kiểu lock này trùng khớp với việc đọc một record và đạt ở trạng thái shared lock trên tài nguyên đó . Sau đó khi thực hiện việc chỉnh sửa một dòng nó sẽ yêu cầu chuyển lock sang trạng thái exclusive lock . Nếu hai giao dịch đạt trạng thái shared lock trên một tài nguyên và cố gắng cập nhật dữ liệu đồng thời thì một giao dịch sẽ chuyển lock sang trạng thái exclusive lock . Việc chuyển từ mode shared sang mode exclusive phải chờ bởi vì trạng thái exclusive trên một giao dịch thì không tương thích với shared lock trên một giao dịch khác . Giao dịch hai cố gắng đạt ở trạng thái exclusive lock cho việt cập nhật. Bởi vì cả hai giao dịch cùng chuyển qua trạng thái exclusive lock và chúng phải chờ tới khi giao dịch khác để bỏ trang thái shared lock . Deadlock xảy ra . Update lock được sủ dụng để tránh deadlock trên . Chỉ có một giao dịch chứa update lock trên một tài nguyên tại một thời điểm .Nếu một giao dịch chỉnh sửa dữ liệu , update lock sẽ được chuyển sang exclusive lock . Nếu không lock sẽ được chuyển sang mode shared lock . Exclusive lock (X) : ngăn cản sự truy cập trên một dữ liệu bằng những giao dịch đồng thời . Không một giao dịch nào có thể đọc hay chỉnh sửa dữ liệu đã được lock bằng exclusive lock . Intent lock :Khi SQL Sever muốn đạt được ở trạng thái shared lock hay exclusive lock trên một vài tài nguyên ở mức dưới trên cây phân cấp tài nguyên. Ví dụ một shared intent lock tạo ra ở mức các bảng có nghĩa là khi một giao dịch muốn lock một trang hay dòng trên một bảng bằng shared lock . Thiết lập intent lock ở mức độ bảng ngăn cản những giao dịch sau đó giành exclusive lock trên bảng đó . Intent lock cải tiến việc thực hiện giao dịch vì SQL Sever cần kiểm soát các intent lock trên mức bảng để xác địch một giao dịch có giành được lock trên bảng đó một cách an toàn hay không . Intent lock bao gồm intent shared (IS), intent exclusive (IE) và shared với intent exclusive (SIE) . Intent shared (IS) : chỉ ra khi giao dịch dọc một vài tài nguyên (như một phần bảng) bằng cách đặt shared lock trên những tài nguyên riêng rẽ . Intent exclusive (IX) : chỉ ra khi giao dịch có ý định chỉnh sửa một vài tài nguyên có độ phân cấp thấp bằng cách đặt exclusive lock trên những tài nguyên riêng lẻ . Shared with intent exclusive (SIX) : kết hợp cả hai loại khóa trên . Sự tương thích lock Requested mode IS S U IX SIX X Intent shared (IS) Yes Yes Yes Yes Yes No Shared (S) Yes Yes Yes No No No Update (U) Yes Yes No No No No Intent exclusive (IX) Yes No No Yes No No Shared with intent exclusive (ISX) Yes No No No No No Exclusive (X) No No No No No No Sự leo thang lock Sự leo thang là quá trình chuyển đổi những lock có phạm vi ảnh hưởng nhỏ (fine-grain) thành những lock có phạm vi ảnh hưởng lớn (coarse-grain) làm giảm tổng phí của hệ thống . SQL Server tự động leo thang (chuyển) lock hàng và lock trang thành lock bảng khi giao dịch vượt qua giới hạn leo thang của nó . Ví dụ : một giao dịch yêu cầu vài hàng trong một bảng , SQL Server giành lock những hàng bị ảnh hưởng và đặt khóa intent ở nức độ cao hơn trên những trang , bảng hay chỉ mục (index) mà chứa những hàng đó . Khi số lượng khóa bị giữ bởi giao dịch vượt quá giới hạn cho phép của nó , SQL Server cố gắng thay đổi khóa inent trên bảng đó thành khóa mạnh hơn (ví dụ , khóa intent exclusive thay thành khóa exclusive ) . Sau khi giành được khóa mạnh hơn , tất cả khóa trang , hàng bị giữ bởi giao dịch trên bảng bị tháo bỏ , thu giảm chi phí lock . SQL Server có thể chọn thực hiện trên cả khóa hàng và khóa trang trên cùng một giao dịch , ví dụ , đặt khóa trang trên chỉ mục (index) và khóa hàng trên dữ liệu. Giới hạn leo thang lock đươc xác định một cách linh động bởi SQL Server và không yêu cầu cấu hình nào . Khóa động (Dynamic locking) Mặc dù lock ở mức dộ hàng thì tăng sự đồng thời nhung làm tăng chi phí của hệ thống .Khóa bảng hay khóa trang làm giảm chi phí của hệ thống nhưng tính hiệu quả đồng thời bị giảm . SQL Server sử dụng chiến lược khóa linh động để xác định khóa hiệu quả nhất . SQL Server tự động xác định những khóa nào thích hợp nhất khi truy vấn được thực thi dựa vào tính đặc thù của lược đồ (schema) và câu truy vấn . Khóa linh động có những ưu điểm sau : Sự quản lý cơ sở dữ liệu đơn giản , sự quản lí cơ sở dữ liệu phải được liên quan tới việc điều chỉnh giới hạn sự leo thang lock . Làm tăng tính thực thi vì khi dùng lock thích hợp thì làm tăng sự tối thiểu hóa chi phí hệ thống . Người phát triển ứng dụng có thể tập trung trên phát triển đó vì SQLServer tự điều chỉnh khóa . Deadlock Deadlock là trường hợp xảy ra trong bất kì hệ thống nhiều người sử dụng không chỉ trong hệ quản trị cơ sỡ dữ liệu quan hệ . Deadlock xuất hiện khi hai user khóa những đối tượng riêng biệt và mỗi user lại muốn lock những đối tượng của user khác . Mỗi user phải chờ user khác trả lại đối tượng mà chúng đang khóa . Ví dụ : Giao dịch một T1 có khóa loại trừ vào bảng Supplier . Giao dịch hai T2 tạo khóa loại trừ trên bảng Park và rồi nó muốn lock bảng Supplier . Giao dịch T2 không thể tạo lock vì giao dịch T1 đang giữ nó . Giao dịch hai bị dừng lại (block) chờ giao dịch T1 . Giao dịch T1 lại muốn lock bảng Park nhưng giao dịch T2 đang giữ nó . Cả hai giao dịch không thể bỏ lock cho tới khi chúng commit hay roll back nên chúng bị block , cả hai giao dịch không thể hoàn tất giao dịch . Phát hiện và kết thúc deadlock SQL Server định kì sẽ quét những vùng đang chờ yêu cầu lock . Trong suốt quá trình quét , SQl Server sẽ ra hiệu cho mỗi vùng đang chờ . Nếu vùng đã được ra hiệu vẫn đang chờ thì việc tìm kiếm deadlock đệ qui sẽ được khởi động . Nếu việc tìm kiếm deadlock đệ qui phát hiện sự yêu cầu khóa gây ra liên kết vòng thì những giao dịch có chi phí ít nhất được chọn như là nạn nhân của deadlock( deadlock victim). SQL Server kết thúc một deadlock bằng cách chọn tự động deadlock victim mà có thể hủy deadlock . SQL Server sẽ roll back những giao dịch deadlock victim , thông báo cho ứng dụng của user , hủy những yêu cầu hiện thời của user và cho phép các giao dịch khác tiếp tục . Deadlock chỉ ảnh hưởng một số lượng nhỏ giao dịch nên kỹ thuật phát hiện định kì này sẽ làm giảm chi phí của việc phát hiện deadlock . Tránh deadlock Mặc dù deadlock không thể hoàn toàn tránh được nhưng số lượng deadlock có thể được tối thiểu .Sự tối thiểu deadlock làm tăng số lượng deadlock đưa vào và làm giảm tổng phí hệ thống vì rất ít giao dịch bị : Roll back , hủy bỏ tất cả công việc đã thực hiện trong giao dịch . Xem xét lại bởi ứng dụng bởi vì chúng đã được roll back khi xảy ra deadlock . Để giúp tối thiểu deadlock , user cần thực hiện : Truy cập đối tượng có cùng thứ tự : Nếu tất cả giao dịch đồng thời cùng truy cập vào những đối tượng có cùng thứ tự deadlock sẽ ít xuất hiện . Ví dụ :Nếu hai giao dịch đồng thời chứa một khóa trên bảng Supplier và sau đó trên bảng Part thì một giao dịch bị block trên bảng Supplier cho đến khi giao dịch khác hoàn thành . Sau khi giao dịch đầu tiên commit hay roll back thì giao dịch hai tiếp tục . Không có deadlock xảy ra .Sử dụng stored procedure có thể chuẩn hóa trật tự của sự truy cập các đối tượng . Tránh dùng những tác vụ bên trong 2.7 > SHARE 2.7.1. Kết nối đến SQL Server thông qua Internet Bạn có thể kết nối vào Mcrosoft SQL Server trên Internet bằng cách sử dụng SQL Query Analyzer hoặc dùng một client cơ sở ứng dụng trên ODBC hay DB-Library. Để chia sẻ dữ liệu trên Internet thì client và server phải được kết nối vào Internet. Thêm vào dó, bạn phải sử dụng giao thức TCP/IP hay Multiprotocol Net-Libraries. Nếu sử dụng Multiprotocol Net-Library, phải chắc chắn rằng chế độ hỗ trợ củaTCP/IP được bật lên . Nếu như server đã đăng kí với Domain Name System (DNS), bạn có thể kết nối với tên đã đăng kí đó. Mặc dầu kết nối này ít an toàn hơn một Mcrosoft Proxy Server kết nối, nhưng nếu sử dụng firewall (tường lửa) hay một kết nối được mã hóa sẽ giúp những dữ liệu nhạy cảm được an toàn hơn. Sử dụng một hệ thống firewall với SQL Server Nhiều công ty sử dụng hệ thống firewall để cô lập các mạng của họ khỏi các sự truy cập từ Internet. Một Firewall có thể được sử dụng để hạn chế truy cập ứng dụng Internet từ mạng của bạn bằng chuyển tiếp duy nhất yêu cầu đối tượng vào địa chỉ TCP/IP đặc biệt trên mạng cục bộ. Các yêu cầu cho tất cả các địa chỉ mạng khác được block ( bị chặn ) bởi firewall. Bạn có thể cho phép các ứng dụng Internet truy cập một instance (trường) của SQL Server trên mạng cục bộ bằng cách cấu hình firewall chuyển tiếp yêu cầu mạng đó đến thẳng địa chỉ mạng của instance của SQL Server. Để làm việc hiệu quả với firewall, phải chắc chắn rằng instance của SQL Server luôn luôn đáp ứng những địa chỉ mạng mà firewall được cấu hình để chuyển tiếp. Địa chỉ TCP/IP của SQL Server gồm 2 phần : phần địa chỉ IP được kết hợp với một hay nhiều card mạng trong một máy vi tính. Và một port TCP/IP định địa chỉ cụ thể đến một instance của SQL Server . Instance mặc định của SQL Server sử dụng cổng TCP 1433 mặc định. Instance được đặt tên tự động , được gán vào một cổng TCP khi Instance khởi động lần đầu tiên. Named Instance có thể tự động thay đổi địa chỉ của port TCP sau khi được khởi động nếu số của port TCP đang được sử dụng bởi một ứng dụng khác . SQL Server chỉ tự động thay đổi port TCP không sử dụng nếu port đó đang lắng nghe . Nếu port đó được chọn thủ công, SQL Server sẽ hiển thị lỗi và tiếp tục lắng nghe các port khác. Nó không giống như các ứng dụng khác sẽ cố gắng sử dụng port 1433 trước khi port đó được ghi nhận là một địa chỉ đã được nhận biết của SQL Server. Khi sử dụng một named Instance của SQL Server với một firewall, ta sử dụng công cụ Server Network Utility thiết lập Instance đó lắng nghe một port TCP được chỉ định. Bạn phải chọn một port TCP không bị sử bởi một ứng dụng khác đang chạy trên cùng một máy tính hay một cluster. Danh sách port đã được ghi nhận để nhiều ứng dụng khác nhau sử dụng, có thể xem tại địa chỉ Người quản trị mạng phải cấu hình một firewall để chuyển tiếp địa chỉ IP và port TCP Instance của SQL Server đang lắng nghe (instance mặc định sử dụng port 1433, hoặc port TCP mà bạn cấu hình để “lắng nghe”). Cũng vậy cấu hình firewall để chuyển tiếp các yêu cầu cho port UDP1434 trên cùng một địa chỉ IP. SQL Server 2000 sử dụng cổng UDP 1434 để thiết lập kết nối truyền tho

Các file đính kèm theo tài liệu này:

  • docLVTN_SQL SUA.doc
  • doc0.doc
  • doc1.doc
  • doc22.doc
  • doc33.doc
  • doc44.doc
  • docBIATRONG.DOC
  • rardemoqldm.rar
  • rarFileSQLS.rar
  • doclvtn_VB1.doc
  • docMUC LUC LV.doc
  • docNHANXET.DOC
  • docNHANXET1.DOC
  • rarphandonggoi.rar
  • doctlthamkhao.doc