Tài liệu sử dụng SQL Server
Mục lụcChương 10. Quản trị cơ sở dữ liệu phần tán với MS.SQL Server1.Các thành phần trong hệ quản trị CSDL SQL Server:1.1.Database: Tạo CSDL (sử dụng công cụ và truy vấn)1.2.Tables, Diagrams: Tạo và sử dụng bảng, thiết lập quan hệ1.3.Views: Tạo và sử dụng View1.4.Stored Procedures: Tạo và sử dụng Stored Procedures1.5.Hàm do người dùng định nghĩa 1.6.Triggers: tạo và sử dụng Triggers.2.Quản trị SQL Server 2000:2.1.User và quyền truy cập đến các thành phần trong CSDL 2.2.Backup, restore database2.3.Detach, attach database2.4.JOBs: thiết lập lịch thực hiện công việc.2.5.Quản trị SQL server từ xa2.6.CSDL phân tán với Linked Servers.2.7.Các bảng Catalog2.8.Các thủ tục lưu trữ hệ thống – system stored procedure (Sp_ .)3.Kĩ thuật làm việc với CSDL phân tán4.Transactions : thực thi các truy vấn trong các giao dịch với csdl tập trung và CSDL phân tán Chương 10. Quản trị cơ sở dữ liệu phần tán với MS.SQL Server1. Các thành phần trong hệ quản trị CSDL SQL Server:1.1. Database: Tạo CSDL (sử dụng công cụ và truy vấn)1.2. Tables, Diagrams: Tạo và sử dụng bảng, thiết lập quan hệ1.3. Views: Tạo và sử dụng View1.4. Stored Procedures: Tạo và sử dụng Stored Procedures1.4.1. Các khái niệmSQL được thiết kế và cài đặt như là một ngôn ngữ để thực hiện các thao tác trên cơ sở dữ liệu như tạo lập các cấu trúc trong cơ sở dữ liệu, bổ sung, cập nhật, xoá và truy vấn dữ liệu trong cơ sở dữ liệu. Các câu lệnh SQL được người sử dụng viết và yêu cầu hệ quản trị cơ sở dữ liệu thực hiện theo chế độ tương tác.Các câu lệnh SQL có thể được nhúng vào trong các ngôn ngữ lập trình, thôngqua đó chuỗi các thao tác trên cơ sở dữ liệu được xác định và thực thi nhờ vào các câu lệnh, các cấu trúc điều khiển của bản thân ngôn ngữ lập trình được sử dụng.Với thủ tục lưu trữ, một phần nào đó khả năng của ngôn ngữ lập trình được đưa vào trong ngôn ngữ SQL. Một thủ tục là một đối tượng trong cơ sở dữ liệu bao gồm một tập nhiều câu lệnh SQL được nhóm lại với nhau thành một nhóm với những khả năng sau:• Các cấu trúc điều khiển (IF, WHILE, FOR) có thể được sử dụng trong thủ tục.• Bên trong thủ tục lưu trữ có thể sử dụng các biến như trong ngôn ngữ lập trình nhằm lưu giữ các giá trị tính toán được, các giá trị được truy xuất được từ cơ sở dữ liệu. • Một tập các câu lệnh SQL được kết hợp lại với nhau thành một khối lệnh bên trong một thủ tục. Một thủ tục có thể nhận các tham số truyền vào cũng như có thể trả về các giá trị thông qua các tham số (như trong các ngôn ngữ lập trình). Khi một thủ tục lưu trữ đã được định nghĩa, nó có thể được gọi thông qua tên thủ tục, nhận các tham số truyền vào, thực thi các câu lệnh SQL bên trong thủ tục và có thể trả về các giá trị sau khi thực hiện xong.Sử dụng các thủ tục lưu trữ trong cơ sở dữ liệu sẽ giúp tăng hiệu năng của cơ sở dữ liệu, mang lại các lợi ích sau:• Đơn giản hoá các thao tác trên cơ sở dữ liệu nhờ vào khả năng module hoá các thao tác này.- Thủ tục lưu trữ được phân tích, tối ưu khi tạo ra nên việc thực thi chúng nhanh hơn nhiều so với việc phải thực hiện một tập rời rạc các câu lệnh SQL tương đương theo cách thông thường.- Thủ tục lưu trữ cho phép chúng ta thực hiện cùng một yêu cầu bằng một câu lệnh đơn giản thay vì phải sử dụng nhiều dòng lệnh SQL. Điều này sẽ làm giảm thiểu sự lưu thông trên mạng. - Thay vì cấp phát quyền trực tiếp cho người sử dụng trên các câu lệnh SQL và trên các đối tượng cơ sở dữ liệu, ta có thể cấp phát quyền cho người sử dụng thông qua các thủ tục lưu trữ, nhờ đó tăng khả năng bảo mật đối với hệ thống.1.4.2. Tạo thủ tục lưu trữ Thủ tục lưu trữ được tạo bởi câu lệnh CREATE PROCEDURE với cú pháp nhưsau:CREATE PROCEDURE tên_thủ_tục [(danh_sách_tham_số)][WITH RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION] AS Các_câu_lệnh_của_thủ_tụcTrong đó:tên_thủ_tục Tên của thủ tục cần tạo. Tên phải tuân theo qui tắc định danh và không được vượt quá 128 ký tự. danh_sách_tham_số Các tham số của thủ tục được khai báo ngay sau tên thủ tục và nếu thủ tục có nhiều tham số thì các khai báo phân cách nhau bởi dấu phẩy. Khai báo của mỗi một tham số tối thiểu phải bao gồm hai phần:• tên tham số được bắt đầu bởi dấu @.• kiểu dữ liệu của tham sốVí dụ:@mamonhoc nvarchar(10)RECOMPILE Thông thường, thủ tục sẽ được phân tích, tối ưu và dịch sẵn ở lần gọi đầu tiên. Nếu tuỳ chọn WITH RECOMPILE được chỉ định, thủ tục sẽ được dịch lại mỗi khi được gọi.ENCRYPTIONThủ tục sẽ được mã hoá nếu tuỳ chọn WITHENCRYPTION được chỉ định. Nếu thủ tục đã được mã hoá, ta không thể xem được nội dung của thủ tục.các_câu_lệnh_của_thủ_tụcTập hợp các câu lệnh sử dụng trong nội dung thủ tục. Các câu lệnh này có thể đặt trong cặp từ khoá BEGIN .END hoặc có thể không.Thí dụ.Giả sử ta cần thực hiện một chuỗi các thao tác như sau trên cơ sở dữ liệu1. Bổ sung vào bảng Players thêm 1 vận động viên đội có số hiệu 1000 tên là A. Andrew , có số liên đoàn là 9999.2. Bổ sung vào bảng Teams thêm 1 đội có số hiệu 3, đội trưởng là vận động viên số 1000, đây là đội hạng 3. Nếu thực hiện yêu cầu trên thông qua các câu lệnh SQL như thông thường, ta phải thực thi hai câu lệnh như sau:INSERT INTO PLAYERS (PLAYERNO, NAME, INITIALS, LEAGUENO)VALUES(1000,'Andrew’, ‘A’, ‘9999’)INSERT INTO TEAMS VALUES(3, 1000, ‘Third’)Thay vì phải sử dụng hai câu lệnh như trên, ta có thể định nghĩa môt thủ tục lưu trữ với các tham số vào là @PlayerNo, @Name, @Initials, @LeagueNo, @TeamNo, @Division như sau:CREATE PROC sp_InsertPlayersTeams (@PlayerNo SmallInt,@Name Char(15),@Initials Char(3),@LeagueNo Char(6),@TeamNo SmallInt,@Division Char(10)) AS BEGINNSERT INTO PLAYERS (PlayerNo, Name, Initials, LeagueNo)VALUES(@PlayerNo, @Name, @Initials, @LeagueNo)INSERT INTO TEAMS VALUES(@TeamNo, @PlayerNo, @Division) ENDKhi thủ tục trên đã được tạo ra, ta có thể thực hiện được hai yêu cầu đặt ra ở trên một cách đơn giản thông qua lời gọi thủ tục:sp_InsertPlayersTeams 1000,'Andrew',’A’, ‘9999’, 3, ‘Third’1.4.3. Lời gọi thủ tục lưu trữNhư đã thấy ở ví dụ ở trên, khi một thủ tục lưu trữ đã được tạo ra, ta có thể yêucầu hệ quản trị cơ sở dữ liệu thực thi thủ tục bằng lời gọi thủ tục có dạng:tên_thủ_tục [danh_sách_các_đối_số]Số lượng các đối số cũng như thứ tự của chúng phải phù hợp với số lượng và thứ tự của các tham số khi định nghĩa thủ tục. Trong trường hợp lời gọi thủ tục được thực hiện bên trong một thủ tục khác, bêntrong một trigger hay kết hợp với các câu lệnh SQL khác, ta sử dụng cú pháp như sau:EXECUTE tên_thủ_tục [danh_sách_các_đối_số]Thứ tự của các đối số được truyền cho thủ tục có thể không cần phải tuân theothứ tự của các tham số như khi định nghĩa thủ tục nếu tất cả các đối số được viết dưới dạng:@tên_tham_số = giá_trịVí dụ : Lời gọi thủ tục ở ví dụ trên có thể viết như sau:sp_InsertPlayersTeams @PlayerNo=1000,@Initials=’A’@Name= ‘Andrew’,@LeagueNo=’9999’ @TeamNo=3@Division=’Third’1.4.4. Sử dụng biến trong thủ tụcNgoài những tham số được truyền cho thủ tục, bên trong thủ tục còn có thể sửdụng các biến nhằm lưu giữ các giá trị tính toán được hoặc truy xuất được từ cơ sở dữ liệu. Các biến trong thủ tục được khai báo bằng từ khoá DECLARE theo cú pháp như sau:DECLARE @tên_biến kiểu_dữ_liệuTên biến phải bắt đầu bởi ký tự @ và tuân theo qui tắc về định danh. Ví dụ dướiđây minh hoạ việc sử dụng biến trong thủ tục.Ví dụ. Tạo thủ tục in tên thành phố và số lượng vận động viên của thành phố đó.CREATE PROCEDURE sp_TPSoVDV(@TP CHAR(15))ASBeginDECLARE @SoLuong SmallIntSELECT @SoLuong=Count(*)FROM PlayersWHERE Town=@TpPRINT @Tp+'So luong VDV'PRINT @SoluongEndKhi đó, nếu muốn biết thành phố Stratford có bao nhiêu vận động viên ta có thể gọi thủ tục: Sp_TPSoVDV ‘Stratford’1.4.5. Giá trị trả về của tham số trong thủ tục lưu trữ1.4.6. Tham số với giá trị mặc định1.4.7. Sửa đổi thủ tục Khi một thủ tục đã được tạo ra, ta có thể tiến hành định nghĩa lại thủ tục đó bằngcâu lệnh ALTER PROCEDURE có cú pháp như sau:ALTER PROCEDURE tên_thủ_tục [(danh_sách_tham_số)][WITH RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION] ASCác_câu_lệnh_Của_thủ_tụcCâu lệnh này sử dụng tương tự như câu lệnh CREATE PROCEDURE. Việc sửa đổi lại một thủ tục đã có không làm thay đổi đến các quyền đã cấp phát trên thủ tục cũng như không tác động đến các thủ tục khác hay trigger phụ thuộc vào thủ tục này.1.4.8. Xóa thủ tụcĐể xoá một thủ tục đã có, ta sử dụng câu lệnh DROP PROCEDURE với cúpháp như sau:DROP PROCEDURE tên_thủ_tụcKhi xoá một thủ tục, tất cả các quyền đã cấp cho người sử dụng trên thủ tục đó cũng đồng thời bị xoá bỏ. Do đó, nếu tạo lại thủ tục, ta phải tiến hành cấp phát lại các quyền trên thủ tục đó.1.5. Hàm do người dùng định nghĩa 1.5.1. Định nghĩa và sử dụng hàm Kể từ phiên bản SQL Server 2000 trở đi, người lập trình với ngôn ngữ T-SQL được phép tạo ra các Hàm của chính mình để sử dụng. Có ba loại UDF:Hàm đơn trị (scalar Function)Hàm đọc bảng (inline Table)Hàm tạo bảng (multi statement Table)Hàm đơn trị:Hàm trả về đúng một giá trị, giá trị trả về có thể là kiểu chuỗi, số, ngày giờ, …Hàm được định nghĩa thông qua câu lệnh CREATE FUNCTION với cú phápnhư sau:CREATE FUNCTION <Tên NSD>.<Tên Hàm> (Danh sách tham số)RETURNS Kiểu trả vềBEGIN--Khai báo các biến cục bộ--Các lệnh xử lý, tính toán--Trả về giá trịRETURN Giá trị trả vềENDVí dụ. Câu lệnh dưới đây định nghĩa hàm tính tổng 2 số nguyên CREATE FUNCTION Tien.Tong(@a smallint, @b smallint)RETURNS smallintASBEGINDECLARE @T smallintSet @T=@a+@bRETURN (@T)ENDGọi hàm tính tổng 2 số 4 và 2:Print Tien.Tong (4,2) [...]... Server liên kết: - Sử dụng SQL Server Management Studio - Transact- SQL Sử dụng SQL Server Management Studio để tạo 1 Server liên kết đến 1 thể hiện khác của SQL Server: 29 1 trong SQL Server Management Studio, mở Object Explorer, trải Server Objects, nháy chuột phải Linked Servers, và chọn New Linked Server 2 Ở trang General, trong hộp Linked Server, gõ tên của thể hiện SQL Server mà bạn muốn liên kết... kết đến thể hiện khác của SQL Server Để tạo Server liên kết sử dụng Transact -SQL có 3 mệnh đề: sp_addlinkedserver (Transact -SQL) , CREATE LOGIN (Transact -SQL) và sp_addlinkedsrvlogin (Transact -SQL) Sử dụng Transact -SQL để tạo Server liên kết đến thể hiện khác của SQL Server 1 tại cửa sổ soạn thảo câu lệnh Query Editor, gõ gõ câu lệnh sau để liên kết tới 1 thể hiện của SQL Server có tên SRVR002\ACCTG:... Chú ý Nếu thể hiện của SQL Server là thể hiện ngầm định thì gõ tên của Server chứa thể hiện này Nếu SQL Server là một thể hiện được đặt tên thì gõ tên máy và tên thể hiện như Accounting\SQLExpress 3 Trong Server Type, chọn SQL Server để chỉ thị rằng Server liên kết là thể hiện khác của SQL Server 4 Ở trang Security, xác định ngữ cảnh sẽ được sử dụng khi SQL Server gốc kết nối với Server liên kết Trong... ở đó các người sử dụng đang kết nối bằng login doman của mình thì chọn Be made using the login’s current security context là tốt nhất Khi các người sử dụng kết nối đến SQL Server gốc bằng cách sử dụng SQL Server login thì lựa chọn tốt nhất là chọn By using this security context, và sau đó cung cấp ủy nhiệm cần thiết cho bảo mật ở Server liên kết 5 Nháy OK Sử dụng Transact -SQL để tạo Server liên kết... B8: Kiểm tra xem dữ liệu ở bảng Players của SporDB1? 2.5 Quản trị SQL server từ xa 2.6 CSDL phân tán với Linked Servers Tạo 1 server liên kết (Linked Server) cho phép ta làm việc với dữ liệu từ nhiều nguồn Một Server lien kết không phải là 1 thể hiện khác của SQL Server mà là kịch bản chung Phần này trình bày cách tạo 1 Server liên kết và truy nhập dữ liệu từ SQL Server khác Một Server liên kết cho... master.dbo.sp_addlinkedserver 30 @server = N'SRVR002\ACCTG', @srvproduct=N 'SQL Server' ; GO 2 thực thi đoạn mã sau để cấu hình Server liên kết để sử dụng ủy nhiệm domain của login đang sử dụng Server liên kết EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'SRVR002\ACCTG', @locallogin = NULL , @useself = N'True' ; GO 2.7 Các bảng Catalog Các thông tin mà MS SQL Server và các thành phần của nó sử dụng được chứa... 1.6.3 ROLLBACK TRANSACTION và trigger 1.6.4 Sử dụng trigger trong trường hợp câu lệnh INSERT, UPDATE và DELETE có tác động đến nhiều dòng dữ liệu 1.6.5 Sử dụng truy vấn con 1.6.6 Sử dụng biến con trỏ 2 Quản trị SQL Server 2000: 2.1 User và quyền truy cập đến các thành phần trong CSDL CHẾ ĐỘ BẢO MẬT – SECURITY MODE Như đã gặp trong phần cài đặt SQL Server, SQL Server có 2 chế độ bảo mật: + Windows Authentication... group, người sử dụng Microsoft SQL Server ™ hoặc Role SQL Server trong cơ sở dữ liệu Bảng syscolumns Tên cột Kiểu dữ liệu Mô tả Name Sysname Tên cột hoặc tham số của thủ tục Id Int ID của đối tượng của bảng chứa cột hoặc ID của stored procedure có tham số Xtype Tinyint Kiểu lưu trữ vật lý từ systypes Typestat Tinyint Chỉ để sử dụng nội bộ xusertype smallint ID của kiểu dữ liệu người sử dụng định nghĩa... rộng Length smallint Độ dài lưu trữ vật lý cực đại từ systypes Xprec tinyint Chỉ để sử dụng nội bộ 34 Xscale tinyint Chỉ để sử dụng nội bộ Colid smallint ID của cột hay của tham số Xoffset smallint Chỉ để sử dụng nội bộ Bitpos tinyint Chỉ để sử dụng nội bộ reserved tinyint Chỉ để sử dụng nội bộ Colstat smallint Chỉ để sử dụng nội bộ Cdefault int ID của ngầm đinh cho cột này Domain int ID của rule hay... owner - Ok 2.4 JOBs: thiết lập lịch thực hiện công việc Trong MS SQL Server, công cụ Jobs cho phép ta lập những công việc (Job) có tính chất thực thi định kỳ thí dụ sao lưu dữ liệu Sử dụng Jobs phải có đầy đủ quyền Adminítrator trên SQL Server Ta sẽ nghiên cứu cách sử dụng công cụ này trong ví vụ sau Ví dụ Giả sử cần chép toàn bộ dữ liệu của bảng Players trong csdl SportDB sang Players trong csdl . chế độ này người sử dụng muốn khai thác SQL Server phải thông qua 4 bước xác thực (1- Domain, 2- Computer, 3- SQL Server, 4- Database). SQL Server Authentication.. 10. Quản trị cơ sở dữ liệu phần tán với MS .SQL Server1 . Các thành phần trong hệ quản trị CSDL SQL Server: 1.1. Database: Tạo CSDL (sử dụng công cụ và truy