cƠ sỞdỮliỆu - fit.mta.edu.vnfit.mta.edu.vn/files/danhsach/chuong5_hequantrisqlserver.pdf ·...
TRANSCRIPT
Lý thuyết CSDL 1
GIÁO VIÊN: ĐĐỗỗ ThThịị Mai Mai HưHườờngngBỘ MÔN : CCáácc HHệệ ththốốngng thôngthông tin tin KHOA : CôngCông nghnghệệ thôngthông tintinEmail :Email : [email protected]@gmail.com
CƠ SỞ DỮ LIỆU
Lý thuyết CSDL 3/111
Nội dung bài học
• Giới thiệu SQL Server • Các thành phần Client-Server • Các loại Database• Công cụ và tiện ích SQL Server• Tạo và sử dụng Database• Triển khai Database• Bảo mật SQL Server
Lý thuyết CSDL 4/111
Giới thiệu SQL Server (1)
Online Transaction processing (OLTP) database vàOnline Analytical processing (OLAP) database
Lý thuyết CSDL 5/111
Giới thiệu SQL Server (2)
• Thực hiện các transaction processing, lưu trữ, phân tích vàxây dựng các ứng dụng
• Là một hệ quản trị cơ sở dữ liệu quan hệ– Quản lý kho dữ liệu đối với các transaction và analysis– Trả lời các request của client application– Dùng Transact-SQL, XML, Multidimendional expression
(MDX) hoặc SQL distribute management Object (SQL – DMO) để gởi các request giữa client với SQL Server
Lý thuyết CSDL 6/111
• Relational Database Management System – RDBMS của SQL Server có nhiệm vụ:
• Duy trì các quan hệ giữa các dữ liệu trong database.• Bảo đảm dữ liệu được lưu trữ đúng và hợp lệ theo các qui tắc đã
đưa ra.• Phục hồi tất cả các dữ liệu khi cần
Giới thiệu SQL Server (3)
Lý thuyết CSDL 7/111
• OLTP database: – Dữ liệu được lưu trong các table có quan hệ -> giảm dư thừa
dữ liệu và tăng tốc độ cập nhật. – Cho phép một số lượng lớn user thực hiện các transaction
một cách đồng thời• OLAP Databases:
– Hỗ trợ phân tích viên đưa ra các giải pháp, các mô hình dữliệu
Giới thiệu SQL Server (4)
Lý thuyết CSDL 9/111
• Client-Server Architecture– Client đóng vai trò business logic và presenting data cho
user. Có thể chạy trên một hoặc nhiều máy hoặc chạy trên cùng máy với server
– SQL Server quản lý database và cấp phát tài nguyên
Client-Server components (2)
Lý thuyết CSDL 12/111
SQL Server Services (2)
• MSSQL Server Services – Cấp phát tài nguyên máy tính cho nhiều user đồng thời.– Ngăn chặn các logic problems ví dụ như timing requests– Bảo đảm tính ổn định và ràng buộc dữ liệu.
Lý thuyết CSDL 13/111
SQL Server Services (3)
• SQLServerAgent Services – Cảnh báo về trạng thái của một process ví dụ như một công
việc này đó được hoàn thành hoặc xảy ra lỗi.– Tạo ra một công việc mới và lập thời khoá để tự động hoá
các nhiệm vụ.– Gởi email hoặc khởi động một ứng dụng khác khi một thông
báo xãy ra.
Lý thuyết CSDL 14/111
SQL Server Services (4)
• Microsoft Distributed Transaction Coordinator (MS DTC)– Cho phép các clients gom nhiều nguồn dữ liệu khác nhau
trong một transaction.• Microsoft Search
– là một full-text engine hoạt động như một dịch vụ trong Windows 2000.
Lý thuyết CSDL 17/111
SQL Server Database
• Các loại Databases• Các đối tượng Database • Tham chiếu đến đối tượng SQL Server • Các table hệ thống (System Tables)• Metadata Retrieval
Lý thuyết CSDL 19/111
Các loại Databases (2)• master: điều khiển các user databases và các hoạt động
của SQL Server cũng như toàn bộ các thông tin như user accounts, biến môi trường và các system error messages
• model: cung cấp một template/prototype database cho việc tạo mới một user databases
• tempdb: cung cấp vùng lưu trữ cho table tạm thời hoặc các vùng làm việc tạm thời
• msdb: cung cấp vùng lưu trữ cho việc xắp thời khoábiểu các công việc
• distribution: Lưu trữ history và transaction data được dùng để tạo bản sao
• pubs: một database ví dụ để học• Northwind một database ví dụ để học• User1: một database do user tạo ra
Lý thuyết CSDL 21/111
Database Objects (2)Database Objects (2)
Object Mô tảTable Bảng quan hệ chứa dữ liệuData type Kiểu dữ liệuConstraint Các qui tắc để kiểm tra ràng buộc dữ liệuDefault Các giá trị mặc định nếu giá trị của một field không được nhập
vàoRule Các thông tin mà định nghĩa các giá trị hợp lệ trong một field
Index Là một cấu trúc lưu trữ nhằm truy xuất nhanh dữ liệu
Lý thuyết CSDL 22/111
Database Objects (3)Database Objects (3)
Object Mô tảView Là table ảo, đây là một cách để lấy dữ liệu từ các table hoặc các
view khác
User-defined function
Là các function do programmer định nghĩa
Stored procedure
Là các thủ tục do programmer định nghĩa
Trigger Là một dạng đắc biệt của procedure nhưng được thực hiện tự động khi user thay đổi dữ liệu trong table/view
Lý thuyết CSDL 23/111
Tham chiếu đến một đối tượng
• Tên đầy đủ:[server.[database.[schema.]]]object
• Tên ngắn gọnĐược hiểu là server default, instance hiện hành, database hiện hành và schema là lược đồ
VD: select * from dbo.nhanvien
Lý thuyết CSDL 24/111
System Tables (1)
• System tables lưu trữ các thông tin về các System và Database Objects
• Database Catalog lưu trữ Metadata về một Database• System Catalog lưu trữ Metadata về toàn bộ hệ thống
và tất cả các Databases
Lý thuyết CSDL 28/111
Công cụ và một số tiện ích
• Service Manager• SQL Server Management Studio
– Import and Export Data– Create and Manipulate Database– Query Analysis– Backup Database
Lý thuyết CSDL 29/111
Service Manager
• Quản lý cung cấp các dịch vụ của SQL Server– SQL Server muốn truy cập được CSDL thì dịch vụ Service
Manager phải chạy
Lý thuyết CSDL 30/111
Import and Export Data
• Cho phép tạo và truy xuất dữ liệu từ các nguồn khác nhau. Dữliệu từ các hệ khác vào SQL Server và ngược lại.– SQL Server– Microsoft Access– Oracle– Excel– Text (có cấu trúc)– ….
Lý thuyết CSDL 31/111
Query Analysis
• Là tiện ích giúp thực hiện các câu lệnh truy vấn SQL.– Rất đơn giản, giao diện trực quan.– Môi trường rất tốt cho việc kiểm tra các câu lệnh SQL– Cho phép tạo, quản lý CSDL dưới dạng các câu lệnh– Muốn đăng nhập phải có User và Password
Lý thuyết CSDL 32/111
Các công cụ và tiện ích
• Backup Database: Là tiện ích giúp sao lưu CSDL vàphục hồi khi có bất thường xảy ra
• Create and Manipulate Database: Hỗ trợ giao diện đồhọa cho phép quản lý CSDL.
Lý thuyết CSDL 33/111
Xây dựng CSDL trong SQL Server
Một (CSDL) của SQL Server là tập hợp cácđối tượng
bảng (Table):Chứa dữ liệu
bảng ảo (View):chứa dữ liệu lấy từ Bảng
thủ tục nội tại (Stored Procedure): Chứa cáclệnh thao tác với Dữ liệu
Một (CSDL) của SQL Server là tập hợp cácđối tượng
bảng (Table):Chứa dữ liệu
bảng ảo (View):chứa dữ liệu lấy từ Bảng
thủ tục nội tại (Stored Procedure): Chứa cáclệnh thao tác với Dữ liệu
Lý thuyết CSDL 34/111
Xaây döïng CSDL trong SQL Server
Triger :Chứa các lệnh thao tác với Dữ liệu, kiểm tra ràng buộc tự động
Constraint :Chứa các ràng buộc dữ liệu
Một CSDL do một hoặc nhiều người tạo nhưngcó thể được nhiều người truy cập
Trong SQL Server có thể tạo đươc 32767 CSDL khác nhau
Triger :Chứa các lệnh thao tác với Dữ liệu, kiểm tra ràng buộc tự động
Constraint :Chứa các ràng buộc dữ liệu
Một CSDL do một hoặc nhiều người tạo nhưngcó thể được nhiều người truy cập
Trong SQL Server có thể tạo đươc 32767 CSDL khác nhau
Lý thuyết CSDL 35/111
Xaây döïng CSDL trong SQL Server
Cấu trúc lưu trữ của một CSDL : Một CSDL trong SQL Server tối thiểu
sẽ dùng hai tập tin vật lý để lưu trữ dữliệu: Một dùng lưu trữ dữ liệu (Data
file) Một dùng để lưu trữ các vết giao
tác (Transaction log file)
CCấấuu trtrúúcc lưulưu trtrữữ ccủủaa mmộộtt CSDL : CSDL : MMộộtt CSDL CSDL trongtrong SQL Server SQL Server ttốốii thithiểểuu
ssẽẽ ddùùngng haihai ttậậpp tin tin vvậậtt lýlý đđểể lưulưu trtrữữ ddữữliliệệuu:: MMộộtt ddùùngng lưulưu trtrữữ ddữữ liliệệuu (Data (Data
file) file) MMộộtt ddùùngng đđểể lưulưu trtrữữ ccáácc vvếếtt giaogiao
ttáácc (Transaction log file)(Transaction log file)
Lý thuyết CSDL 36/111
Xaây döïng moät CSDL trong SQL Server
Thường được tổ chức lưu trữ trong 3 tập tin :
Thường được tổ chức lưu trữ trong 3 tập tin :
CSDL
Primary DataFile(*.MDF)
Secondary Data Fie(*.NDF)
Log file(*.LDF)
Data Files Log Files
Lý thuyết CSDL 37/111
Xaây döïng moät CSDL trong SQL Server
Tạo mới một CSDL trongSQL Server
Cách 1: Sử dụngtiện íchEnterPriseManager:Click chuộc phảivào đối tượngDatabases chọn New Database
Tạo mới một CSDL trongSQL Server
Cách 1: Sử dụngtiện íchEnterPriseManager:Click chuộc phảivào đối tượngDatabases chọn New Database
Lý thuyết CSDL 39/111
Xaây döïng CSDL trong SQL Server
• Chọn Tab Data Files:– Filename :Tên tập tin Data
Files – Location: Vị trí lưu trữ– Initial size(Mb) :Kích thước
ban đầu– Automatically grow file: Tự
độngtăng kích thước
• In megabytes : tăng baonhiêu mB
• By percent :Tăng theophần trăm
– Maximun file size : kích
Lý thuyết CSDL 40/111
Xaây döïng CSDL trong SQL Server
• Tạo CSDL bằng cách viết lệnh trong Query Enalyzer
CREATE DATABASE QLBANHANGON PRIMARY( NAME= QLBANHANG_DATA,FILENAME=’C:\MSSQL\DATA\ QLBANHANG_DATA.MDF’,SIZE=50MB,MAXSIZE=200MB,FILEGROWTH=10%)LOG ON(NAME= QLBANHANG_LOG,FILENAME=’C:\MSSQL\DATA\ QLBANHANG_LOG.LDF’,SIZE=10MB,MAXSIZE=UNLIMITED,FILEGROWTH=5MB)
Lý thuyết CSDL 41/111
Xaây döïng CSDL trong SQL Server
• Các kiểu dữ liệu trong SQL Server
từ -3.40E+38 đến +3.40E+384 bytesRealtừ -1.79E+308 đến +1.79E+3088 bytesFloat
> Các kiểu dữ liệu dạng số thực
từ -10^38 đến +10^3817bytesDecimal, Numeric
> Các kiểu dữ liệu dạng số thập phân0, 1 hoặc Null1 byteBittừ 0 đến 2551 byteTinyInttừ -32768 đến +327672 bytesSmallInttừ-2,147,483,648đến +2,147,483,647
4 bytesInt> Các kiểu dữ liệu dạng số nguyên
Miền giá trị dữ liệu lưu trữKíchthước
Kiểu dữ liệu
Lý thuyết CSDL 42/111
Xaây döïng CSDL trong SQL Server
• Các kiểu dữ liệu trong SQL Server
từ 1 đến 1,073,741,823 ký tự, mỗi kýtự là 2 bytes
2*N bytes
NText
từ 1 đến 4000 ký tự, mỗi ký tự là 2 bytes
2*N bytes
NVarChar
từ 1 đến 4000 ký tự, mỗi ký tự là 2 bytes
2*N bytes
NChar> Các kiểu dữ liệu dạng chuỗi dùng font chữ Unicode
từ 1 đến 2,147,483,647 ký tự, mỗiký tự là 1 byte
N bytesText
từ 1 đến 8000 ký tự, mỗi ký tự là 1 byte
N bytesVarChar> Các kiểu dữ liệu dạng chuỗi có độ dài biến đổi
từ 1 đến 8000 ký tự, mỗi ký tự làmột byte
N bytesChar
> Các kiểu dữ liệu dạng chuỗi có độ dài cố định
Lý thuyết CSDL 43/111
Xaây döïng CSDL trong SQL Server
• Các kiểu dữ liệu trong SQL Server
từ 1 đến 2,147,483,647 bytes
N bytesImagetừ 1 đến 8000 bytesN bytesVarBinarytừ 1 đến 8000 bytesN bytesBinary
> Các kiểu dữ liệu dạng chuỗi nhị phân (Binary String)
từ01/01/1900đến06/06/20794 bytesSmallDateTimetừ01/01/1753đến31/12/99998 bytesDateTime
> Các kiểu dữ liệu dạng ngày và giờ
từ -214,748.3648 đến + 214,748.36474 bytesSmallMoney
từ -922,337,203,685,477.5808 đến+922,337,203,685,477.5807
8 bytesMoney
> Các kiểu dữ liệu dạng tiền tệ
Lý thuyết CSDL 44/111
Xaây döïng CSDL trong SQL Server
• Các thuộc tính cơ bản của Một Bảng– Tên bảng (Table Name) Độ dài<= 128 ký tự. Tên
bảng phải duy nhất bên trong phạm vi của người đãtạo ra nó trong một CSDL
– Tên cột (Column Name): là tên của các cột bêntrong bảng, tên của các cột bên trong bảng phải duynhất.
– Kiểu dữ liệu (Data Type):qui định kiểu dữ liệu màcột sẽ lưu trữ bên trong bảng.
Lý thuyết CSDL 45/111
Xaây döïng CSDL trong SQL Server
– Độ dài dữ liệu (Data Length): dùng để qui định độdài dữ liệu mà cột sẽ lưu trữ đối với các kiểu dữ liệudạng chuỗi, số.
– Số ký số lưu trữ (Precision): là số ký số tối đa màcác kiểu dữ liệu dạng số có thể lưu trữ được.
– Số lẻ lưu trữ (Scale): là số lẻ tối đa mà các kiểu dữliệu dạng số thập phân dùng để lưu trữ.
Lý thuyết CSDL 46/111
Xaây döïng CSDL trong SQL Server
– Cột định danh (Identity): Giá trị của cột định danhlà số nguyên không trùng lắp do hệ thớng Microsoft SQL Server tự động cấp phát.
• Các kiểu dữ liệu của cột định danh : Int, SmallInt, TinyInt, Decimal , Numeric
• Thuộc tính Identity Seed :Số đầu tiên
• Thuộc tính Identity Increment :giá trị tăng
Lý thuyết CSDL 47/111
Xaây döïng CSDL trong SQL Server
– Cho phép để trống dữ liệu (Allow Null): qui định dữ liệu có thể đượcphép để trống hay là phải nhập
– Giá trị mặc định (Default Value): là giá trị mặc nhiên sẽ được gán vàocột dữ liệu khi người sử dụng thêmmới một mẫu tin nhưng lại để trốnggiá trị tại cột dữ liệu đó.
Lý thuyết CSDL 48/111
Xaây döïng CSDL trong SQL Server
• Tạo Bảng trong Sql Server– Cách 1: Sử dụng tiện ích
Enterprise Manager
• Mở CSDL Click chuột phải trên đốitượng Tables, chọnchức năng New Table... trong thựcđơn tắt.
Lý thuyết CSDL 49/111
Xaây döïng CSDL trong SQL Server
• Màn hình sau xuất hiện :Nhập tên bảng,nhấp OK
• Màn hình thiết kế bảng xuất hiện:nhập thông tin và chọn cột làmkhoá chính
Lý thuyết CSDL 50/111Lý thuyết CSDL
Định nghĩa dữ liệu
• Là ngôn ngữ mô tả– Lược đồ cho mỗi quan hệ– Miền giá trị tương ứng của từng thuộc tính– Ràng buộc toàn vẹn– Chỉ mục trên mỗi quan hệ
• Gồm– CREATE TABLE (tạo bảng)– DROP TABLE (xóa bảng)– ALTER TABLE (sửa bảng)– CREATE DOMAIN / CREATE TYPE (tạo miền giá trị)– CREATE DATABASE– …
Lý thuyết CSDL 51/111
Kiểu dữ liệu
• Số (numeric)– INTEGER– SMALLINT– NUMERIC– DECIMAL– REAL– DOUBLE PRECISION– FLOAT
Lý thuyết CSDL 52/11152
Kiểu dữ liệu (tt)
• Chuỗi ký tự (character string)– CHARACTER, CHARACTER(n)
• Chuỗi bit (bit string)– BIT, BIT(x)
• Ngày giờ (datetime)– DATE gồm ngày, tháng và năm– TIME gồm giờ, phút và giây– TIMESTAMP gồm ngày và giờ
Lý thuyết CSDL 53/11153
Lệnh tạo bảng
• Để định nghĩa một bảng– Tên bảng– Các thuộc tính
• Tên thuộc tính• Kiểu dữ liệu• Các ràng buộc toàn vẹn trên thuộc tính (RBTV)
• Cú phápCREATE TABLE <Tên_bảng> (
<Tên_cột> <Kiểu_dữ_liệu> [<RBTV>],<Tên_cột> <Kiểu_dữ_liệu> [<RBTV>],…[<RBTV>]
)
Lý thuyết CSDL 54/111
Ví dụ CSDL
• Cho cơ sở dữ liệu CÔNGTY gồm các lược đồ:– NHANVIEN(MANV, HONV, TENNV, NS, GT, DCHI,
LUONG, MA_NQL, PHONG)– PHONGBAN(MAPHONG, TENPHONG, TRPHONG,
NG_NHANCHUC)– DEAN(MADA, TENDA, DD_DA, PHONG)– THANNHAN(MANV, TEN_TN, NS, GT, QUANHE)– NV_DEAN(MANV, MADA, SOGIO)– PHONGBAN_DD(MAPB, DD)
Lý thuyết CSDL 55/111
Ví dụ - Tạo bảng
CREATE TABLE NHANVIEN (
MANV CHAR(9),
HODEM VARCHAR(30),
TENNV VARCHAR(10),
NS DATETIME,
DCHI VARCHAR(50),
GT CHAR(3),
LUONG INT,
MA_NQL CHAR(9),
PHONG INT
)
Lý thuyết CSDL 56/111
Lệnh tạo bảng (tt)
• <RBTV> – NOT NULL– NULL– UNIQUE– DEFAULT– PRIMARY KEY– FOREIGN KEY / REFERENCES– CHECK
• Đặt tên cho RBTVCONSTRAINT <Ten_RBTV> <RBTV>
Lý thuyết CSDL 57/11157
Ví dụ - RBTV
CREATE TABLE NHANVIEN (
HODEM VARCHAR(30) NOT NULL,
TENNV VARCHAR(10) NOT NULL,
MANV CHAR(9) PRIMARY KEY,
NS DATETIME,
DCHI VARCHAR(50),
GT CHAR(3) CHECK (GT IN (‘Nam’, ‘Nu’)),
LUONG INT DEFAULT (10000),
MA_NQL CHAR(9),
PHONG INT
)
Lý thuyết CSDL 58/111
Ví dụ - RBTV
CREATE TABLE PHONGBAN (
TENPB VARCHAR(20) UNIQUE,
MAPHONG INT NOT NULL,
TRPHONG CHAR(9),
NG_NHANCHUC DATETIME DEFAULT (GETDATE())
)
CREATE TABLE PHANCONG (
MA_NVIEN CHAR(9) FOREIGN KEY (MA_NVIEN)
REFERENCES NHANVIEN(MANV),
SODA INT REFERENCES DEAN(MADA),
THOIGIAN DECIMAL(3,1)
)
Lý thuyết CSDL 59/111
Ví dụ - Đặt tên cho RBTV
CREATE TABLE NHANVIEN (
HODEM VARCHAR(30) CONSTRAINT NV_HODEM_NN NOT NULL,
TENNV VARCHAR(10) NOT NULL,
MANV CHAR(9) CONSTRAINT NV_MANV_PK PRIMARY KEY,
NS DATETIME,
DCHI VARCHAR(50),
GT CHAR(3) CONSTRAINT NV_GT_CHK
CHECK (GT IN (‘Nam’, ‘Nu’)),
LUONG INT CONSTRAINT NV_LUONG_DF DEFAULT (1000000),
MA_NQL CHAR(9),
PHONG INT
)
Lý thuyết CSDL 60/111
Ví dụ - Đặt tên cho RBTV
CREATE TABLE PHANCONG (
MA_NVIEN CHAR(9),
SODA INT,
THOIGIAN DECIMAL(3,1),
CONSTRAINT PC_MANVIEN_SODA_PK PRIMARY KEY (MA_NVIEN, SODA),
CONSTRAINT PC_MANVIEN_FK FOREIGN KEY (MA_NVIEN)
REFERENCES NHANVIEN(MANV),
CONSTRAINT PC_SODA_FK FOREIGN KEY (SODA)
REFERENCES DEAN(MADA)
)
Lý thuyết CSDL 61/111Lý thuyết CSDL 61
Lệnh sửa bảng
• Được dùng để– Thay đổi cấu trúc bảng – Thay đổi RBTV
• Thêm cột
• Xóa cột
• Mở rộng cột
ALTER TABLE <Tên_bảng> ADD COLUMN<Tên_cột> <Kiểu_dữ_liệu> [<RBTV>]
ALTER TABLE <Tên_bảng> DROP COLUMN <Tên_cột>
ALTER TABLE <Tên_bảng> ALTER COLUMN<Tên_cột> <Kiểu_dữ_liệu_mới>
Lý thuyết CSDL 62/111Lý thuyết CSDL
Lệnh sửa bảng (tt)
• Thêm RBTV
• Xóa RBTV
ALTER TABLE <Tên_bảng> ADDCONSTRAINT <Ten_RBTV> <RBTV>,
CONSTRAINT <Ten_RBTV> <RBTV>,
…
ALTER TABLE <Tên_bảng> DROP <Tên_RBTV>
Lý thuyết CSDL 63/111Lý thuyết CSDL
Ví dụ - Thay đổi cấu trúc bảng
ALTER TABLE NHANVIEN ADD
NGHENGHIEP CHAR(20)
ALTER TABLE NHANVIEN DROP COLUMN NGHENGHIEP
ALTER TABLE NHANVIEN ALTER COLUMN
NGHENGHIEP CHAR(50)
Lý thuyết CSDL 64/111Lý thuyết CSDL
Ví dụ - Thay đổi RBTV
CREATE TABLE PHONGBAN (
TENPB VARCHAR(20),
MAPHONG INT NOT NULL,
TRPHONG CHAR(9),
NG_NHANCHUC DATETIME
)
ALTER TABLE PHONGBAN ADD
CONSTRAINT PB_MAPHONG_PK PRIMARY KEY (MAPHONG),
CONSTRAINT PB_TRPHONG FOREIGN KEY (TRPHONG)
REFERENCES NHANVIEN(MANV),
CONSTRAINT PB_NGNHANCHUC_DF DEFAULT (GETDATE())
FOR (NG_NHANCHUC),
CONSTRAINT PB_TENPB_UNI UNIQUE (TENPB)
Lý thuyết CSDL 65/111Lý thuyết CSDL
Lệnh xóa bảng
• Được dùng để xóa cấu trúc bảng– Tất cả dữ liệu của bảng cũng bị xóa
• Cú pháp
• Ví dụDROP TABLE <Tên_bảng>
DROP TABLE NHANVIENDROP TABLE PHONGBAN
DROP TABLE PHANCONG
Lý thuyết CSDL 66/111Lý thuyết CSDL
Lệnh xóa bảng (tt)
NHANVIEN
TENNVHONV TENDEM MANV NS DCHI GT LUONG
MA_NQL PHONG
PHONGBAN
TRPHONG
TENPHG MAPHONG
NG_NHANCHUC
Lý thuyết CSDL 67/111
Lệnh tạo miền giá trị
• Tạo ra một kiểu dữ liệu mới kế thừa những kiểu dữliệu có sẳn
• Cú pháp
• Ví dụ
CREATE DOMAIN <Tên_kdl_mới> AS <Kiểu_dữ_liệu>
CREATE TYPE <Tên_kdl_mới> FROM <Kiểu_dữ_liệu>
CREATE DOMAIN Kieu_Ten AS VARCHAR(30)
CREATE TYPE Kieu_Ten FROM VARCHAR(30) not null
Lý thuyết CSDL 68/111
Detach and Reattach the Database in Transact-SQL
use master--DetachEXEC sp_detach_db 'Asset5'Go--AttachEXEC sp_attach_db @dbname = 'Asset5',
@filename1 = 'c:\Program Files\Microsoft SQL Server\MSSQL.1\mssql\data\Asset5.mdf',
@filename2 = 'c:\Program Files\Microsoft SQL Server\MSSQL.1\mssql\data\Asset5_log.ldf‘
Nếu CSDL còn có nhiều file khác thì chúng ta thêm vào các @filename3, @filename4,…
Lý thuyết CSDL 69/111
Attach and Detach in Management Studio
• Detach:– Chọn database: chọn Tasks | Detach.– Việc Detach CSDL có thể chưa sẵn sàng nếu như có ít nhất một user
khác đang kết nối đến CSDL này.
• Attach:– Copy file dữ liệu và file log vào thư mục trong máy chủ. Thông
thường đặt trong thư mục data trong sqlserver.– Trong cửa sổ Object Browser của Database chọn Attach.– Chương trình mở cửa số Attach. Chọn nút Add và mở thư mục chứa
file dữ liệu (.mdf).
Lý thuyết CSDL 70/111
Attach and Detach in Management Studio
• Xuất hiện lỗi sau khi attach hoặc restore một CSDL được lấy từ một server khác.– Cannot add diagram to SQL Server 2005 DB: Database diagram
support objects cannot be installed because this database does not have a valid owner .
• Sửa lỗi này:– EXEC sp_dbcmptlevel 'dbname', '90';
– ALTER AUTHORIZATION ON DATABASE::dbname TO valid_login
• Ví dụ– EXEC sp_dbcmptlevel 'Northwind', '90';– ALTER AUTHORIZATION ON DATABASE::Northwind TO "HUNG-CNPM\ManhHung“
• 60 = SQL Server 6.0; 65 = SQL Server 6.5 • 70 = SQL Server 7.0; 80 = SQL Server 2000 • 90 = SQL Server 2005
Lý thuyết CSDL 71/111
Vấn đề tiềm ẩn trong việc triển khai CSDL
• Khi triển khai CSDL như trên sẽ không đảm bảo được liên kết giữa server logins and database users.
• Vì:– Server logins được lưu trữ trong CSDL Master, Database
users được lưu trữ trong từng CSDL.– Các Database users sẽ được attach theo CSDL, nhưng các
Database users này lại liên kết đến server logins trên server cũ. => Lỗi.
• Giải pháp:– Sử dụng sp_change_users_login
Lý thuyết CSDL 72/111
Thủ tục sp_change_users_login Cú pháp: sp_change_users_login [ @Action = ] 'action'
[ , [ @UserNamePattern = ] 'user' ] [ , [ @LoginName = ] 'login' ] [ , [ @Password = ] 'password' ]
Action Value Description
Auto_Fix
Links a user entry in the sysusers table in the current database to a SQL Server login of the same name. If a login with the same name does not exist, one will be created.
Nếu login không tồn tại thì bạn phải chỉ định cả user and password.Nếu login đã có thì phải chỉ định user và không được chỉ định password.login phải là NULL, user phải đúng là có trong CSDL, login phải chưa được mapped
đến một user nào khác.
Report Liệt kê danh sách các user trong CSDL hiện thời không có liên kết đến server logins. Khi đó các tham số: user, login, and password must be NULL or not specified.
Update_One Liên kết user đến một server login. Khi đó: user and login must be specified. password must be NULL or not specified.
Lý thuyết CSDL 73/111
Thủ tục sp_change_users_login
• Hiển thị tất cả các user không có liên kết đến server logins của CSDL hiện thời:exec sp_change_users_login @Action = 'Report'
• Liên kết user chỉ định trong @UserNamePattern đến một server login:exec sp_change_users_login @Action = 'Update_one',
@UserNamePattern = 'test',@LoginName = 'hung‘
--login chưa có phải chỉ định cả user and password.
exec sp_change_users_login @Action = 'Auto_Fix',@UserNamePattern = 'nsunderic' ,@password = 'myl.password'
Lý thuyết CSDL 74/111
Xác thực NSD
• Các kiểu xác thực: – SQL Server and Windows Authentication: hỗ trợ 2 kiểu
đăng nhập trên SQL Server và trên Windows– Windows Authentication
• Khi cài đặt chúng ta đã chọn một kiểu xác thực cho SQL Server. Tuy nhiên chúng ta có thể thay đổi:– Mở MSt.– Trong cửa sổ Object Explorer, ấn phải chuột lên server,
chọn properties.– Chọn nút Security => chọn kiểu xác thực– Chọn OK
Lý thuyết CSDL 76/111
So sánh 2 kiểu xác thực
• Kiểu Windows Authentication– Chỉ yêu cầu NSD đăng nhập một lần– Quản lý tập trung– Tận dụng được các tính năng bảo mật của Windows
• Kiểu SQL and Windows– Hỗ trợ NSD trên các HĐH khác– Quản lý NSD riêng
Lý thuyết CSDL 78/111
Tạo thêm NSD mới trên SQL Server• Chú ý: Nếu sử dụng password policy thì mật khẩu phải tối thiểu
là 6 kí tự và phải chứa cả ba lọai: chữ thường a-z, chữ hoa A-Z, chữ số 0-9.
• Thêm NSD theo xác thực Windows– Mở Security mức Server– Ấn phải chuột chọn New Login– Lựa chọn: Windows Authentication– Nhập tên NSD, hoặc chọn Search– Chọn Default DB– Chọn Server Roles– Chọn User Mapping để chỉ ra các CSDL mà NSD có quyền tương tác.
• Thêm NSD theo xác thực SQL Server (làm tương tự)
Lý thuyết CSDL 79/111
Thêm NSD mới bằng T-SQLCREATE LOGIN login_name { WITH <option_list1> | FROM <sources> }<sources> ::=
WINDOWS [ WITH <windows_options> [ ,... ] ]| CERTIFICATE certname| ASYMMETRIC KEY asym_key_name
<option_list1> ::= PASSWORD = 'password' [ HASHED ] [ MUST_CHANGE ][ , <option_list2> [ ,... ] ]
<option_list2> ::= SID = sid| DEFAULT_DATABASE = database | DEFAULT_LANGUAGE = language| CHECK_EXPIRATION = { ON | OFF}| CHECK_POLICY = { ON | OFF}[ CREDENTIAL = credential_name ]
<windows_options> ::= DEFAULT_DATABASE = database| DEFAULT_LANGUAGE = language
Lý thuyết CSDL 80/111
Thêm NSD mới bằng T-SQL (2)
Create database testgouse testGo-- Them login la UserLogin1 theo xac thuc SQL ServerCREATE LOGIN UserLogin1 WITH PASSWORD = '123' --Them login la HUNG-CNPM\ManhHung lay tu user cua
WindowsCREATE LOGIN [HUNG-CNPM\ManhHung] FROM
WINDOWS;
Lý thuyết CSDL 81/111
Grant, Revoke, Deny• Grant – là lệnh dùng để cấp pháp quyền thực thi các thao
tác hoặc là quyền truy cập đến đối tượng trên SQL Server.
• Revoke – dùng để đòi lại các quyền mà user đã được cấp phát.
• Deny – cấm không cho thực thi các thao tác hoặc truy cập đến một đối tượng nào đó
Lý thuyết CSDL 82/111
Grants permissions on a schema
Cấp quyền đối với mỗi schema:GRANT permission [ ,...n ] ON SCHEMA ::
schema_nameTO database_principal [ ,...n ][ WITH GRANT OPTION ][ AS granting_principal ]
Ví dụ:
Lý thuyết CSDL 83/111
Grants permissions on objects (table, view, proc,…)
GRANT <permission> [ ,...n ] ON [ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]TO <database_principal> [ ,...n ] [ WITH GRANT OPTION ]
Lý thuyết CSDL 84/111
Grants permissions on a server
GRANT permission [ ,...n ] TO <login> [ ,...n ]Ví dụ:
use master gocreate login LoginUs1 with password='123'create login LoginUs2 with password='123’ gogrant create any database to LoginUs1execute as login='LoginUs1'create database test1revertexecute as login='LoginUs2'create database test2 --failrevertdrop database test1Drop login LoginUs1
Lý thuyết CSDL 85/111
Revokes permissions on a schema
• REVOKE [ GRANT OPTION FOR ] permission [ ,...n ] ON SCHEMA :: schema_name { TO | FROM } database_principal [ ,...n ] [ CASCADE ]
- GRANT OPTION FOR: Đòi lại quyền WITH GRANT OPTION đã cấp phát
- CASCADE: Đòi lại các quyền đã phát.- Ví dụ:
- user sa -> usr1 (WITH GRANT OPTION )->usr2- User sa đòi lại quyền của usr1(cascade) thì quyền truy cập của
usr2 cũng tự động bị đòi lại
Lý thuyết CSDL 86/111
Removes server-level GRANT and DENY permissions
REVOKE [ GRANT OPTION FOR ] permission [ ,...n ] { TO | FROM } <login> [ ,...n ] [ CASCADE ]
Lý thuyết CSDL 87/111
Revokes permissions on objectsREVOKE [ GRANT OPTION FOR ] <permission> [ ,...n ] ON
[ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]
{ FROM | TO } <database_principal> [ ,...n ] [ CASCADE ]
Lý thuyết CSDL 88/111
Deny• Denies permissions on a server:
– DENY permission [ ,...n ] TO <login> [ ,...n ] [ CASCADE ] • Denies permissions on a schema:
– DENY permission [ ,...n ] } ON SCHEMA :: schema_name TO database_principal [ ,...n ] [ CASCADE ]
• Denies permissions on objects:– DENY <permission> [ ,...n ] ON [ OBJECT :: ][ schema_name ].
object_name [ ( column [ ,...n ] ) ] TO <database_principal> [ ,...n ] [ CASCADE ]
Lý thuyết CSDL 89/111
THẢO LUẬN
Trả lời câu hỏi:1. Các tiện ích trong SQL Server?2. Các cách tạo cơ sở dữ liệu trong SQL Server?3. Các loại xác thực trong SQL Server?