MS SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ (RDBMS _ Relational Database Management System) có tính mở, đáng tin cậy, là hệ quản trị cơ sở dữ liệu theo mô hình Client/Server và có thể dễ dàng phát triển theo mô hình dữ liệu phân tán. RDBMS là một trong những mô hình cơ sở dữ liệu quan hệ thông dụng hiện nay.
MS SQL Server cung cấp đầu đủ các công cụ để
18 trang |
Chia sẻ: vietpd | Lượt xem: 2573 | Lượt tải: 3
Bạn đang xem nội dung tài liệu Tìm hiểu sql server, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Phần 2 : TÌM HIỂU SQL SERVER
Chương 1 : TỔNG QUAN VỀ SQL SERVER 2000
TỔNG QUAN:
MS SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ (RDBMS _ Relational Database Management System) có tính mở, đáng tin cậy, là hệ quản trị cơ sở dữ liệu theo mô hình Client/Server và có thể dễ dàng phát triển theo mô hình dữ liệu phân tán. RDBMS là một trong những mô hình cơ sở dữ liệu quan hệ thông dụng hiện nay.
MS SQL Server cung cấp đầu đủ các công cụ để:
Dễ dàng xây dựng một cơ sở dữ liệu quan hệ lớn, mỗi cơ sở dữ liệu này có thể chứa 2 tỷ quan hệ và mỗi quan hệ có thể chứa đến 1024 thuộc tính.
Giải quyết tình trạng va chạm giữa các user khi cùng truy xuất một dữ liệu tại cùng một thời điểm.
Bảo đảm các ràng buộc toàn vẹn trên cơ sở dữ liệu.
Bảo vệ an toàn cơ sở dữ liệu (Quản lý những mức độ để truy cập vào cơ sở dữ liệu).
Truy vấn dữ liệu nhanh.
MÔ HÌNH CLIENT / SERVER:
Các khái niệm :
Khái niệm về phần cứng :
Client/ Server là kiến trúc gồm hai thành phần máy Client và máy Server, hai thành phần này liên lạc với nhau thông qua hệ thống mạng.
Khái niệm về xử lý :
Khi xây dựng và khai thác ứng dụng trên môi trường mạng, một trong những điều cần quan tâm trước tiên là đánh giá các tính năng của hệ thống mạng. Việc xây dựng và khái thác ứng dụng trên mạng sẽ dễ dàng hơn nếu có hệ thống mạng ổn địn, thi hành và đáng tin cậy. Tuy nhiên , đối với bất kỳ hệ thống mạng nào, khi xây dựng các ứng dụng trên nó ta cũng cần phải tính toán sao cho việc truyền tải dữ liệu là tốt nhất (giảm lượng lưu thông dữ liệu trên đường truyền mà vẫn đáp ứng yêu cầu về dữ liệu), và an toàn nhất. Mô hình tính toán client/ server nhằm giải quyết vấn đề này.
Trong mô hình tính toán client/server, các việc xử lý dữ liệu, xử lý logic và giao diện người dùng được phân chia ra và được thực hiện tại nhiều điểm khác nhau trong mạng. Máy client gửi tới máy chủ các yêu cầu truy vấn dữ liệu hoặc cập nhật dữ liệu (thêm, xoá, sửa các mẫu tin). Máy server khi nhận được yêu cầu truy vấn, sau khi kiểm tra quyền truy cập của người yêu cầu, sẽ tiến hành chọn lọc, tính toán, tổng hợp thông tin trong cơ sở dữ liệu để gửi trả kết quả truy vấn theo yêu cầu của máy client. Khi nhận được yêu cầu cập nhật dữ liệu (thêm, xoá, sửa), máy chủ ngoài việc kiểm tra quyền cập nhật của người yêu cầu còn phải bảo đảm việc cập nhật không phá vỡ tính toàn vẹn của dữ liệu. Database server còn có nhiệm vụ liên lạc với cơ sở dữ liệu khác để lấy được các thông tin cần thiết, đảm bảo cho người dùng được những thông tin cần một cách thông suốt cho dù dữ liệu thực sự nằm phân tán ở nhiều máy chủ khác nhau.
Việc phân chia nhiệm vụ giữa client và server là nhân tố quyết định sự thành bại của việc ứng dụng mô hình tính toán client/ server.
Phân loại ứng dụng client/ server :
Thông thường một ứng dụng được chia thành 6 ứng dụng như sau:
Giao diện với người dùng (User Interface) là những thể hiện trên màn hình mà User thấy có thể tương tác được.
Logic trình bày (presentation logic) là những gì xảy ra khi User tương tác vào những thể hiện trên màn hình.
Logic ứng dụng (application logic) là những trương trình hay đoạn trương trình thi hành những chức năng nào đó.
Truy vấn dữ liệu và kết quả
Toàn vẹn dữ liệu(data integrity) nhu: chứng nhận hợp lệ, an toàn và toàn diện
Quản lý dữ liệu vật lý (physical) thêm, xoá, sửa, phục hồi.
Đối với ứng dụng client/server thì tuỳ thuộc vào yêu cầu của nó mà mỗi nhiệm vụ trên được đặt vào thành phần client hay server để cho ở đó nó được thực hiện hiệu quả nhất. Dựa vào cách đặt nhiệm vụ trên mà người ta đã phân ứng dụng client/server thành 3 loại: Host- based procesing. Client – based procesing và cooperative procesing.
Server :
Khái niệm về phần cứng
Là một máy có cấu hình tuỳ thuộc vào việc ta sử dụng mội trường phần mền nào để xây dựng càc ứng dụng và yêu cầu về cấu hình của hệ điều hành muốn dùng trên server.
Khái niệm về xử lý
Là tính cung cấp dịch vụ cho máy khác trên mạng. Các dịng vụ như chia sẻ file, cầu nối mạng, sử lý ứng dụng,…
Đối với mô hình client/ server. server làm nhiệm vụ quản lý việc truy cập CSDL, nhận các yêu cầu từ client để xử lý và gởi kết quả về cho client yêu cầu.
Phân loại server
Dựa vào chức năng của server người ta chia server ra làm 6 loại: File server, data server, computer server, application server, và communication server.
File server
Quản lý ứng dụng của một nhóm, và quản lý những file dữ liệu. Do đó những file dữ liệu này có thể được chia sẻ trong nhóm.
Khi client đòi hỏi dữ lịeu trong một file. Fioler server sẽ chuyển toàn bộ những file cùng với index đến client, do vậy sẽ gay lưu thông lớn trên mạng và chuyển những dữ liệu không cần thiết.
Việc khoá file thể hiện khóa một phần hay khóa toàn bộ file, không phân chia khóa để đọc và khoá để ghi.
Application server
Mô hình này là sự thay thế host- terminal. Application server chịu trách nhiệm quản lý dữ liệu và thi hành các ứng dụng.
Data server
Chỉ quản lý những dữ liệu và những chứx năng để đảm bảo cho sự toàn vẹn dữ liệu. Thường hoạt động chung với computer server. Data server do lưu trữ và cung cấp dữ liệu.
Computer server
Quản lý những chức năng : Khi client đòi hỏi dữ liệu, nó sẽ yêu cầu data server theo cách lấy dữ liệu ít nhất mà vẫn thoả mãn yêu cầu của client, sau đó sẽ sử trên những dữ liệu này và gởi kết quả về cho client
Database server
Sự kết hợp của computer server với data server. Khi client gởi yêu cầu đến server, server có thể chấp nhận hoăc không, nếu chấp nhận server sẽ truy cập dữ liệu cần thiết đang nằm trên server cụ bộ (local), hoặc ở trên các server khác để sử lý và trả kết quả về cho client. Cách sử lý này giúp tối ưu hoá đường truyền:
Client chịu trách nhiệm trình bày và là đầu vào các yêu cầu gởi cho server
Server do quản trị CSDL, quản lý sự hợp tác với các server khác
Multipprocessing
Có khả năng dùng được nhiều processor đồng thời ( theo cách phân chia tự động nhiệm vụ hoặc dán sẵn nhiện vu cho prosesor)
Multihread
Thread là đơn vị nhỏ nhất có thể lập thời khóa biểu để dễ thực hiện. Mỗi thread có một stack, một intruction pointer,một thứ tự yêu tiên, trạng thái CPU và một entry trong danh sách phân bố của hệ thống.Một thread có thể thi hành hoặc đang bị treo. Thread là đơn vị con của process độc lập với nhau, có thể thực sự hoạt động đồng hành với nhau trên nhữnh CPU khác nhau.
Disk Array
Nhiều đĩa vật lý có thể được quản lí như một đĩa logic và xuyên suốt đối với người dùng.
Mirror disk
Có hai đĩa trống chứa cùng dữ liệu, khi bị hư một đĩa sẽ phục hồi từ đĩa còn lại
Error correction code memory
Dùng biểu diễn chuẩn để phát hiện và sửa chữa khi có sai xót trong lúc chuyển dữ liệu trên server
Phần mềm server
Dữa vào nhiệm vụ người ta phân thành 8 loại phần mềm hoạt động tren server. Nhưng phải có cơ chế kết hợp với nhau thành hệ thống nhất. Tám loại bao gồm : network manegement enviroment, netword computing enviroment and extension, netword operatingsystem. Server operating system, loadable module, database management, database gateway, application.
Netword computing enviromennt
Mội trường tính toán mạng cho phép những ứng dụng phân tán ở nhiều mội trường phần cứng và phần mềm
Các chuẩn OSF hỗ trợ cho cấu trúc này là :
- Môi trường phân tán DCE
- Tính toán hướng mở rộng mạng ONC
Netword operating system
Hệ điều hành mạng quản lý các xử lý liên quan đến xuất / nhập của server
Loadable module
Là những module phần mềm được load trên server nhằm làm tăng thêm chức năng cho hệ điều hành
Server operating system
Hệ điều hành server quản lý các tài nguyên của server. Nó tương tác với hệ điều hành mạng và phần mềm xử lý dữ liệu để nhận và trả lới các yêu cầu từ người dùng.
Database gateway
Hoạt động như bộ đổi dữ liệu, những câu lệnh SQL, và các ứng dụng từ một liểu CSDL thành liểu khác.
Client :
Khái niệm về phần cứng
Là một máy destop thực thi phần mềm client. Destop là thuật ngữ dùng để chỉ toàn bộ màn hình doa diện người- máy bao gồm các cửa sổ, biểu tượng và các hộp thoại … trên client có thể chạy các phần mềm giap tiếp, hệ điều hành ,phần mềm truyền tthông
Khái niệm về xử lý
Trong môi trường client /server công việc của client thực hiện chức năng trìng bày, xử lý các tương tác giữa người sử dụng và ứng dụng. Máy client gửi tới máy chủ các yêu cầu truy vấn dữ liệu hoăc cập nhật dữ liệu(thêm,xoá ,sửa các mẫu tin) đồng thời nhận kết quả trả về từ máy client
Như thế nào là client tốt
Một client tốt phải đáp ứng các yêu cầu sau:
Giao diện đáp ứng được các tác vụ cần thiết và thân thiện với người sử dụng
Không trình bày những thông tin không cần thiết đối với công việc của trạm làm việc
Phần cứng client
Là một máy tính có cấu hình tuỳ thuộc vào việc ta sử dụng mội trường phần mềm nào để xây dựng các ứng dụng và yêu cầu về cấu hình của hệ điều hành muốn dùng trên client
Phần mềm client
Hệ điều hành :
Microsoft windows
DOS, OS/2, UNIX client
Phần mềm :
Mỗi máy client có thể chạy bốn loại phần mềm: Môi trường giao tiếp, logic ứng dụng,hệ điều hành client, và hệ điều hành mạng, tuỳ theo yêu cầu của ứng dụng mà ta lựa chọn phần mềm thích hợp.
Môi trường giao tiếp
Giúp cho người dùng không cần biết dữ liệu ở đâu mà vẫn truy cập được
Đáp ứng việc gởi những yêu cầu và nhận kếy quả từ server
Địng dạng kết quả đúng yêu cầu
Giúp truy vấn nhanh đúng dữ kiệu
Lợi ích của mô hình client- server
Tiết kiệm:
Chi phí về phần cứng : máy client và server có thể là những máy tính không đắt tiền lắm ( không cần sử dụng những máy điện toán đắt tiền).
Chi phí phần mềm: những ứng dụng trên cấu trúc client server có thể phát triển với thời gian ít hơn so với việc phát triển ứng dụng trên môi trường mainframe và phần mềm trên máy vi tính thì rẻ hơn trên mainframe.
Tăng năng xuất sản phẩm
Thông qua giao diện người sử dụng có thể dẽ dàng truy cập dự liệu mà không cần phải biết cách thức lưu trữ của những dữ liệu mà mình truy cập
Hiện nay có nhiều công cụ mạnh giúp dẽ dàng thiếy kế cái đặt một ứng dụng trên cấu trúc client / server
Uyển chuyển và rộng rãi
Bằng cách phân chia những ứng dụng ra thành những nhiệm vụ nên có thể dẽ dàng hoà hợp với những kĩ thuật mới đồng thới vẫn bảo đảm tương thích với những kĩ thuật cũ mà rất ít phải gặp trở ngại.
Việc xây dựng theo module khiến cho cộng việc sửa chữa bổ sung được dễn dàng.
d. Tận dụng tài nguyên
- Cho phép liên kết với những ứng dụng phần cứng hiện có một cách hiệu quả mà không cần phải thay mới.
Điều khiển tập trung
Hệ mở rộng
Cấu trúc client sever kết hợp với kĩ thuật Rightsizing làm tăng tính uyển chuyển và mở rộng
Kỹ thuật rightsizing bao gồm :
Downsizing chuyển từ môi trường lớn sang môi trường nhỏ hơn
Upsizing chuyển từ môi trường nhỏ sang môi trường lớn
Smarsizing tính toán phân chia và đặt các nhiệm vụ lại cho thích hợp với môi trường mới
Các chú ý khi xây dựng client/ sever
Khi thực hiện tính toán client sever cần quan tâm đến các vấn đề sau:
Khả năng hoạt động của hệ thống mạng tốc độ truyền độ tin cậy đường truyền khả năng hoạt động của máy server và khả năn hoạt động của máy client
Giảm thiểu dữ liệu truyền: phân phối hợp lý các sử lý
Tính toán sao cho hợp lý thời gian giữ kết nối của máy client/ server
Tận dụng sao chép đối với hệ thống mang diện rộng
Xây dựng hợp lý các chỉ mục trên cơ dữ liệu
Tận dụng các thủ tục có sẵn
Tối ưu hệ thống hoá phục vụ server:dung lượng bộ nhớ, xem các trường hợp phân trang sao cho hợp lý
Chạy thử trên ứng dụng máy server, chạy thử trên máy client sau đó so sánh và điều chỉnh hệ thống mạng nếu cần thiết.
Chương II : LẬP TRÌNH TRÊN SQL SERVER
TỔNG QUAN:
Khi xây dựng ứng dụng chạy trên mạng máy tính theo mô hình tính toán Client – Server có thể sẽ có các xử lý tính toán dữ liệu mà ta cần chúng thực hiện tại máy Server. Điều này có nghĩa là ta cần phải xây dựng các xử lý tính toán và các xử lý tính toán này được lưu trên Server.
SQL Server cung cấp công cụ đủ mạnh để ta có thể xây dựng các xử lý về dữ liệu đáp ứng yêu cầu như trên. Với những đối tượng dữ liệu View, Trigger và Stored Procedure, ta có thể dùng SQL để tạo những chương trình nhỏ. Trong khi đó Trigger và Stored Procedure đã rất mạnh, ta vẫn có thể làm cho chúng mạnh hơn bằng cách kết hợp SQL chuẩn với những tính năng lập trình cao cấp của Transact-SQL.
SQL Server cung cấp Transact_SQL là một phiên bản của SQL, nó cũng là một ngôn ngữ lập trình và truy vấn cơ sở dữ liệu. Với Transact_SQL ta có thể truy vấn, cập nhật dữ liệu và quản trị các hệ thống cơ sở dữ liệu quan hệ.
BIẾN TRONG TRANSACT-SQL:
Biến cục bộ (local variable) trongTtransact-SQL:
Một biến cục bộ trong Transact-SQL là một đối tượng có thể lưu giữ một giá trị dữ liệu đơn có một kiểu xác định. Các biến trong batches và scripts được sử dụng tiêu biểu như sau:
Sử dụng như là một bộ đếm dùng để đếm số lần lặp được thực hiện hoặc dùng để điều khiển vòng lặp.
Sử dụng để lưu giữ giá trị dữ liệu sẽ được kiểm tra bởi một lệnh điều khiển dòng (ontrol-of-flow).
Sử dụng để ghi nhận giá trị trả về từ một Stored Procedure (khái niệm Stored Procedure sẽ được đề cập ở phần VI).
Biến toàn cục (local variable):
Các biến toàn cục được sử dụng trong tình huống mà ta cần gởi dữ liệu hoặc đối tượng có sự liên quan giữa một vài Microsoftâ ActiveXâ scripts khác nhau trong một gói đơn.
SQL Server cung cấp sẵn một số biến toàn cục rất tiện ích cho việc lập trình và quản trị hệ thống. Để xem các giá trị hiện tại của các biến toàn cục này, ta có thể thực thi (exec) thủ tục được xây dựng sẵn có tên sp_monitor.
ĐỊNH DANH:
Tên của một đối tượng database được hiểu là định danh. Tất cả các đối tượng trong Microsoftâ SQL Serverä có thể có một định danh. Tất cả các Server, database và các đối tượng trong database như table, views, columns, indexes, triggers, procedures constraints, rules, và v.v… đều có các định danh. Hầu hết mọi đối tượng đều yêu cầu có một định danh.
Một định danh của một đối tượng được tạo khi đối tượng được định nghĩa. Sau đó ta sử dụng định danh để tham chiếu đến đối tượng.
Có 2 lọai định danh:
Các định danh chuẩn (regular identifiers)
Tuân theo các quy tắc hình thức của các định danh. Các định danh chuẩn không bị giới hạn khi chúng được sử dụng trong các câu lệnh Transact-SQL.
Một định danh có thể chứa từ 1® 128 ký tự. Đối với table tạm, định danh không vượt quá 116 ký tự.
Các định danh phân định (delimited identifiers)
Một định danh tuân theo tất cả các quy tắc cho hình thức định danh có thể sử dụng hoặc không các dấu phân định. Một định danh mà nó không tuân theo các quy tắc về hình thức của các định danh chuẩn, nó phải được phân định.
KIỂU DỮ LIỆU:
Kiểu dữ liệu được dùng để xác định kiểu thông tin (số, ký tự, …) và cần bao nhiêu không gian để chứa thông tin trong một cột. Ta phải chọn kiểu dữ liệu cách cẩn thận, vì chúng không dễ dàng thay đổi khi bảng được tạo xong và khi đã nhập liệu. Một số kiểu dữ liệu có chiều dài thay đổi, trong khi số khác có chiều dài cố định. Các kiểu dữ liệu của SQL Server có thể được phân thành các nhóm sau :
string (chuỗi)
chuỗi Unicode binary (nhị phân)
integer (số nguyên)
approximate numeric (số gần đúng)
exact numeric (số chính xác)
special
date and time (ngày và giờ )
money (tiền tệ)
auto-incrementing datatypes (kiểu dữ liệu tự tăng)
synonym (tương đương)
user-defined (kiểu người sử dụng định nghĩa)
computed column (cột tính)
· Dữ liệu Unicode sử dụng bộ ký tự Unicode UCS-2 là bộ ký tự nhiều byte. Khi bạn sử dụng các ký tự ANSI bình thường, mỗi ký tự được lưu trong một byte. Chính vì điều này mà đôi khi ANSI bị coi là “hẹp hòi”. Unicode được gọi là bộ ký tự mở rộng với nhiều byte cho một ký tự. Bộ ký tự Unicode UCS-2 sử dụng 2 byte để biểu thị cho một ký tự. Điều này đặc biệt hữu ích khi bạn đang làm việc với các cơ sở dữ liệu có các ngôn ngữ khác nhau. Ví dụ, bộ chữ cái tiếng Anh và Tây Ban Nha có ít ký tự nên bộ ký tự một byte có thể dễ dàng biểu thị cho tất cả các chữ cái. Tuy nhiên, với một ngôn ngữ như tiếng Nhật chẳng hạn, ngay cả tiếng Nhật chuẩn (Kana) đã có hơn 1000 ký tự. Bộ ký tự một byte (8 bit) chỉ có thể biểu diễn 256 ký tự, trong khi bộ ký tự Unicode nhiều byte có thể biểu diễn đến 65536 ký tự.
Bạn có thể sử dụng các kiểu dữ liệu nchar, nvarchar và text để biểu thị cho dữ liệu Unicode. Với nchar và nvarchar có giới hạn tối đa là 8000 byte hay 4000 ký tự. Ví dụ, nchar(4000) là hợp lệ, nhưng nchar (6000) đại diện cho 12000 ký tự và sẽ không vừa với một trang dữ liệu. Nchar (6000) của ta hoặc bị phân ra thành 2 kiểu dữ liệu nachar riêng biệt hoặc là một kiểu dữ liệu ntext. Kiểu dữ liệu ntext hỗ trợ tới 2.14GB dữ liệu.
Các kiểu dữ liệu Unicode là một tính năng mới cực mạnh của SQL Server 7.0 và 2000. nếu chúng ta có kế hoạch quốc tế hóa hay sử dụng SQL Server ở những nước không sử dụng tiếng Anh, lưu trữ dữ liệu bằng các kiểu dữ liệu Unicode là một giải pháp tốt nhất.
SCRIPT VÀ BATCH:
Script :
Script đơn giản là tập hợp của một hay nhiều batch. Thông thường, các script được thi hành như một phần của đơn vị công việc nào đó, như nạp dữ liệu hay bảo trì cơ sở dữ liệu.
Batch :
Batch là một tập hợp các lệnh Transact-SQL được dịch cùng với nhau bởi SQL Server. Chúng được gởi cùng một lúc và kết thúc bằng từ khóa GO.
Phát biểu GO phải khai báo trên một dòng sau khi kết thúc một bó.
Tất cả các bó phải cách nhau bởi GO đều được xem như một tập lệnh và có thể gởi đến Server để thực thi.
Các batch tuân theo nhiều quy tắc khác nhau. Tất cả các lệnh SQL được biên dịch cùng lúc. Nếu có một lỗi c