Giáo trình Quản trị và phát triển ứng dụng với Microsoft SQL Server

MỤC LỤC

 

MỤC LỤC 2

MỞ ĐẦU 5

PHẦN I. QUẢN TRỊ SQL SERVER 6

BẮT ĐẦU VỚI SQL SERVER 6

TÌM HIỂU VỀ HỆ QUẢN TRỊ CSDL SQL SERVER 6

MÔ HÌNH HOẠT ĐỘNG CỦA SQL SERVER TRÊN MẠNG MÁY TÍNH. 8

CÁC THÀNH PHẦN CỦA SQL SERVER. 12

CÁC THÀNH PHẦN CỦA SQL SERVER. 13

CÀI ĐẶT SQL SERVER. 15

QUẢN TRỊ SERVER 24

INSTANCE 24

ĐIỀU KHIỂN CÁC DỊCH VỤ CỦA SQL SERVER. 24

QUẢN TRỊ SERVER. 28

THIẾT LẬP KẾT NỐI ĐẾN SERVER. 29

CẤU HÌNH KẾT NỐI MẠNG CỦA SERVER. 39

QUẢN TRỊ CÁC CLIENT. 40

QUẢN TRỊ CƠ SỞ DỮ LIỆU 47

CẤU TRÚC CƠ SỞ DỮ LIỆU. 47

QUẢN LÝ CƠ SỞ DỮ LIỆU. 52

BẢNG DỮ LIỆU – TABLE 60

CÁC CHUẨN TẮC. 60

THIẾT KẾ BẢNG DỮ LIỆU. 62

TẠO BẢNG DỮ LIỆU. 71

KHÓA INDEX 79

THIẾT KẾ KHÓA INDEX. 79

TẠO KHÓA INDEX. 81

XÓA INDEX. 83

KHUNG NHÌN – VIEW 84

KHÁI NIỆM KHUNG NHÌN. 84

TẠO KHUNG NHÌN. 84

SỬ DỤNG VIEW. 86

THỦ TỤC LƯU TRỮ 88

KHÁI NIỆM THỦ TỤC LƯU TRỮ VÀ HÀM. 88

PHÂN LOẠI THỦ TỤC LƯU TRỮ. 89

THIẾT LẬP THỦ TỤC LƯU TRỮ. 90

SỬA, XÓA THỦ TỤC 97

TRIGGER 98

KHÁI NIỆM TRIGGER. 98

NHỮNG TRƯỜNG HỢP SỬ DỤNG TRIGGER. 98

ĐẶC ĐIỂM CỦA TRIGGER. 98

TẠO TRIGGER. 99

SỬA, XÓA TRIGGER. 103

XUẤT – NHẬP DỮ LIỆU 104

SERVER LIÊN KẾT – LINKED SERVER. 104

SỬ DỤNG BCP VÀ BULK INSERT NHẬP DỮ LIỆU. 112

DETTACH VÀ ATTACH CƠ SỞ DỮ LIỆU. 115

IMPORT VÀ EXPORT CƠ SỞ DỮ LIỆU. 117

EXPORT – XUẤT DỮ LIỆU. 121

SAO LƯU, KHÔI PHỤC DỮ LIỆU 122

NHỮNG LÝ DO PHẢI SAO LƯU VÀ KHÔI PHỤC DỮ LIỆU. 122

CÁC LOẠI BACKUP. 122

CÁC MÔ HÌNH PHỤC HỒI DỮ LIỆU. 123

SAO LƯU CƠ SỞ DỮ LIỆU - BACKUP DATABASE. 124

KHÔI PHỤC DỮ LIỆU – RESTORE DATABASE. 125

CHƯƠNG X. PHÂN QUYỀN, BẢO MẬT 127

CHẾ ĐỘ BẢO MẬT – SECURITY MODE. 127

SERVER ROLE, DATABASE ROLE. 129

QUẢN TRỊ NGƯỜI DÙNG. 133

NHÂN BẢN DỮ LIỆU 135

GIỚI THIỆU VỀ NHÂN BẢN DỮ LIỆU. 135

CẤU HÌNH PUBLISHER VÀ DISTRIBUTOR. 141

TẠO PUBLICATION. 143

TẠO PUSH SUBSCRIPTION. 145

TẠO PULL SUBSCRIPTION. 147

THỰC HIỆN ĐỒNG BỘ DỮ LIỆU. 149

PHẦN II. CÂU LỆNH T-SQL 150

ĐỊNH NGHĨA DỮ LIỆU (DATA DEFINITION LAGUAGE - DDL). 150

THAO TÁC VỚI DỮ LIỆU (DATA MANIPULATION LANGUAGE - DML). 155

TRUY VẤN DỮ LỆU. 167

TẠO BẢNG BẰNG LỆNH SELECT INTO. 175

LỆNH COMPUTE BY. 175

TOÁN TỬ UNION. 176

TRUY VẤN DỮ LIỆU TỪ NHIỀU BẢNG. 177

TRUY VẤN TỔNG HỢP. 185

TRUY VẤN LỒNG NHAU. 188

UPDATE, DELETE, INSERT VỚI LỆNH TRUY VẤN LỒNG NHAU. 191

LỆNH READTEXT – ĐỌC TEXT, IMAGE. 192

THAO TÁC DỮ LIỆU NGOÀI. 192

MỘT SỐ HÀM CƠ BẢN. 195

TRANSACTION – PHIÊN GIAO DỊCH. 201

LOCKING – KHÓA. 205

GRAND – GÁN QUYỀN. 208

REVOKE – TƯỚC QUYỀN. 213

DENY – TỪ CHỐI QUYỀN. 213

TRỢ GIÚP. 214

PHẦN III. PHÁT TRIỂN ỨNG DỤNG VỚI SQL SERVER 215

GIỚI THIỆU. 215

KẾT NỐI VỚI SQL SERVER BẰNG ADO. 215

KẾT NỐI VỚI SQL SERVER BẰNG SQL-DMO. 235

 

 

doc238 trang | Chuyên mục: SQL Server | Chia sẻ: dkS00TYs | Lượt xem: 2053 | Lượt tải: 5download
Tóm tắt nội dung Giáo trình Quản trị và phát triển ứng dụng với Microsoft SQL Server, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Then
 cn.CommitTrans
Else
 cn.RollbackTrans
End If
Thực hiện các lệnh DDL.
	Để thực hiện các lệnh DDL như CREATE TABLE, DROP TABLE, ALTER TABLE. Bạn có thể sử dụng đối tượng command của ADO, xét ví dụ sau:
Dim Cn As New ADODB.Connection
Dim Cmd As New ADODB.Command
' If the ADOTestTable does not exist, go to AdoError.
On Error GoTo AdoError
' Connect using the SQLOLEDB provider.
cn.Provider = "sqloledb"
cn.Properties("Data Source").Value = "MyServerName"
cn.Properties("Initial Catalog").Value = "northwind"
cn.Properties("Integrated Security").Value = "SSPI"
cn.Open
' Set up command object.
Set Cmd.ActiveConnection = Cn
Cmd.CommandText = "DROP TABLE ADOTestTable"
Cmd.CommandType = adCmdText
Cmd.Execute
Done:
 Cmd.CommandText = "SET NOCOUNT ON"
 Cmd.Execute
 Cmd.CommandText = "CREATE TABLE ADOTestTable (id int, name char(100))"
 Cmd.Execute
 Cmd.CommandText = "INSERT INTO ADOTestTable values(1, 'Jane Doe')"
 Cmd.Execute
 Cn.Close
Exit Sub
AdoError:
 Dim errLoop As Error
 Dim strError As String
 ' Enumerate Errors collection and display properties of
 ' each Error object.
 Set Errs1 = Cn.Errors
 For Each errLoop In Errs1
 Debug.Print errLoop.SQLState
 Debug.Print errLoop.NativeError
 Debug.Print errLoop.Description
 Next
 GoTo Done
End Sub
Quản lý dữ liệu kiểu lớn – Text, image.
	Dữ liệu kiểu text, ntext, image là kiểu dữ liệu phức tạp, việc quản lý, khai thác không được thực hiện thông thường, ADO hỗ trợ các phương thức riêng để thực hiện.
	Thay vì độc, cập nhật dữ liệu trực tiếp thì dữ liệu kiểu này được thao tác theo đoạn (chunk) bằng cách sử dụng các phương thức AppendChunk, GetChunk. 
Trước khi thực hiện bạn phải đặt tham số bằng cách thực hiện lệnh sau:
EXEC sp_dboption 'pubs', 'Select into/bulkcopy', 'True'
Xét ví dụ sau trên CSDL Pubs:
- Copy bảng pub_info sang bảng mới
USE pubs
SELECT * INTO pub_info_x
 FROM pub_info
GO
	- Thực hiện chèn dữ liệu vào bảng:
Public Sub AppendChunkX()
 Dim cn As ADODB.Connection
 Dim rstPubInfo As ADODB.Recordset
 Dim strCn As String
 Dim strPubID As String
 Dim strPRInfo As String
 Dim lngOffset As Long
 Dim lngLogoSize As Long
 Dim varLogo As Variant
 Dim varChunk As Variant
 Const conChunkSize = 100
 ' Open a connection.
 Set cn = New ADODB.Connection
 strCn = "Server=srv;Database=pubs;UID=sa;Pwd=;"
 cn.Provider = "sqloledb"
 cn.Open strCn
 'Open the pub_info_x table.
 Set rstPubInfo = New ADODB.Recordset
 rstPubInfo.CursorType = adOpenDynamic
 rstPubInfo.LockType = adLockOptimistic
 rstPubInfo.Open "pub_info_x", cn, , , adCmdTable
 'Prompt for a logo to copy.
 strMsg = "Available logos are : " & vbCr & vbCr
 Do While Not rstPubInfo.EOF
 strMsg = strMsg & rstPubInfo!pub_id & vbCr & _ 
 Left(rstPubInfo!pr_info,
 InStr(rstPubInfo!pr_info, ",") - 1) & vbCr & vbCr
 rstPubInfo.MoveNext
 Loop
 strMsg = strMsg & "Enter the ID of a logo to copy:"
 strPubID = InputBox(strMsg)
 ' Copy the logo to a variable in chunks.
 rstPubInfo.Filter = "pub_id = '" & strPubID & "'"
 lngLogoSize = rstPubInfo!logo.ActualSize
 Do While lngOffset < lngLogoSize
 varChunk = rstPubInfo!logo.GetChunk(conChunkSize)
 varLogo = varLogo & varChunk
 lngOffset = lngOffset + conChunkSize
 Loop
 ' Get data from the user.
 strPubID = Trim(InputBox("Enter a new pub ID:"))
 strPRInfo = Trim(InputBox("Enter descriptive text:"))
 ' Add a new record, copying the logo in chunks.
 rstPubInfo.AddNew
 rstPubInfo!pub_id = strPubID
 rstPubInfo!pr_info = strPRInfo
 lngOffset = 0 ' Reset offset.
 Do While lngOffset < lngLogoSize
 varChunk = LeftB(RightB(varLogo, lngLogoSize - _ 
 lngOffset),conChunkSize)
 rstPubInfo!logo.AppendChunk varChunk
 lngOffset = lngOffset + conChunkSize
 Loop
 rstPubInfo.Update
 ' Show the newly added data.
 MsgBox "New record: " & rstPubInfo!pub_id & vbCr & _ 
 "Description: " & rstPubInfo!pr_info & vbCr & _ 
 "Logo size: " & rstPubInfo!logo.ActualSize
 rstPubInfo.Close
 cn.Close
End Sub
Kết nối từ ASP.
	Trong ác ví dụ saiu đây thực hiện làm việc với SQL Server từ ASP, sử dụng ngôn ngữ lập trình VBScript, để làm được ví dụ này bạn đọc phải có kiến thức về thiết kế Web site (HTML).
Thiết kế form kết nối:
Login SQL Server example
<!--
.style1 {
	font-size: 24px;
	font-weight: bold;
}
-->
Login SQL Server
 
 User name 
 Password 
 Server name 
   
sub cmdLogin_Onclick
	frmlogin.method="post"
	frmlogin.action="connect.asp"
	frmlogin.submit
end sub
Tập tin connect.asp: Là tập tin được gọi từ form login.asp, thực hiện nhận tham số của form login.asp, kết nối đến SQL Server.
<%
dim username, password, servername, txt
	username=request.Form("txtUser")
	password = request.Form("txtPassword")
	servername=request.Form("txtServer")
	txt= "Provider=SQLOLEDB; "
	txt=txt & " Data Source=" & servername & ";"
	txt=txt & " Initial Catalog=pubs; "
	txt=txt & " User ID=" & username & ";"
	txt=txt & " PWD=" & password
	Set cn=Server.CreateObject("ADODB.Connection")
	cn.Open txt
	%>
Kết nối thành công	 
<%
	cn.close
%>
Liệt kê danh sách.
	Để liệt kê danh sách (có thể lấy dữ liệu bằng cách truy vấn trực tiếp hoặc thông qua khung nhìn - view) trước hết phải tạo một recordset lưu trữ kết quả truy vấn, từ recordset ta có thể lấy dữ liệu và đặt vào vị trí tương ứng cần thiết.
+ Khai báo Recordset:
	Set rs=Server.CreateObject("ADODB.Recordset") 
	rs.ActiveConnection =cn
	rs.Source ="Select * from Authors"
	rs.Open
+ Lấy giá trị:
	Rs.fields(“au_id”)
+ Đóng Recordset:
	Rs.close
+ Ví dụ liệt kê danh sách bằng cách truy vấn trực tiếp:
Danh sach
<!--
.style5 {
	font-family: Arial, Helvetica, sans-serif;
	font-weight: bold;
	font-size: 14px;
}
.style6 {font-family: Arial, Helvetica, sans-serif}
.style7 {
	font-size: 14px;
	font-weight: bold;
}
.style9 {font-family: Arial, Helvetica, sans-serif; font-size: 14px; }
.style12 {font-size: 12px}
-->
<%
dim username, password, servername, txt
	username="sa"
	password = ""
	servername="TDCong"
	txt= "Provider=SQLOLEDB; "
	txt=txt & " Data Source=" & servername & ";"
	txt=txt & " Initial Catalog=pubs; "
	txt=txt & " User ID=" & username & ";"
	txt=txt & " PWD=" & password
	Set cn=Server.CreateObject("ADODB.Connection")
	cn.Open txt
	Set rs=Server.CreateObject("ADODB.Recordset") 
	rs.ActiveConnection =cn
	rs.Source ="Select * from Authors"
	rs.Open
%>
LIST OF AUTHORS
 
 No
 au_id
 au_lname
 au_fname
 phone
 address
 city
 <%
 	i=0
 do while not rs.eof and not rs.bof
 	 i=i+1
 if i mod 20 then
 %>
 <%
 else
 %>
 <%
	end if
 	rs.movenext
 loop
 %>
<%
	rs.close
%>
KẾT NỐI VỚI SQL SERVER BẰNG SQL-DMO.
	SQL DMO viết tắt của cụm từ SQL Distributed Management Objects, sử dụng thư viện liên kết động (dll) để kết nối đến SQL Server.
	SQL DMO thực hiện liên kết nhúng (OLE Automation ), các đối tượng SQL Server được thực hiện nhúng các đối tượng của SQL Server vào ứng dụng, khai thác các đối tượng thông qua thuộc tính, sự kiện và các phương thức làm việc của nó.
	SQL DMO hỗ trợ phát triển ứng dụng từ ngôn ngữ lập trình Visual Basic, C++, khi đóng gói các thư viện liên kết động sẽ được đóng gói cùng, cài dặt ứng dụng thư viện sẽ được cài đặt trong Windows, nên khi chạy ứng dụng bạn không cần thiết lập môi trường Client Connectivity.
Các tập tin cơ bản cho SQL DMO: sqldmo.dll, sqldmo80.hlp, sqldmo.rll, sqldmo.h (C++), sqldmoid.h (C++), sqldmo.sql. Trong phần này sẽ giới thiệu kỹ thuật thiết kế ứng dụng từ Visual Basic 6.0.
Khai báo thư viện trong project.
	- Vào menu Project -> References
	- Chọn Microsoft SQL DMO Object Library -> Ok
Khai báo đối tượng.
	Sau khi thực hiện khai báo thư viện trong project, ta có thể khai báo biến kiểu đối tượng (object) hoặc kiểu đối tượng của SQL DMO.
Ví dụ khai báo biến kiểu SQL Server:
Dim oSQLServer As SQLDMO.SQLServer
Kết nối đến SQL Server.
	Để kết nối đến SQL Server ta sử dụng phương thức kết nối của đối tượng SQL Server, có 3 tham số Servername, LoginName, Pasword.
Dim oSQLServer As SQLDMO.SQLServer
 Set oSQLServer = New SQLDMO.SQLServer
 oSQLServer.Connect "ServerName", "LoginName", "Pasword"
Thực hiện lại kết nối:
	Trong nhiều trường hợp bạn muốn ngắt kết nối hiện tại và thực hiện lại kết nối để lấy trạng thái SQL Server hiện thời (tương tự động tác làm tươi – Reresh).
 oSQLServer.DisConnect
 oSQLServer.ReConnect
Làm việc với các đối tượng.
	SQL DMO tạo đối tượng kế thừa từ những đối tượng con của nó, ví dụ SQL Server kế thừa từ các đối tượng Database <- Table <- Column,…
Xác định biến với CSDL:
Dim oDatabase as new SQLDMO.Database
Set oDatabase = oSQLServer.Databases("Northwind")
Lấy danh sách tên các CSDL vào hộp thoại:
Dim nDatabase as Integer
For nDatabase = 1 to oSQLServer.Databases.Count
 Combo1.AddItem oSQLServer.Databases(nDatabase).Name
Next nDatabase
Các đối tượng đều được kế thà từ các đối tượng con, các đối tượng con tạo thành một tập hợp, tập hợp nói trên có thể thực hiện các phương thức Add, Remove,…với từng đối tượng.
Ví dụ remove bảng khỏi CSDL:
oServer.Databases("Northwind").Tables.Remove("Orders", "anne")
Thực hiện lệnh SQL:
	Các đối tượng (SQL Server, Database) có thể thực hiện các lệnh SQL thông qua các phương thức ExecuteImmediate và ExecuteWithResults.
Ví dụ thực hiện lệnh thao tác:
oSQLServer.ExecuteImmediate “Create Database Example”
Ví dụ thực hiện lệnh truy vấn:
Dim rs As QueryResults
 Set rs = oDatabase.ExecuteWithResults("Select * from Authors")
Ví dụ lấy dữ liệu từ một truy vấn:
 For i = 1 To rs.Rows
 For j = 1 To rs.Columns
 MsgBox rs.GetColumnString(i, j)
 Next j
 Next i
Các phương thức thực hiện kết nối có thể hỗ trợ theo từng ngôn ngữ lập trình, hỗ trợ nhiều trong việc lập trình từ Visual Basic, ASP, C, C++. Bạn có thể tham khảo các ví dụ trong thư mục Sample của SQL Server. Các ví dụ sẽ đề cập nhiều ngôn ngữ lập trình, nhiều sự kiện khác nhau.

File đính kèm:

  • docGiáo trình Quản trị và phát triển ứng dụng với Microsoft SQL Server.doc
Tài liệu liên quan