Phát triển ứng dụng cơ sở dữ liệu với C# và Net Framework

Đối tượng System.Exception cung cấp nhiều phương thức và property hữu ích cho việc bẫy lỗi. Chẳng hạn property Message cung cấp thông tin tại sao nó được ném. Message là thuộc tính chỉ đọc, nó được thiết đặt vào lúc khởi tạo biệt lệ. Property HelpLink cung cấp một kết nối đến tập tin giúp đỡ. Property này có thể đọc và thiết đặt. Property StackTrace chỉ đọc và được thiết lập vào lúc chạy. Trong ví dụ11-6, property Exception.HelpLink được thiết đặt và nhận về đểthông tin thêm cho người dùng vềbiệt lệDivideByZeroException. Property StackTrace được dùng đểcung cấp các vết của vùng nhớstack. Nó hiển thịhàng loạt các phương thức đã gọi dẫn đến phương thức mà biệt lệ được ném ra.

pdf192 trang | Chia sẻ: lvcdongnoi | Lượt xem: 4046 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Phát triển ứng dụng cơ sở dữ liệu với C# và Net Framework, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
là Enterprise Manager và Query Analyzer. SQL Server 2005, với công cụ quản lý mới là SQL Server Management Studio đã thay thế hoàn toàn 2 công cụ trên của SQL 2000. Công cụ này cho phép quản lý nhiều thể hiện SQL Server dễ dàng hơn. Từ một giao diện, có thể quản lý nhiều thể hiện của cỗ mãy CSDL SQL Server, Analysis Services, Intergration Services và Reporting Services. - Công cụ mới SQL Server Configuration Manager cho phép kiểm soát các dịch vụ kết hợp với SQL Server 2005. Nó có thể thay thế cho Services Manager và công cụ cấu hình mạng cho Server và Client. Chúng ta cũng có thể kiểm soát một số dịch vụ khác như: SQL Server, SQL Agent, SQL Server Analysis Services, DTS Server (Cho SQL Server Integration Services), Full - Text Search, SQL Browser. b. Profiler Cho phép phân tích những vấn đề về hiệu suất thực thi trong SQL Server 2005. Ví dụ, Profiler mở các tập tin truy vết mà chúng ta đã lưu trong hệ thống tập tin để xem lại và phân tích các quá trình SQL Server cần quan tâm. Profiler có thể biểu diễn thông tin truy vết ở dạng đồ thị để có thể dễ dàng xem điều gì đã xảy ra. Nó có thể nhận dữ liệu được ghi lại bởi Windows Performance Monitor. Chúng ta có thể hiển thị dữ liệu dạng đồ thị, xem hiệu suất thực thi trên khoảng thời gian đã chọn. Từ đồ thị, ó thể truy cập đến điểm có vấn đề. c. SQL Server Agent Những khả năng của SQL Server Agent, thành phần hỗ trợ cho các tác vụ đã được lập thời gian biểu, được nâng cao. Ví dụ, số tác vụ đồng thời mà SQL Server Agent có thể chạy được tăng lên. SQL 2000 chỉ dùng SQL Agent trong những tác vụ liên quan đến cỗ máy CSDL. Còn trong 2005, SQL Server Agent thực thi các tác vụ cho Analysis Services và Integration Services. SQL Server Agent dùng ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 154 Windows Management Instrumentation (WMI), cho phép viết mã tránh thực thi tác vụ, như khi đĩa cứng đầy thì các tác vụ vẫn được thực thi thành công. d. Cấu hình động Trong SQL Server 2005, có thể thực hiện bất kì thay đổi cấu hình nào mà không cần khởi động lại SQL Server, kể cả khi đang chạy trên Windows Server 2003. Bên cạnh đó, chúng ta cũng có thể thay đổi áp lực CPU và I/O nếu cần, có thể thêm nóng bộ nhớ cho Server nếu có phần cứng thích hợp. e. Full-text search (CSDL lưu trữ thông tin siêu dữ liệu) Có thể sao lưu dự phòng và khôi phục các nhóm Full-text search theo cùng cách như đối với các CSDL khác. g. SQL Server Service broker SQL Server Service broker cho phép tạo các ứng dụng xử lý thông điệp không đồng thời. Tính không đồng thời của các thông điệp service Broker nghĩa là việc xử lý các tác vụ không cần hoàn thành tất cả cùng lúc vì điều này sẽ làm server bị chậm. Thay vào đó các thông điệp được đưa vào hàng đợi xử lý khi server nhẹ tải hơn, như vậy sẽ cải thiện được hiệu suất tổng thể. h. Kết nối liên tục cho người quản trị Đây không chỉ là kết nối cho người chuyên làm công việc quản trị CSDL mà còn là kết nối chỉ dành cho người quản trị dùng. Kết nối được dùng khi một quá trình trên server bị đứng, cần phải truy cập va cỗ máy CSDL để hủy quá trình đó. Kết nối đặc biệt này cho phép người quản trị nhận chia sẻ các chu kỳ CPU để hủy quá trình bị đứng mà không cần phải khởi động lại server ngay cả trong trường hợp quá trình đó sử dụng gần như 100% chu kỳ CPU. i. Công cụ dòng lệnh (SQL CMD) Như đã giới thiệu ở trên SQL CMD là một tiện ích dòng lệnh trong SQL Server 2005, có thể viết lệnh dùng SQL CMD hoặc thực thi các mã kịch bản T- SQL. SQL CMD cũng cho phép sử dụng tham số dòng lệnh để thay thế các biến trong T-SQL. k. Cập nhật dễ dàng hơn Các đối tượng hệ thống nằm trong CSDL resource của SQL Server 2005, khi service pack hoặc cập nhật khác được áp dụng cho thể hiện SQL Server thì tất cả các đối tượng hệ thống được thay thế. Điều này giúp việc nâng cấp dễ quản lý hơn. ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 155 l. Replication (thiết lập và quản lý sao lưu đồng bộ) Việc này được thực hiện bởi SQL Server Management Studio, một công cụ sẽ giám sát tình trạng hệ thống cho phép kiểm tra các thiết lập replication và hiệu suất thực thi. m. Cấu hình Window Management Instrumentation (WMI) WMI cho phép thực hiện một bó tác vụ cấu hình, chẳng hạn thiết lập cấu hình mạng và client. Ngoài ra, còn có thể xác định tác vụ được thực hiện có hiệu quả và an toàn ở một không gian xác định hay không. Ví dụ, kiểm tra xem d0ĩa cứng còn đủ vùng trống để sao lưu dự phòng hay không. n. Gửi mail từ CSDL Đây là tính năng khá mới mẻ trong SQL Server 2005. Nó thay thế SQL Mail trong SQL Server 2000. Database Mail sử dụng giao thức Simple Mail Transfer Protocol (SMTP). Không còn bất kỳ phụ thuộc nào với Messaging Application Programming Interface(MAPI) và cũng không còn đòi hỏi phải có Outlook. Việc loại bỏ những phụ thuộc này tránh được hiều vấn đề mà người dùng SQL Server 2000 gặp phải với SQL Mail. Ngoài ra, Database Mail cũng hỗ trợ hoạt động liên tiếp, ghi tập tin Log và kiểm tra hoạt động. 3.1.2.5. Nâng cao độ sẵn sàng của CSDL a. Truy cập dữ liệu đồng thời Nghĩa là có thể nhận được dữ liệu trong khi người khác cũng đang truy cập dữ liệu đó. - Tạo ảnh dữ liệu: tạo bản sao logic của CSDL ở thời điểm xác định. Người dùng có thể sử dụng ảnh dữ liệu (snapshot) làm nguồn cho các Reporting Service mà không cần nạp bản sao trực tuyến của CSDL. - Cô lập ảnh dữ liệu: đây là cấp cô lập giao dịch mới để cải thiện độ sẵn sàng của CSDL cho các ứng dụng đọc, bởi vì cơ chế ghi không khóa cơ chế đọc. Các ứng dụng ghi bắt buộc phải dò tìm xung đột. - Lập chỉ mục trực tuyến: trong thời gian chỉ mục được xây dựng lại, nó vẫn có thể được dùng cho việc truy xuất dữ liệu. Điều này xem như cải thiện hiệu suất thực thi trong khoảng thời gian đó. b. Sẵn sàng sau khi server bị hỏng ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 156 Một số tính năng được thêm vào liên kết lỗi server đã được hỗ trợ ở SQL Server 2000: - Khôi phục nhanh hơn: sau khi server bị hỏng, CSDL được làm để sẵn sàng cho người dùng nhanh hơn trong quá trình khôi phục. - Tạo bản sao CSDL trực tuyến (Database Mirroring): sử dụng phần cứng chuẩn, server lưu bản sao (mirror server) luôn được duy trì bản sao mới nhất. Khi server chính bị lỗi, server lưu bản sao sẵn sàng để sử dụng chỉ trong vài giây và server chính lúc này được ẩn đi đối với người dùng. - Định hướng ngầm lại kết nối cho client: khi khôi phục, server lưu bản sao dùng định hướng ngầm lại kết nối cho client (Transparent Client Redirect). Lớp MDAC (Microsoft Data Access Component) ghi nhận mirror server khi kết nối tới server chính. Nếu server chính bị hỏng, MDAC định hướng kết nối tới mirror server. c. Sẵn sàng trong khi bảo trì CSDL Quá trình sao lưu và khôi phục phải tin cậy để đảm bảo việc khôi phục dữ liệu hiệu quả. Một số tính năng được cung cấp trong SQL Server 2005: - Sữa chữa trực tuyến từng phần(Finer grained Online repairs): khôi phục dữ liệu filegroup với CSDL đang sẵn sàng sau khi filegroup chính được khôi phục. - Nâng cao chức năng kiểm tra sao lưu dự phòng (Enhanced Backup Verification): với cú pháp RESTORE VERIFY ONLY, mọi thức có thể được kiểm tra, rút ngắn quá trình ghi bản sao lưu dự phòng xuống server. - Tạo bản sao của bản sao lưu dự phòng (Backup Media mirroring): mục đích để giảm thiểu khả năng khôi phục không thành công hoặc tạo bản sao lưu ngoài. - Kiểm tra tổng trang CSDL (Database Page Checksums): mục đích để dò rìm lỗi trong từng trang dữ liệu để tránh sai sót. - Kiểm tra tổng bản sao lưu dự phòng (Backup Checksums): cơ chế dò tìm lỗi trong khi thực hiện sao lưu dự phòng. Nó có thể tìm lỗi trước và sửa lỗi sau. - Sao lưu dự phòng dữ liệu cùng lúc với sao lưu dự phòng tập tin log (Backup Data and Logs). 3.1.2.6. Nâng cao khả năng mở rộng CSDL - Khả năng cài đặt tự hành vào một liên cung (cluster) ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 157 - Phân vùng dữ liệu - Giám sát điều chỉnh cỗ máy CSDL Chức năng giám sát điều chỉnh cỗ máy CSDL của SQL Server 2005 là Database Engine Tuning Advisor (DTA) thay thế cho SQL Server 2000 Index Tuning Wizard. - Hỗ trợ gắn nóng bộ nhớ giúp cải thiện hiệu suất thực thi dưới tải cao và tránh được thới gian chết máy. - Nâng cao hiệu suất sao chép và đồng bộ (Replication). 3.1.2.7. Tăng cường khả năng khai thác thông tin (Business Intelligence) Khai thác thông tin là sức mạnh đáng chú ý của SQL Server 2005. Các tính năng được thêm vào Analysis Services, Intergration Services (thay thế cho Data Transformation Services) và Reporting services được xây dựng trên cơ sở các tính năng của Reporting Services trong SQL Server 2000. Khai thác thông tin trong SQL Server 2005 sử dụng các mẫu Analyze, Intergrate và Report. Dùng Intergration Services để kết hợp dữ liệu từ nhiều nguồn lại với nhau; dùng Analysis Services để có cái nhìn chi tiết bên trong dữ liệu; dùng Reporting Services để tạo các báo cáo thể hiện các phân tích với người dùng. 3.2. Quản trị CSDL bằng SQL Server 2005 Phần này chúng ta sẽ làm việc trên thể hiện SQL Server Management Studio của SQL Server 2005. SQL Server Management Studio (thay thế cho công cụ Enterprise Management trong SQL Server 2000) cho phép truy cập các đối tượng CSDL như table, view, store procedure, index… thông qua Object Explorer 3.2.1. Một số thuật ngữ cần tìm hiểu trong CSDL. 3.2.1.1. Mẩu tin, trường và giá trị Bảng (table) được tạo thành từ mẩu tin (record) và trường (field). Một mẩu tin là tất cả thông tin về một trong những thực thể trong bảng. Trường là một phần thông tin cụ thể được lưu trong bảng. Tùy thuộc vào mục đích của việc sử dụng bảng mà đôi khi việc tương tác với mẩu tin sẽ thuận lợi hơn đối với trường và ngược lại. Khi kiểm tra một trường cụ thể trong một bảng cụ thể, chúng ta xem giá trị của trường đó trong mẩu tin đó. Để hiểu rõ hơn, chúng ta xem bảng minh họa dưới đây: ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 158 Trong ví dụ minh họa trên: + Tên bảng là Docgia + Trường là: những thông tin từng phần về Ma_docgia, Họ, Tên_lot… và được xác định theo cột. + Mẩu tin: là tất cả những thông tin về một trong những độc giả trong bảng Docgia, bao gồm những thông tin về Ma_docgia, và được xác định theo dòng + 1, 2, Tran,… là các giá trị được xác định trong trường và mẩu tin. 3.2.1.2. Dòng và cột Các mẩu tin được biểu diển theo dòng và các trường được biểu diễn theo cột. Nội dung của bảng được hiển thi trên lưới tạo bởi dòng và cột. Tài liệu Microsoft SQL Server thường dùng thuật ngữ dòng và cột, nhưng một số tài liệu về CSDL nói chung thì sử dụng thuật ngữ mẩu tin và trường. 3.2.1.3. Giá trị Null Một giá trị là dữ liệu thật sự được lưu trong một trường xác định của một bảng xác định. Vậy điều gì sẽ xảy ra khi không có dữ liệu? Một gía trị Null thể hiện sự thiếu thông tin, đó là cách CSDL cho chúng ta biết rằng nó không biết dữ liệu thuộc cột đó là dữ liệu gì. 3.2.1.4. Thuộc tính và cột Không phải tất cả các cột đều được tạo ra như nhau, việc diễn tả sự khác nhau đó được SQL Server chỉ ra thông qua thuộc tính cột. Mỗi cột trong bảng thường có các thuộc tính sau: - Column name: tên cột, cho phép tham chiếu đến cột đó trong bảng - Data type: kiểu dữ liệu, cho phép ràng buộc dữ liệu lưu trong cột. Thuộc tính length của cột chỉ ra lượng dữ liệu tối đa có thể lưu giữ trong cột đó. - Allow Nulls: cho biết giá trị Null có được phép lưu trong cột hay không. Bằng cách sử dụng thuộc tính cột để phân biệt một cột với cột khác, làm cho cột gọn gàng và có trật tự. 3.2.1.5. Khóa và quan hệ ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 159 Khóa chính: là thông tin nhận dạng duy nhất cho phép bạn tìm ra chính xác một dòng dữ liệu trong bảng. Không thể có 2 dòng trong cùng một bảng có cùng giá trị trong cột khóa chính. Khóa chính có thể được tạo thành từ một cột đơn hoặc từ nhiều cột trong bảng. Ngoài khóa chính, còn có khóa ngoại. Khóa ngoại cho phép chúng ta lấy dữ liệu từ các bảng káhc trong cùng một CSDL. 3.2.1.6. Chỉ mục và ràng buộc Chỉ mục (index) trên bảng dùng để xác định nhanh chóng các dòng dữ liệu cụ thể. Chúng ta sẽ chọn một hoặc nhiều cột trong bảng để đánh chỉ mục. Chỉ mục có thể duy nhất hoặc không. Chỉ mục duy nhất hạn chế dữ liệu thêm vào bảng. Một chỉ mục cũng có thể là liên cung hoặc phi liên cung.Thuật ngữ này nói đến thứ tự lưu trữ vật lý của bảng. Lưu ý: Mặc dù một bảng có thể có nhiều chỉ mục nhưng chỉ có thể có một chỉ mục liên cung. SQL Server cung cấp một kiểu chỉ mục khác gọi là full-text. Không giống với chỉ mục thông thường được lưu với bảng, chỉ mục full-text được lưu trong các đối tượng đặc biệt gọi là catalogs. Chỉ mục full-text không được cập nhật tự động. Nó có thể được cập nhật bằng cách chạy một tác vụ đánh chỉ mục đặc biệt trên server hoặc chúng ta cấu hình để nó được cập nhật tự động khi bảng thay đổi. Tuy nhiên khả năng tìm kiếm của full-text kém chính xác hơn chỉ mục thông thường. Đối với chỉ mục thông thường, để xác định dòng dữ liệu, cần cung cấp chính xác giá trị đã đặt trong chỉ mục. Đối với full-text có thể tìm kiếm theo cách tự nhiên hơn. Ràng buộc là những quy tắc áp dụng cho dữ liệu trong bảng. Khi đã cái đặt ràng buộc cho dữ liệu trong bảng, bất kỳ hành động thêm hoặc sửa đổi dữ liệu mà pha 1vỡ ràng buộc này đều bị server CSDL từ chối. 3.2.1.7. Biểu thức và giá trị mặc định Hai đối tượng khác kết hợp với bảng là qui tắc và mặc định. Qui tắc là một biểu thức có thể được đánh giá là True hoặc False khi áp dụng vào giá trị của cột. Ví dụ, một qui tắc xác định giá trị của cột có nằm giữa giá trị 0 và 100 hay không. ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 160 Nếu áp dụng qui tắc này cho một cột cụ thể, server CSDL sẽ không cho phép nhập vào giá trị ngoài phạm vi trên. Giá trị mặc định (default): là một đối tượng riêng biệt chỉ ra một giá trị đơn. Bằng cách kết hợp giá trị mặc định với cột của bảng thì giá trị của cột đó trong dòng dữ liệu mới được thêm vào bảng bằng với giá trị mặc định trong trường hợp không cung cấp giá trị cho cột đó. Mặc dù SQL Server hỗ trợ cả quy tắc và giá trị mặc định nhưng chỉ còn tương thích với các phiên bản cũ. Đối với phát triển mới thì quy tắc được thay thế bằng ràng buộc và giá trị mặc định được thay thế bằng thuộc tính giá trị của cột. 3.2.2. Quản lý Database trong SQL Server 2005 Phần này sẽ giới thiệu một số thao tác cơ bản trên Database như: tạo mới, thay đổi, xóa, lưu trữ dự phòng và phục hồi CSDL. Để thực hiện các thao tác này, chúng ta có thể dùng công cụ trong Object Explorer hoặc tập lệnh T-SQL. 3.2.2.1. Dùng công cụ trong Object Explorer a. Tạo mới Database Tạo mới Database tức là tạo một data file và transaction log. Người cần tạo Database phải có quyền tạo Database. Các thông tin về Database: tên, thuộc tính, vị trí của file Database. Chỉ định các lựa chọn trong việc tạo Database: - Primary file - Secondary file - Transaction log - File name và thư mục lưu file - Kích thước file, sự tăng kích thước của file và kích thước tối đa của file Khởi chạy SQL Server Management Studio, trong Object Explorer, chọn Databases và nhấn chuột phải, trong trình đơn chọn New Database. Xem minh họa bằng hình vẽ dưới đây: ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 161 Hộp thoại New Database xuất hiện như hình vẽ dưới đây: Ở trang General, chúng ta cần cung cấp các thông tin sau: - Database name: nhập tên Database, ví dụ QuanLyThuVien Nhấn vào đây để thay đổi kích thước tập tin Kéo thanh trượt ngang sang phải để thay đổi thư mục lưu trữ tập tin ở cột Path ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 162 - Owner: chọn chủ sở hữu cho Database, nếu để chế độ default, mặc định là sa; để chọn giá trị khác nhấn button , hộp thoại Select Database Owner sẽ xuất hiện, nhấn tiếp Browse để chọn. - Database files: liệt kê các tập tin của Database vừa tạo, trong ví dụ này, tập tin QLKH chứa dữ liệu của Database, tập tin QLKH_log chứa thông tin log. Chúng ta có thể thay đổi kích thước tập tin khởi tạo trong cột Initial Size (MB); nếu muốn thay đổi thư mục lưu tập tin, kéo thanh ngang sang phải đến cột Path rồi nhấn để chọn lại đường dẫn mới. Đường dẫn mặc định là: C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data Trang Options cho phép chúng ta chọn lựa một số thiết lập cho Database, thông thường chúng ta không thay đổi ở trang này. Nhấn OK ở trang General để tạo Database. Để xác nhận Database vừa tạo, vào cửa sổ Object Explorer nhấn chuột phải vào Databases, chọn Refresh, Database mới tạo sẽ xuất hiện trong danh sách Databases, trong ví dụ này là Database QuanLyThuVien. ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 163 Theo đường dẫn tìm đến thư mục chứa các tập tin của Database QLKH, chúng ta sẽ thấy 2 tập tin mới được tạo là QuanLyThuVien.mdf và QuanLyThuVien_log.ldf Các thuộc tính mặc định của Database vừa tạo được thừa hưởng từ Database Model, đây là Database mẫu dùng để tạo Database mới của SQL Server 2005. Chúng ta có thể tìm thấy Model trong System Databases. Chú ý: Trước khi tạo Database mới nên sao lưu Database Master. Master chứa thông tin về toàn bộ Database được quản lý bởi thể hiện của SQL Server 2005. Việc sao lưu Master sẽ giúp chúng ta khỏi những ảnh hưởng của việc chọn lựa không đúng và cho phép khôi phục lại tình trạng trước khi tạo Database mới. b. Thay đổi, xóa Database Trong cửa sổ Object Explorer, chọn Database vừa tạo, nhấn các lệnh Rename hoặc Delete nếu muốn thay đổi tên Database hoặc xóa Database vừa tạo. ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 164 c. Lưu trữ, phục hồi Database Phục hồi (Backup) Database Một vấn đề chúng ta cần phải chú ý, đó là không phải lúc nào CSDL cũng được đảm bảo sự an toàn mà có thể xảy ra những rủi ro như mất dữ liệu, dữ liệu bị biến dạng, và điều này chúng ta không thể dự đoán trước được. Vì vậy, chúng ta phải có một chiến lược cho việc backup dữ liệu. Các dạng biến cố hay tai họa có thể xảy ra là: - Ðĩa chứa data file hay Transaction Log File hay system file bị mất - Server bị hư hỏng - Những thảm họa tự nhiên như bão lụt, động đất, hỏa hoạn - Toàn bộ server bị đánh cắp hoặc phá hủy - Các thiết bị dùng để backup - restore bị đánh cắp hay hư hỏng - Những lỗi do vô ý của user như lỡ tay delete toàn bộ table chẳng hạn - Những hành vi mang tính phá hoại của nhân viên như cố ý đưa vào những thông tin sai lạc. - Bị hack (nếu server có kết nối với internet). Chúng ta phải phải luôn có biện pháp đề phòng cụ thể cho từng trường hợp cụ thể. Ngoài ra, phải phải xác định thời gian tối thiểu cần phục hồi dữ liệu và đưa server trở lại hoạt động bình thường. ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 165 Các loại Backup: - Full Database Backups: Copy tất cả data files trong một database . Tất cả những user data và database objects như system tables, indexes, user-defined tables đều được backup. - Differential Database Backups: Copy những thay đổi trong tất cả data files kể từ lần full backup gần nhất. - File or File Group Backups: Copy một data file đơn hay một file group. - Differential File or File Group Backups: Tương tự như differential database backup nhưng chỉ copy những thay đổi trong data file đơn hay một file group. - Transaction Log Backups: Ghi nhận một cách thứ tự tất cả các transactions chứa trong transaction log file kể từ lần transaction log backup gần nhất. Loại backup này cho phép ta phục hồi dữ liệu trở ngược lại vào một thời điểm nào đó trong quá khứ mà vẫn đảm bảo tính đồng nhất (consistent). Trong lúc backup SQL Server cũng copy tất cả các hoạt động của database kể cả hoạt động xảy ra trong quá trình backup cho nên ta có thể backup trong khi SQL đang chạy mà không cần phải ngưng lại. Chúng ta cần làm quen với một số thuật ngữ khi backup database: STT Thuật ngữ Giải thích 1 Backup Quá trình copy toàn bộ hay một phần của database, transaction log, file hay file group hình thành một backup set. Backup set được chứa trên backup media (tape or disk) bằng cách sử dụng một backup device (tape drive name hay physical filename 2 Backup Device Một file vật lý (như C:\SQLBackups\Full.bak) hay tape drive cụ thể dùng để record một backup vào một backup media. 3 Backup File File chứa một backup set 4 Backup Media Disk hay tape được sử dụng để chứa một backup set. Backup media có thể chứa nhiều backup sets (ví dụ như từ nhiều SQL Server backups và từ nhiều ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 166 Windows backups 5 Backup set Một bộ backup từ một lần backup đơn được chứa trên backup media. Chúng ta có thể tạo một backup device cố định (permanent) hay tạo ra một backup file mới cho mỗi lần backup. Thông thường chúng ta sẽ tạo một backup device cố định để có thể dùng đi dùng lại đặc biệt cho việc tự động hóa công việc backup. Để backup database, chọn database cần backup, click phải chọn Task -> Backup sẽ xuất hiện hộp thoại Back Up Database – ‘tên database’, trong ví dụ này là database QuanLyThuVien: ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 167 Mặc định, backup file là QuanLyThuVien.bak, lựa chọn các thông tin cần thiết xong, nhấn OK sẽ xuất hiện hộp thoại thông báo: Lưu trữ (Restore) Database Trước khi restore database ta phải xác định được thứ tự file cần restore. Các thông tin này được SQL Server chứa trong msdb database và sẽ cho ta biết backup device nào, ai backup vào thời điểm nào. Ðể restore, chọn database cần restore, click phải chọn Task -> Restore, chọn Database, sẽ xuất hiện hộp thoại Restore Database – ‘tên database’: ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 168 Nếu restore thành công sẽ xuất hiện hộp thoại thông báo: 3.2.2.2. Dùng T-SQL a. Tạo mới Database Cú pháp tạo Database: CREASE DATABASE database_name [ON] [ [ ,…n]] [LOG ON { [ ,…n]}] [FOR ATTACH] ::= [PRIMARY] ([NAME = ‘logical_file_name’,] FILENAME = ‘os_file_name’ [ , SIZE = size] [ , MAXSIZE = {maxsize | UNLIMITED}] [ , FILEGROWTH = growth_increment]) [ ,…n] ) Giải thích: - For attach: chỉ định rằng database này được tạo từ một database được attach - Size: kích thước ban đầu của file, tính bằng KB, MB, GB, TB. Default là 1MB - Max_size: chỉ định kích thước tối đa của file, tính bằng KB, MB, GB, TB, default là MB. Nếu không chỉ định option này, kích thước file sẽ lớn dần theo dung lượng đĩa cứng - Growth_increment: dung lượng tăng tính bằng KB, MB hoặc %, default là MB. Nếu không chỉ định option này, file sẽ tăng default là 10% Ví dụ tạo Database QuanLyThuVien: ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 169 Create Database QuanLyThuVien ON PRIMARY (Name = QLKH_DAT, filename = ‘c:\Program File\Microsoft SQL Server\MSSQL.1\MSSQL\Data\QuanLyThuVienDAT.mdf’, size = 10, maxsize = 50, filegrowth = 5) LOG ON (Name = QLKH_LOG, filename = ‘c:\Program File\Microsoft SQL Server\MSSQL.1\MSSQL\Data\QuanLyThuVienLOG.ldf’, size = 5MB, maxsize = 25MB, filegrowth = 5MB) b. Xóa Database Cú pháp Xóa database: DROP DATABASE database_name Ví dụ: lệnh Drop Database QuanLyThuVien sẽ xóa database QuanLyThuVien khỏi server c. Lưu trữ, phục hồi Database Phục hồi database Cú pháp để backup database: BACKUP DATABASE {database_name} TO [ ,… n] ::= { {logical_backup_device_name} | {DISK | TAPE} = {physical_backup_device_name} } Lưu trữ database RESTORE DATABASE {database_name} [FROM [ ,… n]] 3.2.3. Quản lý Table trong SQL Server 2005 Nội dung: - Tạo table - Sửa cấu trúc table ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 170 - Xóa table Sau khi tạo CSDL mới, cần thiết kế và tạo table để lưu giữ dữ liệu. Một bảng là một lưới hai chiều tạo thành cột (row) và dòng (column). Mỗi column trong table chứa thông tin về một đặc tính riêng biệt, dữ liệu trong mỗi column có kiểu dữ liệu xác định. Row chứa tất cả thông tin về một dữ liệu nhập xác định của một hoặc nhiều row. Mỗi row trong bảng chứa thông tin về một hạng mục. Để tạo, sửa hoặc xóa Table, chúng ta có thể dùng công cụ trong Object Explorer hoặc bằng lệnh T-SQL. 3.2.3.1. Dùng công cụ trong Object Explorer Trong cửa sổ của Object Explorer, sổ danh mục của đối tượng Database, chọn CSDL đã tạo, mở rộng CSDL này, chúng ta sẽ thấy có các đối tượng trong danh mục của CSDL: Database Diagrams, Tables, Views, Synonyms,… Chọn và nhấn phải chuột lên Tables, nhấn chọn New Table sẽ xuất hiện bảng Table – dbo.Table_1 hiển thị bên phải màn hình Management Studio. Bảng này gọi là Table Designer, chứa các cột: - Column Name: ten cột cần tạo - Data Type: kiểu dữ liệu của cột - Allow Nulls: nếu được chọn thì cột này cho phép giá trị NULL Như vậy, mỗi dòng của Table Designer chứa các thông tin đặc tả cho một cột của bảng cần tạo. Nhập tên các cột và kiểu dữ liệu của nó cho bảng muốn tạo. Ví dụ tạo 2 bảng Docgia, Tuasach trong CSDL QuanLyThuVien với các thông tin sau: Docgia Column Name Data Type Allow Nulls Ma_docgia Int Not null Ho Varchar (50) Null Ten_lot Varchar (50) Null Ten Varchar (50) Null Ngay_sinh smalldatetime Null ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 171 Nhấn phải chuột lên dòng Ma_docgia rồi chọn Set Primary Key để cho biết cột này là khoá chính hoặc nhấn nút hình chìa khóa trên thanh công cụ. Save cấu trúc bảng vừa tạo vào CSDL, hộp thoại Choose Name xuất hiện để nhập tên bảng cần tạo, ở đây là bảng Docgia, nhấn OK. Bảng vừa tạo được lưu trong CSDL QuanLyThuVien thuộc nhóm Tables. Để kiểm tra bảng Docgia cùng với những thông tin vừa tạo, mở rộng Tables trong CSDL QuanLyThuVien, đối tượng dbo.Docgia sẽ xuất hiện trong danh mục của Tables, chúng ta có thể xem hình vẽ dưới đây: Bảng Docgia vừa tạo chưa có CSDL nhưng chúng ta có thể truy vấn theo cách sau: chọn table Docgia, nhấp chuột phải và chọn Open Table, sẽ xuất hiện một bảng Table – dbo.Docgia bên phải màn hình Management Studio như hình dưới đây: ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 172 Tương tự, chúng ta tạo bảng Tuasach trong CSDL QuanLyThuVien, với cột Ma_tuasach là khóa chính: Tuasach Column Name Data Type Allow Nulls Ma_tuasach Int Not null Tua_sach Varchar (50) Null Tac_gia Varchar (50) Null Tom_tat Varchar (100) Null * Định nghĩa quan hệ cho bảng Các CSDL quan hệ hoạt động dùng quan hệ được định nghĩa giữa các bảng chứa trong mỗi CSDL. Quan hệ giúp tránh việc nhập trùng thông tin, như vậy giảm được nguy cơ dữ liệu không nhất quán. Chúng ta chỉ ra quan hệ bằng cách dùng khóa chính và khóa ngoại trong các bảng quan hệ. Nội dung dữ liệu bảng Docgia xuất hiện khi nhấp Open Table ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 173 Khóa chính là dấu hiệu duy nhất để xác định một dòng trong bảng. Nếu bảng có quan hệ với bảng khác, nó sẽ có một cột là khóa chính trong một bảng khác, cột đó được gọi là cột khóa ngoại. Để tạo quan hệ bảng, trong CSDL phải có ít nhất 2 bảng trở lên, ví dụ trong CSDL QuanLyThuVien, chúng ta tạo thêm bảng Dausach, với các thông tin dữ liệu như sau: Dausach Column Name Data Type Allow Null Isbn Varchar (20) Not null Ma_tuasach int null Ngon_ngu Varchar (50) Null Bia Varchar (50) Null Trang_thai int Null Thiết lập cột Isbn là khóa chính. Để tạo quan hệ giữa 2 bảng Tuasach và Dausach với cột Ma_tuasach là khóa ngoại trong bảng Dausach, chúng ta thực hiện như sau: - Nhấn phải chuột lên bảng Dausach và chọn Modify, bảng Dausach hiện chế độ thiết kế ở bên phải màn hình Management Studio. - Nhấn phải chuột lên dòng bất kỳ của bảng Dausach và chọn Relationship từ trình đơn ngữ cảnh. Hộp thoại Foreign Key Relationship xuất hiện. - Nhấn nút Add để tạo quan hệ khóa ngoại. Ở khu vực bên phải hộp thoại nhấn của dòng Tables and Columns Specification: ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 174 Sau khi nhấn nút, hộp thoại Tables and Columns xuất hiện. Trong hộp danh sách Primary key table chọn bảng Tuasach, nhấn chuột ở dòng bên dưới hộp danh sách này để chọn cột khóa chính của bảng Tuasach: Ma_tuasach. Trong hộp văn bản Foreign key table mặc định chứa tên bảng Dausach, nhấn chuột ở dòng bên dưới hộp văn bản để chọn cột khóa ngoại mà nó chứa: Ma_tuasach. - Nhấn OK đóng hộp lại. Thực hiện các thao tác tiếp theo để đóng hộp thoại Foreign Key Relationship, save các thao tác vừa thực hiện. Để kiểm tra, vào Tables, chọn và mổ rộng bảng Dausach, vào Column chúng ta sẽ thấy xuất hiện biểu tượng khóa ngoại (FK) của Ma_tuasach trong bảng Dausach: ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 175 * Nhập dữ liệu vào bảng vừa tạo Sau khi tạo bảng, chúng ta có thể nhập dữ liệu vào bảng vừa tạo như sau: - Chọn bảng muốn thêm dữ liệu, ví dụ bảng Docgia - Nhấn phải chuột lên bảng, chọn Open Table Bảng sẽ xuất hiện ở cửa sổ bên phải của giao diện Management Studio. Chúng ta có thể nhập trực tiếp dữ liệu vào từng cột của bảng. Nếu cột nào chấp nhận giá trị Null thì không cần nhập giá trị cho nó. Lưu ý: Nếu đang thêm dữ liệu vào bảng có khóa ngoại, chúng ta không thể thêm dữ liệu nếu không có khóa chính tương ứng trong bảng mà nó có quan hệ tới. Nghĩa là giá trị nhập vào cột khóa ngoại phải tồn tại trong cột khóa chính của bảng có cột đó là khóa chính. * Cập nhật, xóa dữ liệu trong bảng Phần này sẽ giới thiệu một số thao tác để sửa đổi hoặc xóa dữ liệu đang tồn tại trong bảng. Cập nhật dữ liệu ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 176 Để thêm hoặc sửa đổi dữ liệu trong bảng, vào Tables, chọn bảng cần thêm hoặc sử đổi dữ liệu, nhấn chuột phải chọn Modify, bên phải giao diện Management Studio sẽ xuất hiện lại bảng thiết kế, chúng ta có thể thêm hoặc sửa đổi dữ liệu tùy theo yêu cầu cần cập nhật. Hình vẽ dưới đây minh họa cho việc cập nhật dữ liệu trên bảng Dausach của CSDL QuanLyThuVien: Xóa dữ liệu trong bảng Để xóa dữ liệu đang tồn tại trong bảng, thực hiện các thao tác giống như cập nhật dữ liệu vào bảng, khi bảng thiết kế dữ liệu xuất hiện sau khi nhấn lệnh Modify, muốn xóa dữ liệu ở dòng nào, dùng chuột nhấp lên cột đầu tiên màu xám, khi đó cả dòng sẽ được tô sáng, click phải chuột chọn Delete Column. Nếu muốn xóa nhiều dòng dữ liệu cùng lúc, nhấn và giữ chuột trên vùng chọn dòng và rê sang dòng khác. Chúng ta xem ví dụ minh hoạ ở hình vẽ dưới đây: Thêm dữ liệu vào bảng Click chuột vào đây để sửa đổi dữ liệu trong bảng ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 177 3.2.3.2. Dùng T-SQL Cú pháp tạo bảng: CREATE TABLE [Database_name. [owner].| owner.] table_name ({ | column_name AS computed_column_expression | :: = [CONSTRAINT constrain_name]} | [{ PRIMARY KEY | UNIQUE } [,…n] ) Giải thích: - [Database_name. [owner].| owner.]: chỉ ra bảng thuộc CSDL nào, phần này có thể không cần thiết lập - Table_name: tên bảng, - Column_definition: định nghĩa các cột: ::= {column_name data_type} ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 178 [[DEFAULT constant_expression] | [IDENTITY [(seed, increment)] [ [,…n]] - Column_name: tên field - Computed_column_expression: biểu thức tính toán từ các field trong cùng table cho field tính toán. - Default: giá trị mặc định cho cột - Identity: giá trị của cột sẽ được tự động tăng theo seed và increment, chỉ dùng cho field kiểu int - Constraint: ràng buộc cho bảng Constraint cho phép định nghĩa các rule để bảo toàn các ràng buộc dữ liệu trong database. Có 2 loại constraint: + Column constraint: được định nghĩa như một thuộc tính của field, chỉ áp dụng và tham chiếu trên field đó: ::= [CONSTRAINT constraint_name] {[NULL | NOT NULL] | [{PRIMARY KEY | UNIQUE} [CLUSTERED | NONCLUSTERED] [ WITH FILLFACTOR = fillfactor] [ON {fillgroup | DEFAULT}] ] | [[FOREIGN KEY] REFERENCES ref_table ([ref_column]) [ON DELETE {CASCADE | NO ACTION}] [ON UPDATE {CASCADE | NO ACTION}] [ NOT FOR REPLICATION] (local_expression) } ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 179 + Table constraint: được khai báo độc lập với các field trong table và có thể tham chiếu đến nhiều cột trong table đó: ::= [CONSTRAINT constraint_name] {[{PRIMARY KEY | UNIQUE} [CLUSTERED | NONCLUSTERED] {(column [ASC |DES] [,…n])} [ WITH FILLFACTOR = fillfactor] [ON {fillgroup | DEFAULT}] ] | [[FOREIGN KEY] REFERENCES ref_table ([ref_column]) [ON DELETE {CASCADE | NO ACTION}] [ON UPDATE {CASCADE | NO ACTION}] [ NOT FOR REPLICATION] ] | [CHECK [NOT FOR REPLICATION] (local_expression) } Ví dụ tạo bảng Docgia, Dausach trong CSDL QuanLyThuVien: Use QuanLyThuVien Go Create table Docgia (Ma_docgia int identity (1,1) primary key, Ho varchar (50), Ten_lot varchar(50), Ten varchar (50), Ngay_sinh smalldatetime) Create table Dausach (Isbn varchar(50) primary key, Ma_tuasach int , Ngon_ngu varchar(50), Bia varchar(20), Trang_thai int) * Thêm, sửa, xóa dữ liệu trong bảng Để thêm hoặc sửa dữ liệu vào bảng, chúng ta dùng cú pháp lệnh: ALTER TABLE….. ADD…. Để xóa field trong table ta dùng cú pháp lệnh ALTER TABLE….. DROP…. Để xóa table dùng lệnh ALTER TABLE ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 180 Lưu ý: chúng ta không thể xóa 1 table mà được tham chiếu (references) bởi 1 ràng buộc (constraint) foreign key . Ràng buộc foreign key hoặc table tham chiếu phải được xóa trước. Ví dụ: - Thêm field Ngon_ngu vào bảng Dausach: Alter table Dausach Add Ngon_ngu varchar (50) - Thêm khóa chính cho column Isnb: Alter table Dausach Add primary key (Isbn) - Tạo khóa ngoại cho column Ma_tuasach: Alter table Dausach Add foreign key (Isbn) references Tuasach (Ma_tuasach) - Xóa column Ngon_ngu: Alter table Dausach Drop column Ngon_ngu - Xóa ràng buộc khóa ngoại Ma_tuasach: Alter table nocheck constraint FK_Dausacu_Tuasach 3.2.4. Quản lý View trong SQL Server 2005 View là một table ảo, dùng để lưu trữ một truy vấn được định trước, được xem là một đối tượng trong database. Các table tham gia truy vấn được gọi là base table: - Dữ liệu trong View được lấy từ các bảng - Là sự kết hợp từ một hoặc nhiều bảng - Là sự quan hệ giữa một hoặc nhiều bảng - Có thể chứa các tính toán - Có thể kết hợp giữa các bảng và các View khác View hoạt động cũng giống như bảng. Nó cũng chứa dữ liệu theo dòng và cột, cho phép chúng ta nhận giá trị của một cột xác định trong một dòng xác định. Tuy nhiên, View không cho phép việc lưu giá trị. Nó chỉ chứa thông tin hướng dẫn cho server CSDl biết cách nhận dữ liệu đó. Khi mở View, server thực thi những hướng dẫn này và tạo ra bảng ảo từ View. Bảng ảo này chỉ tồn tại khi chúng ta làm việc với nó, nó không bao giờ được lưu giữ trên đĩa cứng. ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 181 Docgia Ma_docgia Ho Tên_lot Tên Ngay_sinh 1 Tran Tan An … 2 Pham Van Anh … 3 Nguyen Hai Binh … Docgia Ho Tên_lot Tên Tran Tan An Pham Van Anh Nguyen Hai Binh Lợi ích của View: - Tập trung vào dữ liệu đang cần - Che những phần dữ liệu chưa cần dùng trong database - Đơn giản hóa việc quản lý quyền user - Cải thiện việc thực thi - Tổ chức lại dữ liệu để xuất ra cho các ứng dụng bên ngoài. Cũng giống như Database, Table, chúng ta có thể dùng công cụ Object Explorer hoặc dùng tập lệnh T-SQL để quản lý View. 3.2.4.1. Dùng công cụ Object Explorer a. Tạo View Để tạo View bằng công cụ, ta thực hiện các bước sau: - Trong cửa sổ Object Explorer, chọn CSDL muốn tạo View, nhấp phải chuột lên Views, chọn New View, hộp thoại Add Table xuất hiện. Trong hộp thoại Add Table chọn bảng muốn tạo View rồi nhấn Add, sau khi chọn xong, nhấn Close để đóng hộp thoại. Use QuanLyThuVien Go Create view dbo.DocgiaView As Select Ho, Ten_lot, Ten from Docgia User’s view ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 182 Trong hình vẽ trên, chúng ta chọn 3 bảng Cuonsach, Docgia và Quatrinhmuon để tạo View Quatrinhmuonsach. Mục đích: lấy dữ liệu của các cuốn sách với thông tin tương ứng về quá trình mượn sách và độc giả mượn sách. - Trong cửa sổ View, kéo cột Ma_cuonsach trong bảng Cuonsach, thả vào cột Ma_cuonsach trong bảng Quatrinhmuon; kéo cột Ma_docgia trong bảng Quatrinhmuon thả vào cột Ma_docgia trong bảng Docgia để tạo liên kết giữa 3 bảng. Nhấn chọn hộp kiểm phía trước tên cột ở nhưng cột muốn tạo View. Các tên cột đã chọn được thêm vào các bảng tiêu chuẩn ở bên dưới các View. Để xem thử kết quả dữ liệu trả về, nhấn F5 hoặc Execute trên thanh công cụ (biểu tượng ). Nhấn save để lưu các thao tác vừa thực hiện. Để xem kết quả, trong cửa sổ Object Explorer, chọn Views sẽ thấy View vừa tạo. Chúng ta có thể xem qua hình vẽ minh họa dưới đây: ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 183 b. Thay đổi, xóa View Nếu muốn thay đổi một View đang tồn tại, thực hiện như sau: Nhấn phải chuột lên View muốn thay đổi, chọn Modify từ trình đơn ngữ cảnh. Thực hiện thay đổi rồi nhấn nút save để lưu. Nhấn Close để đóng. Để xóa View, chọn View cần xóa, nhấp chuột phải chọn Delete từ trình đơn ngữ cảnh. 3.2.4.2. Dùng T-SQL a. Tạo View Cú pháp tạo View: ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 184 Các tham số sử dụng trong cú pháp tạo View: Ví dụ tạo View vw_rptQuaTrinhMuonSach bằng lệnh T-SQL: Create View vw_rptQuaTrinhMuonSach As Select C.Isbn, C.Ma_cuonsach, C.Tinh_trang, D.Ma_docgia, Q.ngay_hethan, Q.ngay_giotra, Q.tienmuon, Q.tien_datra, Q.tien_datcoc ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 185 From (Cuonsach C inner join Quatrinhmuon Q on C.isbn = Q.isbn) INNER JOIN Docgia D ON D.ma_docgia = Q.ma_docgia Select *from vw_rptQuaTrinhMuonSach (lệnh này để xem view vừa tạo) Luu ý: - Để tạo View phải có quyền CREATE VIEW, và quyền SELECT TABLE trong các table cơ sở. - Tên View lưu trữ trong sysobjects table, tên cột của View được lưu trữ trong syscolumns, text dùng để tạo View lưu trữ trong syscomments table. b. Sửa đổi, xóa View Để sửa cấu trúc View ta dùng cú pháp lệnh: Để xóa View ta dùng lệnh: Drop View view_name 3.2.5. Quản lý Store Procedure trong SQL Server 2005 Store Procedure là một tập các lệnh Transact SQL được đặt tên và lưu trữ trong database server. Store Procedure có thể nhận tham số vào và tham số trả giá trị về. Trả về trạng thái thực thi của procedure là thành công hay không thành công. Các loại store procedure: - System (sp_): có trong master database, được truy xuất từ bất kỳ database nào, nhằm cung cấp các thông tin system catalog hoặc thực hiện các nhiệm vụ của adminstration. - Local: được tạo từ user - Temporary: có tên bắt đầu bằng # (local) hoặc ## (global). Không còn tồn tại sau khi SQL Server shutdown. - Remote: giới hạn việc thực hiện một store procedure trên remote SQL Server Alter View [(column [,…n])] [WITH [,…n]] AS Select_statement [WITH CHECK OPTION] ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 186 - Extended (xp_): chỉ được có trong master database, được thể hiện bởi các ngôn ngữ khác và được gọi là các DLL. Sau khi viết xong extended store procedure, sysadmin đăng ký extended store procedure với SQL Server và sau đó gán quyền cho user khác để thực hiện. Lợi ích của Store Procedure: - Cho phép lập trình theo hướng modular (modular programming) - Thực thi nhanh hơn, giảm được việc chiếm dụng đường truyền mạng - Bảo mật - Xử lý các chức năng và chia xẻ với các ứng dụng khác. Cú pháp tạo Store Procedure Giải thích: - procedure_name: tên store procedure - @paramater: tham số, có tối đa 2.100 parameters trong 1 procedure - data_type: kiểu dữ liệu của tham số, bao gồm tất cả kiểu dữ liệu trong SQL Server, tuy nhiên kiểu cursor chỉ được dùng cho output parameter - default: giá trị mặc định, nếu tham số có giá trị mặc định, thì khi thực hiện procedure, có thể user không cần truyền tham số vào khi thực thi (nó sẽ có giá trị (default). - OUTPUT: chỉ định rằng đây là output parameter - RECOMPLIE: procedure sẽ được dịch lại mỗi khi thực thi - ENCRYPTION: mã hóa mã lệnh của lệnh CREATE PROCEDURE khi lưu vào table syscomment. Lưu ý: - Để tạo procedure, user phải có quyền CREATE PROCEDURE (sysadmin, hoặc database owner) create procedure procedure_name [{@parameter Data_type} [ VARYING ] [ = default ] [ OUTPUT ] ] [,…n] [ WITH {RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION}] AS SQL STATEMENT ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 187 - Có thể tham chiếu đến các table, view, procedure khác cũng như các temporary table - Kích thước tối đa của procedure là 128 MB - Có thể lồng 32 cấp procedure - Dùng procedure sp_helptext để hiển thị nội dung text của store procedure mà user dã tạo. - Không thể kết hợp lệnh CREATE PROCEDURE với các lệnh SQL khác để tạo thành một bó lệnh. Ví dụ: Tạo Procedure với tên sp_ThongTinDocGia trong CSDL QuanLyThuVien Nội dung: liệt kê những thông tin của độc giả tương ứng với mã độc giả. Nếu độc giả là người lớn thì hiển thị thông tin độc giả và thông tin trong bảng người lớn. Nếu độc giả là trẻ em thì hiển thị những thông tin độc giả và thông tin trong bảng trẻ em. Câu lệnh tạo như sau: ALTER procedure sp_ThongTinDocGia @ima_docgia int as declare @flag smallint set @flag = null select top 1 @flag = 1 from Nguoilon where ma_docgia = @ima_docgia if (@flag is not null) select D.ma_docgia, D.ho, D.ten_lot, D.ten, D.ngay_sinh, N.sonha, N.duong, N.quan, N.dienthoai,N.han_sd from Docgia D inner join Nguoilon N on D.ma_docgia=N.ma_docgia where D.ma_docgia=@ima_docgia else begin select top 1 @flag = 1 from Treem where ma_docgia = @ima_docgia if (@flag is not null) select D.ma_docgia,D.ho,D.ten_lot,D.ten,D.ngay_sinh,T.ma_docgia from Docgia D inner join Treem T on D.ma_docgia=T.ma_docgia where D.ma_docgia=@ima_docgia end ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 188 Nếu thành công phía dưới cửa sổ Query, sẽ xuất hiện thông báo: Command (s) completed successfully Để kiểm tra, vào CSDL QuanLyThuVien, chọn Programmability, vào Stored Procedures, sẽ thấy procedure sp_ThongTinDocGia. Để thực thi procedure, chúng ta dùng lệnh EXECUTE procedure_name Ví dụ: Exec sp_ThongTinDocGia ‘01’ Go 3.2.6. Quản lý Trigger trong SQL Server 2005 Trigger là một store procedure đặc biệt được gọi tự động khi user cập nhật dữ liệu trên một table, nghĩa là thay vì được thực thi bởi user, trigger được thực thi bởi server CSDL khi một hoạt động xác định được thực hiện trên bảng. Trigger được định nghĩa trên một table cụ thể. Khác với procedure, trigger không được gọi trực tiếp, không nhận tham số. Trigger là một phần của Transaction: những lệnh trong trigger được xem là một single transaction, có thể được rollback từ bất kỳ chỗ nào trong trigger. Mục đích sử dụng trigger: ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 189 - Để thực hiện cascade updates và cascade deletes qua các table quan hệ trong database - Ép buộc tính toàn vẹn dữ liệu phức tạp: thực hiện các ràng buộc có tham chiếu đến các column trong nhiều table - Định nghĩa Custom Error Message: Dùng trigger để trả về các chuỗi thông báo trạng thái của một hành động nào đó. - Bảo trì các dữ liệu không được chuẩn hóa. Trigger hoạt động như thế nào? - Trigger được thực hiện tự động sau khi lệnh INSERT, UPDATE hoặc DELETE được thực hiện trên một table mà trigger đó được định nghĩa. Còn các CONSTRAINT và INSTEAD OF trigger sẽ được kiểm tra trước khi lệnh INSERT, UPDATE hoặc DELETE được thực hiện. CONSTRAINT sẽ được kiểm tra trước trigger. - Một table có thể có nhiều trigger cho một hành động, một trigger có thể được định nghĩa cho nhiều hành động. - Khi có nhiều trigger trong một table thì table owner có thể dùng procedure hệ thống sp_settriggeroder để chỉ định trigger đầu và trigger cuối để thực thi. Thứ tự của các trigger còn lại không thể sắp xếp được. User phải có quyền để thực hiện tất cả các lệnh mà được định nghĩa trong trigger. - Table owners không thể tạo ra các trigger trên View hoặc Temporary tables nhưng có thể tham chiếu đến View và temporary. - Trigger không trả kết quả về - Trigger có thể điều khiển multi-row actions: một hành động INSERT, UPDATE hoặc DELETE gọi một trigger có thể ảnh hưởng lên nhiều dòng dữ liệu. Ta có thể chọn xử lý theo 2 cách: + Xử lý tất cả các dòng cùng với nhau trong trường hợp các dòng ảnh hưởng phải thỏa điều kiện của trigger. + Xử lý từng dòng thỏa điều kiện. Hoạt động của trigger với vai trò là logic tables: ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 190 - Khi có hành động insert, table inserted sinh ra, có cấu trúc giống với cấu trúc table được insert, có dữ liệu là record đang được insert. - Khi có hành động delete, table delete sinh ra, có cấu trúc giống với cấu trúc table bị deleted, có dữ liệu là record đang bị xóa. - Khi có hành động update, sẽ có 2 table inserted và deleted được sinh ra. Cú pháp tạo Trigger: Giải thích: - Table/View: tên table, view được thực hiện khi có hành động tương ứng. - With Encryption: mã hóa nội dung text của lệnh create trigger trong table syscomments - After: Trigger được gọi chỉ khi tất cả các hành động đã thực hiện xong. Các kiểm tra constraint và cascade sẽ được kiểm tra hoàn thành trước khi trigger thực hiện. Default là After nếu chỉ có từ khóa For được chỉ định. After trigger không thể được định nghĩa trên View. - Instead of: chỉ định trigger được thực hiện thay cho hành động của trigger. Instead of trigger không cho phép cập nhật dữ liệu trên View có With Check Option. ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 191 - Delete, insert, update: chỉ định hành động gắn với trigger. Đối với instead of trigger, Delete không cho phép trên table mà có relationship mà chỉ định Cascade On Delete. Tương tự, hành động Update không cho phép trên trên table mà có relationship Cascade On Update. - Table deleted và inserted là logical tables. Chúng có cấu trúc giống với table mà trigger được định nghĩa, chứa các dòng giá trị cũ hoặc mới mà có thể thay đổi bởi hành động của user. Chúng ta có thể truy xuất dữ liệu trong 2 table này trong định nghĩa trigger. - Các giá trị text, ntext hoặc image trong table inserted và deleted không truy xuất được. Khi trigger ở mức 65, giá trị null sẽ được trả về cột có kiểu text, ntext hoặc image trong table inserted hoặc deleted nếu cột cho phép null; chuỗi zero-length được trả về nếu cột có thể null. - With Apend: chèn thêm trigger này vào các trigger đã có trước đó. - If update (column): kiểm tra hành động Update trên cột được chỉ định, không dùng cho hành động delete. Lưu ý: Các lệnh sau đây không được dùng trong định nghĩa trigger: - Create, Alter, Drop, Load, Restore Database - Load, Restore Log - Disk Init - Disk Resize - Reconfigure Ví dụ: Trong CSDL QuanLyThuVien, tạo trigger có tên tg_updCuonSach vói nội dung: khi thuộc tính tình trạng trên bảng Cuonsach được cập nhật thì trạng thái của bảng Dausach cũng được cập nhật. Create trigger [tg_updCuonsach] on [dbo].[Cuonsach] for update as declare @isbn varchar(50) declare my_cursor cursor for select isbn from inserted open my_cursor ĐỒ ÁN CƠ SỞ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN 192 fetch next from my_cursor into @isbn while (@@fetch_status = 0) begin exec sp_CapnhatTrangthaiDausach @isbn fetch next from my_cursor into @isbn end close my_cursor deallocate my_cursor Sửa đổi cấu trúc, xóa Trigger: Cú pháp để sửa đổi cấu trúc của Trigger như sau: Để xóa Trigger ta dùng cú pháp lệnh: DROP TRIGGER trigger_name

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

  • pdfPhát triển ứng dụng cơ sở dữ liệu với C# và Net Framework.pdf