Administering Database Server With Microsoft SQL Server 2005
Administering Database Server With Microsoft SQL Server 2005
PROGRAMMER
Copyright 2007,
BiNus Center Head Office
Jl. KH. Syahdan No. 20 Kemanggisan - Palmerah
Jakarta 11480
Telp: (+6221) 534 5830, 532 2157, 532 8091
Fax: (+6221) 536 3867, Email: [email protected]
i
Contents
ii
DATA TRANSFER.....................................................................................................................27
3.1. SQL Server Integration Services ..........................................................................27
3.2. SQL Server Business Intelligence Development Studio ............................27
3.3. Transferring Data ..................................................................................................27
3.4. Executing Package ............................................................................................... 29
3.5. SQL Server Import and Export Wizard........................................................... 29
BACKUP AND RESTORE .........................................................................................................31
4.1. Backup and Restore Introduction ..........................................................................31
4.2. Backup Devices .......................................................................................................31
4.2.1. Creating Device from Management Studio.................................................31
4.2.2. Creating Device from T-SQL ..........................................................................32
4.3. Backup Operation ..................................................................................................33
4.3.1. Backup using Management Studio ...............................................................33
4.3.2. Backup using T-SQL ........................................................................................ 34
4.3.3. Backup Scheduling........................................................................................... 35
4.4. Restore Operation .................................................................................................37
4.4.1. Restore using Management Studio ..............................................................37
4.4.2. Restore using T-SQL ....................................................................................... 38
INDEX TABLE ............................................................................................................................ 41
5.1. Index Introduction ..................................................................................................... 41
5.2. Types of Index........................................................................................................ 44
5.3. Creating Index........................................................................................................ 46
5.3.1. Creating Index from Modify Table ............................................................... 46
5.3.2. Creating Index using New Index from Object Indexes........................... 49
5.3.3. Creating Index using T-SQL........................................................................... 50
5.4. Showing Information of Index ............................................................................ 51
5.5. Changing Index Name........................................................................................... 51
5.6. Dropping Index....................................................................................................... 52
SECURITY.................................................................................................................................. 53
6.1. Security Philosophy ................................................................................................. 53
6.2. Login ......................................................................................................................... 55
6.2.1. Membuat Login.................................................................................................. 55
6.2.2. Meng-edit Login ................................................................................................ 60
6.2.3. Menghapus Login.............................................................................................. 60
6.2.4. T-SQL Command............................................................................................... 60
iii
6.3. User........................................................................................................................... 60
6.4. Securable ................................................................................................................. 61
6.4.1. Securable scope: Server.................................................................................. 61
6.4.2. Securable scope: Database ............................................................................ 61
6.4.3. Securable scope: Schema .............................................................................. 62
6.5. Principal................................................................................................................... 62
6.5.1. Windows-level Principals................................................................................ 63
6.5.2. Server-level Principals ................................................................................... 63
6.5.3. Database-level Principals .............................................................................. 64
6.6. Permissions ............................................................................................................ 66
6.6.1. Grant..................................................................................................................... 66
6.6.2. Deny ..................................................................................................................... 67
6.6.3. Revoke................................................................................................................. 68
6.7. Schema .................................................................................................................... 69
6.7.1. Object Full-Name .............................................................................................. 70
6.7.2. Membuat Schema ...............................................................................................71
6.7.3. Mentransfer Object antar Schema ...............................................................72
6.7.4. Menghapus Schema..........................................................................................72
6.7.5. Mentransfer Schema Ownership dan Menghapus User .........................73
6.8. Credential................................................................................................................ 74
6.9. Certificate & Asymmetric Keys........................................................................ 74
6.10. Synonym.................................................................................................................. 74
6.10.1. Membuat Synonym.......................................................................................... 75
6.10.2. Menghapus Synonym..................................................................................... 75
iv
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
BAB 1
INTRODUCTION TO DATABASE AND SQL SERVER
http://www.microsoft.com/sql/prodinfo/features/compare-features.mspx
Proses instalasi SQL Server 2005 harus memenuhi beberapa syarat. Syarat-syarat
ini dapat dibaca pada SQL Server Books Online untuk SQL Server 2005.
1
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
2
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
3
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
4
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
9. Pada Error and Usage Report Settings, bisa dipilih apakah jika terjadi
error akan secara otomatis dikirimkan ke Microsoft melalui internet.
Pilihan tersebut tidak perlu diaktifkan, klik Next.
10. Tunggu proses instalasi hingga selesai, mungkin akan makan waktu
beberapa menit, klik Finish untuk mengakhiri proses instalasi. Selamat,
SQL Server 2005 telah berhasil di-install.
5
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
6
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
SQLACCOUNT=<domain\user>
SQLACCOUNT="NT AUTHORITY\SYSTEM"
SQLACCOUNT="NT AUTHORITY\NETWORK SERVICE"
SQLACCOUNT="NT AUTHORITY\LOCAL SERVICE"
2. Legacy Mainframe
Biasa dikenal dengan sebutan database VSAM (Virtual Storage Access
Method).
3. DBase
DBase mengandung ISAM (Indexed Sequential Access Method) yang
merupakan metode pengaksesan data secara berurutan yang memilki indeks.
5. Object-Oriented Databases
Menggunakan sistem object dalam penyimpanan data.
7
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Single Tier (Host) Systems merupakan model yang lama. Sistem ini
menggunakan sebuah terminal yang menangani user services dan data services
sekaligus.
2 - Tier Architecture (Client/Server)
Arsitektur ini menggunakan sebuah sub tipe yaitu client centric dan server
centric. Client centric menggunakan sistem dimana user dan business services
terletak pada client dan data services terletak pada database server.
3 Tier Architecture
Model Arsitektur ini memecah 3 level service tersebut kedalam model model
logical yang terpisah sepenuhnya.
N Tier Architecture
Arsitektur ini mirip dengan arsitektur 3 tier, tetapi dengan jumlah server
yang lebih banyak.
8
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Pada SQL Server, sebuah database tersusun dari beberapa file system. File-file ini
terbagi menjadi 3 tipe :
1. Primary Data Files
2. Secondary Data Files
3. Log Files
1.7. Table
Object paling dasar pada database SQL Server adalah table. Table berada pada
posisi yang penting dalam sebuah database. Sebuah table terdiri dari baris-baris dan
kolom-kolom. Table menyimpan data yang sebenarnya dari sebuah database.
Contoh sebuah tabel dapat dilihat di bawah ini dalam tabel MSBARANG pada
database dbDagang :
9
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
1.8. Index
Index adalah sebuah object yang merupakan bagian dari sebuah table atau view.
Index bekerja layaknya daftar isi pada sebuah buku, dimana kita disediakan beberapa key
(kata kunci) yang terurut untuk memudahkan kita dalam mencari informasi yang ingin
kita dapatkan.
1.9. Trigger
Trigger adalah sebuah object yang merupakan bagian dari table. Trigger
merupakan kode-kode logical yang akan dieksekusi apabila terjadi suatu proses yang
merubah keadaan table (insert, update, atau delete).
1.10. Constraint
Sebuah constraint adalah object yang merupakan bagian dari table. Constraint
berguna seperti layaknya trigger, yaitu untuk melakukan pengecekan pada data agar
10
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
memenuhi kondisi tertentu. Tetapi constraint tidak sama dengan trigger dimana
keduanya memiliki keunggulan tertentu.
1.11. View
Sebuah view bisa disebut sebagai suatu virtual table / logical table. Dalam berbagai
keadaan sebuah view digunakan layaknya sebuah tabel, tetapi view tidak benar-benar
menyimpan data. Data tetap ada di dalam table. Jadi sebuah view merupakan sebuah
penggambaran atau representasi dari data-data yang berada dalam table.
1.13. Rule
Rule dan constraints menyediakan kemampuan untuk membatasi informasi yang
dapat masuk ke dalam table. Jika suatu proses DML melanggar batasan yang diberikan
oleh rule / constraint maka proses tersebut akan dibatalkan. Perbedaan constraint
dengan rule adalah:
constraint yang merupakan meta data dari sebuah table,
rule merupakan object yang berdiri sendiri.
1.14. Default
Default memiliki kemampuan untuk memberikan nilai default pada suatu kolom jika
kolom tersebut tidak diisi. Tetapi default memilki dua tipe. Tipe pertama adalah default
yang berlaku sebagai sebuah meta data, dan tipe kedua adalah default sebagai sebuah
object berdiri sendiri. Mirip seperti constraint dan rule.
11
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
12
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
ukuran bervariasi
31
Text Character - Maksimum 2 -1 karakter,
ukuran bervariasi
Nchar Unicode - Maksimum 8000 karakter
unicode, ukuran tetap
NvarChar Unicode - Maksimum 8000 karakter
unicode, ukuran bervariasi
31
Ntext Unicode - Maksimum 2 -1 karakter
unicode, ukuran bervariasi
Binary Binary - Maksimum 8000 bytes biner,
ukuran tetap
VarBinary Binary - Maksimum 8000 bytes biner,
ukuran bervariasi
31
Image Binary - Maksimum 2 -1 bytes biner,
ukuran bervariasi
Table Other - Menyimpan result set
SQL_variant Other - Menyimpan data type lainnya
1.17. Collation
Collation menentukan pola bit data yang merepresentasikan setiap karakter dan
aturan bagaimana karakter itu disortir dan dibandingkan. Urutan penyimpanan fisik dari
setiap karakter string di dalam SQL Server 2005 ditentukan oleh collation.
function
REFERENCES per table 253 253
Limited by available Limited by available
Rows per table
storage storage
3 Limited by number of Limited by number of
Tables per database
objects in a database objects in a database
Partitions per partitioned table or
1,000 1,000
index
Statistics on non-indexed columns 2,000 2,000
Tables per SELECT statement 256 256
3 Limited by number of Limited by number of
Triggers per table
objects in a database objects in a database
UNIQUE indexes or constraints 249 nonclustered and 1 249 nonclustered and 1
per table clustered clustered
XML indexes 249 249
Diambil dari: Microsoft SQL Server 2005 Books Online
Untuk perbandingan antara SQL Server 2005 dengan SQL Server 7.0 dan SQL
Server 2000 bisa dilihat Maximum Capacity Specifications nya pada:
http://msdn2.microsoft.com/en-us/library/ms143432.aspx
Untuk SQL Server 2005
http://msdn2.microsoft.com/en-us/library/aa933149(SQL.80).aspx
Untuk SQL Server 7.0 dan SQL Server 2000
15
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
BAB 2
MANAJEMEN DATABASE SQL SERVER
Dalam SQL Server 2005, manajemen dan administrasi database dilakukan oleh
client tools, sedangkan server hanya bertugas untuk memberikan service kepada client-
client yang terkoneksi ke server. Server pada SQL Server 2005 diwakili oleh Windows
Service, dimana services tersebut bisa diakses menggunakan server tools seperti SQL
Server Configuration Manager, Reporting Services Configuration, dll. Sedangkan client
tools pada SQL Server 2005 terdiri dari books online, SQL Management Studio, Database
Engine Tuning Advisor, SQL Server Profiler, dll.
16
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Untuk mengaktifkan SQL Server services maka klik kanan SQL Server
(MSSQLSERVER) dan klik Start, sedangkan untuk mematikan services, klik tombol
Stop.
Untuk menjalankan services secara otomatis, klik kanan dan pilih Properties,
ubah startup type menjadi Automatic.
17
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
18
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
19
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Untuk mengubah network support, klik Surface Area Configuration for Services
and Connections, pilih Database Engine dan Remote Connections, set ke Local and
Remote Connections, gunakan protokol yang sering digunakan yaitu TCP/IP.
Note: Jangan lupa untuk mematikan Firewall pada Server untuk port yang bersangkutan.
Default port yang digunakan oleh service SQL Server (MSSQLSERVER) adalah 1433.
20
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Manager, Analysis Manager, dan Query Analyzer pada Microsoft SQL Server 2000. Untuk
membuka Management Studio:
Start All Programs Microsoft SQL Server 2005 SQL Server Management Studio
21
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
2.5. Scripting
Fitur Query Analyzer yang terdapat pada MS SQL Server 2000 sudah digabungkan
pada SQL Server Management Studio. Klik tombol New Query untuk membuka window
untuk melakukan scripting.
22
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Untuk menggunakan SQL script, tuliskan script pada window, blok script yang ingin
dieksekusi, tekan F5 atau klik Execute. Hasil akan bisa dilihat di bagian bawah Query
Window.
23
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
24
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Pada kolom Database name diatas masukkan nama database yang akan dibuat.
Lalu secara otomatis pada tabel telah didideskripsikan nama database file dan
transaction log file untuk database tersebut, path nya, dan ukurannya. Klik saja OK untuk
menyelesaikan pembuatan database.
Jika ingin menambahkan file tambahan untuk database, klik Add untuk
menambahkan file, meletakkan file pada suatu filegroup, dsb. Klik Script untuk melihat
SQL Script yang dihasilkan untuk pembuatan database tersebut di New Query Window.
Pada Database Properties, klik Files, dan lakukan perubahan pada database
tersebut
25
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
26
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
BAB 3
DATA TRANSFER
Start All Programs Microsoft SQL Server 2005 SQL Server Business
Intelligence Development Studio
Pada tab Control Flow dibagian bawahnya ada Connection Managers, klik kanan
dan pilih New Connection. Muncul pilihan tipe data apa yang ingin digunakan, MS SQL
Server dan MS Access biasanya menggunakan OLEDB, klik OLEDB. Muncul list dari
koneksi yang sudah pernah dibuat, klik New untuk membuat koneksi baru. Buatlah 2
27
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
connection, 1 untuk data source, 1 untuk data destination. Ada beberapa parameter di
Connection Manager:
Provider: Penyedia koneksi untuk suatu tipe database. Digunakan untuk
menentukan tipe database yang digunakan.
Untuk SQL Server Connection:
o Server Name: Nama komputer server ataupun IP Address dari server.
o Log on to server: Tipe authentication yang digunakan untuk server
tersebut.
o Select or enter a database name: Nama database object yang ingin
digunakan.
Untuk MS Access Connection:
o Database file name: Nama file database yang ingin digunakan.
o Log on to database: Username dan password apabila database file
tersebut di-protect.
Untuk MS Excel Connection:
o Pilih EXCEL pada pilihan New Connection, pilih file Excel dan versi
Excel yang akan digunakan.
dst
28
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Jika tidak ada tanda maka tidak ada masalah untuk mentransfer data, tekan F5
atau tanda untuk men-transfer data.
Note: Ada beberapa database (contoh: Excel) yang tidak mendukung konversi tipe data
Unicode. Hal ini bisa diatasi dengan mengubah semua tipe data dari database sumber
(char, varchar, text, ) menjadi tipe data Unicode yang dikenal di database tujuan (nchar,
nvarchar, ntext, )
29
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Next. Pada layar Data Source, pilih database yang ingin di export (tidak harus database
yang tadi dipilih), klik Next, pilih database tujuan, dan klik Next. Pilih Copy data from one
or more tables or views untuk export langsung dari suatu table atau view (jika ingin
export data tertentu saja, bisa dituliskan query syntax sendiri), klik Next. Pilih table atau
view yang ingin di export (bisa juga export semua table dengan Select All), klik Next.
Pada Save and Execute Package, pilih Execute Immediately (bisa juga disimpan sebagai
SSIS package agar bisa dieksekusi di lain waktu), klik Next dan Finish.
30
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
BAB 4
BACKUP AND RESTORE
31
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
32
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Isi Name pada Backup Set dengan logical name dari backup tersebut.
Backup set will expire menentukan kapan backup akan bisa di-overwrite (After 0
days berarti backup bisa di-overwrite kapan saja).
33
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Note: Option Backup set will expire di SQL 2005 mempunyai arti berbeda
dengan SQL 2000. Di SQL 2000 expire membuat backup tersebut tidak bisa di-
restore lagi setelah periode tertentu, sedangkan pada SQL 2005 membuat
backup akan bisa di-overwrite setelah periode tertentu.
Pada bagian Destination, pilih backup device yang dikehendaki. Jika belum
ada, klik Add untuk membuat backup device. Klik OK, maka data akan di backup
pada backup device.
Nyalakan service tersebut dengan melakukan klik kanan dan Start. Pada
bagian Jobs, klik kanan dan pilih New Job. Isi nama Job pada tab General. Pada
tab Steps, klik New, isikan nama Step tersebut dan berikan perintah BACKUP
DATABASE pada Command dan klik OK.
35
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Kembali ke window New Job, pada bagian Schedules, klik New untuk
membuat schedule baru. Masukkan nama Schedule, pilih jadwal untuk proses
tersebut, dan klik OK.
36
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
37
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Database dan melakukan editing secara manual kemana database akan di-
restore.
Jika user ingin melakukan restore differential atau transaction log, maka
user harus melakukan restore full terhadap database tersebut. Hal ini dapat
dilakukan dengan melakukan check pada semua backup set yang ingin di-restore.
38
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
[ [ , ] MEDIAPASSWORD = { mediapassword |
@mediapassword_variable } ]
[ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ]
[ ,...n ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] { RECOVERY | NORECOVERY | STANDBY =
{standby_file_name | @standby_file_name_var }
} ]
[ [ , ] REPLACE ]
[ [ , ] RESTART ]
[ [ , ] RESTRICTED_USER ]
[ [ , ] { REWIND | NOREWIND } ]
[ [ , ] STATS [ = percentage ] ]
[ [ , ] { STOPAT = { date_time | @date_time_var }
| STOPATMARK = { 'mark_name' | 'lsn:lsn_number' }
[ AFTER datetime ]
| STOPBEFOREMARK = { 'mark_name' | 'lsn:lsn_number' }
[ AFTER datetime ]
} ]
[ [ , ] { UNLOAD | NOUNLOAD } ]
]
39
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
40
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
BAB 5
INDEX TABLE
Setiap page dalam suatu index disebut index page atau index node. Pencarian data
dimulai dari root node di level paling atas. Root node ini berisi sejumlah index row (yang
masing-masing index row berisi key value dan pointer ke suatu index page tertentu).
41
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Sama seperti root node, branch node juga berisi sejumlah index row yang
mengacu ke index page lainnya yang berada pada level dibawahnya. Struktur B-tree ini
dapat terdiri dari beberapa level, dan diawali oleh root node pada level 1.
42
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Simple Index : Index yang hanya terdiri dari satu field dari suatu tabel. Field ini
sebaiknya ditulisan dalam WHERE clause bila kita mau mengunakan index.
Composite Index: Index yang terdiri dari lebih dari satu field dari suatu tabel. SQL
Server 2005 dapat menampung suatu index yang terdiri dari 16 field atau panjangnya
900 byte.
Unique Index: index yang index key-nya hanya muncul satu kali, tak ada yang
sama. SQL Server tidak akan mengizinkan memasukan nilai yang sama untuk kolom
43
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Non-Unique Index : index yang memungkinkan index key-nya muncul lebih dari
satu kali. Non-Unique Index tidak se-efisien unique index karena membutuhkan proses
tambahan yaitu tambahan proses operasi I/O dalam mengambil data yang dicari. Tetapi
dalam beberapa kasus, yang tak memungkinkan menggunakan unique index, maka Non-
Unique Index masih memberikan hasil yang lebih baik daripada tidak ada index sama
sekali.
44
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
45
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Sebelum membuat index, tabel yang akan dibuatkan index-nya harus sudah
tersedia, atau dibuat bersamaan dengan pembuatan tabel.
46
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
47
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Note: Index yang dibuat dengan cara ini tidak akan tertulis di Object Indexes.
Sama seperti cara sebelumnya, jika sudah ada Primary Key, maka secara
otomatis akan terbentuk 1 clustered index dari primary key tersebut, namun tidak
tercatat di Object Indexes.
Isi nama index dan tentukan tipe index tersebut. Jika sudah ada primary
key, maka sudah terbentuk clustered index untuk table tersebut dan tidak bisa
dibuat clustered index lagi. Klik Add untuk memilih kolom yang akan dibuat index
49
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
nya. Klik Option atau Storage untuk pilihan-pilihan lain, dan terakhir klik OK untuk
membuat index tersebut.
50
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Note: sp_help akan menampilkan semua informasi pada table tersebut termasuk index,
sedangkan sp_helpindex hanya akan menampilkan informasi mengenai index dalam table
tersebut.
51
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Note: Menghapus index menggunakan DROP INDEX tidak bisa digunakan untuk index
yang dibuat melalui primary key ataupun unique constraint. Untuk menghapus index
tersebut, gunakan cara yang pertama, melalui modify table.
52
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
BAB 6
SECURITY
SQL Server 2005 memiliki suatu pengaturan perijinan yang berupa suatu hirarki,
lebih dikenal dengan nama permission hierarchy. Hirarki yang paling sering digunakan
adalah server-level dan database-level, meski tidak menutup kemungkinan untuk
menggunakan pengecualian perijinan (discrete permission). Berikut adalah ilustrasi dari
Database Engine permissions hierarchies secara keseluruhan.
53
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Pada SQL Server 2005, terdapat beberapa Object yang berkaitan dengan
security secara keseluruhan. Beberapa diantaranya adalah:
1. Login
54
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
2. User
3. Securable
4. Principal
5. Permission
6. Schema
7. Credential
8. Certificate
9. Synonim
6.2. Login
Pada SQL Server 2005 (SQL Server 7.0 ke atas) terdapat 2 pilihan security :
1. Windows Authentication
Jika menggunakan Windows Authentication, sewaktu masuk ke Management
Studio tidak perlu mengisikan username. SQL Server akan menggunakan
account dari Microsoft Windows untuk melakukan login ke SQL Server secara
otomatis. Sering disebut juga Windows Login.
2. Mixed Mode (Windows Authentication + SQL Server Authentication)
Jika menggunakan Mixed Mode, user harus mengisikan username dan
password yang didefinisikan di SQL Server itu sendiri, disamping menggunakan
Windows Login untuk masuk ke Windows itu sendiri. Dengan kata lain,
menggunakan gabungan dari Windows Login dan SQL Server Login. Sering
hanya disebut sebagai SQL Server Login .
55
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Pilih jenis login yang akan dibuat, apakah Windows Authentication atau SQL
Server Authentication. Jika memilih Windows Authentication, klik Search dan isikan
Windows Account yang ingin diberikan login ke SQL Server (account tersebut
harus sudah ada). Jika memilih membuat SQL Server Account, isi Login Name dan
Password.
Enforce password policy: Mengecek apakah password sudah cukup kuat
atau belum. Jika dijalankan pada Window Server 2003 atau yang lebih
baru, SQL Server 2005 dapat menggunakan mekanisme Windows
Password Policy yang terdapat pada NetValidatePasswordPolicy() API.
Enforce password expiration: Menentukan apakah password akan
expire setelah batas waktu tertentu. Enforce password policy harus
diaktifkan agar checkbox ini bisa dipilih.
User must change password at next login: Mengharuskan user untuk
mengganti password nya setelah dia login untuk pertama kalinya. Hal ini
memang seharusnya dilakukan. Option ini hanya di-support untuk
Windows Server 2003.
56
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Pada Server Roles, bisa dipilih role dari login tersebut. Role akan dijelaskan
lebih detil pada sub bab selanjutnya, untuk contoh gunakan role sysadmin.
57
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Pada User Mapping, pilih database apa saja yang bisa diakses oleh user
tersebut. Pada Database role membership, bisa dipilih user tersebut boleh
melakukan apa saja pada database tersebut. Role akan dijelaskan lebih detil pada
sub bab selanjutnya, untuk contoh gunakan role db_owner.
58
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Pada Status, bisa dipilih apakah user akan boleh mengakses Database
Engine, dan apakah user masih diaktifkan atau tidak.
6.3. User
User berbeda dengan login. User adalah nama yang digunakan suatu login untuk
mengakses setiap object dari SQL Server. Setiap login hanya boleh memiliki satu user
pada satu database dan sebaliknya. User boleh menggunakan nama yang sama dengan
login, namun juga bisa berbeda.
Untuk membuat user pada suatu database, pembuat user harus sedang aktif pada
database yang bersangkutan. Syntax lengkap untuk membuat user adalah:
60
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Contoh:
Perintah tersebut akan membuat login Wendy dan user Wendy_Finance untuk
login tersebut pada tabel MS_Finance. Karena tidak dituliskan secara spesifik, default
schema yang digunakan adalah dbo (database owner).
6.4. Securable
Securable adalah resource dimana SQL Server Database Engine authorization
system mengatur regulasi akses. Beberapa securable dapat mengandung securable lain,
membentuk suatu nested hierarchy yang disebut scopes, dimana scopes tersebut bisa
di-secure juga. Securable scope yang ada adalah Server, Database, dan Schema .
61
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Route
Service
Remote Service Binding
Fulltext Catalog
Certificate
Assymetric Key
Symetric Key
Contract
Schema
6.5. Principal
Principal adalah individual, group, maupun process yang bisa meminta SQL Server
resource. Principal juga bisa diatur secara hirarkis. Scope dari principal bergantung pada
scope definisi dari principal itu sendiri, apakah principal itu indivisible atau collection.
Windows Login merupakan contoh indivisible principal, sedangkan Windows Group
62
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
63
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Server-level
Fixed Database Role Database-level Permission
Permission
Granted: ALTER ANY USER, CREATE Granted: VIEW ANY
db_accessadmin
SCHEMA DATABASE
db_accessadmin Granted with GRANT option: CONNECT
Granted: BACKUP DATABASE, BACKUP Granted: VIEW ANY
db_backupoperator
LOG, CHECKPOINT DATABASE
Granted: VIEW ANY
db_datareader Granted: SELECT
DATABASE
Granted: VIEW ANY
db_datawriter Granted: DELETE, INSERT, UPDATE
DATABASE
Granted: ALTER ANY ASSEMBLY, ALTER
ANY ASYMMETRIC KEY, ALTER ANY
CERTIFICATE, ALTER ANY CONTRACT,
ALTER ANY DATABASE DDL TRIGGER,
ALTER ANY DATABASE EVENT,
NOTIFICATION, ALTER ANY DATASPACE,
ALTER ANY FULLTEXT CATALOG, ALTER
ANY MESSAGE TYPE, ALTER ANY REMOTE
SERVICE BINDING, ALTER ANY ROUTE, Granted: VIEW ANY
db_ddladmin
ALTER ANY SCHEMA, ALTER ANY DATABASE
SERVICE, ALTER ANY SYMMETRIC KEY,
CHECKPOINT, CREATE AGGREGATE,
CREATE DEFAULT, CREATE FUNCTION,
CREATE PROCEDURE, CREATE QUEUE,
CREATE RULE, CREATE SYNONYM,
CREATE TABLE, CREATE TYPE, CREATE
VIEW, CREATE XML SCHEMA COLLECTION,
REFERENCES
Granted: VIEW ANY
db_denydatareader Denied: SELECT
DATABASE
db_denydatawriter Denied: DELETE, INSERT, UPDATE
65
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Note: Setiap database user sendiri merupakan anggota dari public database role.
Jika suatu user tidak di-grant atau deny suatu permission yang spesifik, maka
secara default user tersebut mewarisi permission public pada securable tersebut.
Note: Setiap database yang dibuat akan secara otomatis mempunyai user Guest .
Permission dari Guest akan diwariskan pada semua user yang tidak memiliki user
account pada database tersebut. User Guest tidak bisa di-drop.
6.6. Permissions
Setiap securable pada SQL Server 2005 mempunyai permission yang bisa
dianugerahkan (granted) pada suatu principal. Secara sederhana dapat berarti sebagai
suatu aturan yang menunjukkan siapa yang boleh mengakses apa. Hal ini merupakan titik
vital dari suatu database security, untuk menunjukkan suatu data dapat diakses oleh
siapa saja dan suatu user dapat mengakses data apa saja. Secara umum terdapat 3
perintah untuk mengatur permission, yaitu:
6.6.1. Grant
Memberikan permission untuk suatu principal pada suatu securable. Sintaks
GRANT yang sebenarnya sangat kompleks, secara sederhana bisa dideskripsikan
sebagai berikut:
Contoh:
66
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
USE DBFinance
GO
CREATE USER Wendy_Finance FOR LOGIN Wendy
GO
GRANT SELECT ON DATABASE::DBFinance TO Wendy_Finance
USE DBFinance
GO
GRANT INSERT ON OBJECT::dbo.TbInvoice TO Wendy_Finance
6.6.2. Deny
Merupakan permission untuk melarang suatu principal untuk melakukan
sesuatu pada suatu securable. Sintaks DENY yang sebenarnya sangat kompleks,
secara sederhana bisa dideskripsikan sebagai berikut:
Contoh:
6.6.3. Revoke
Mencabut permission baik GRANT maupun DENY yang telah diberikan.
Sintaks REVOKE yang sebenarnya sangat kompleks, secara sederhana bisa
dideskripsikan sebagai berikut:
Contoh:
68
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Note: GRANT ALL, DENY ALL, dan REVOKE ALL sudah tidak seharusnya digunakan lagi
dan dipertahankan hanya untuk compatibility saja. Perintah ALL tersebut tidak merujuk
pada semua permission yang ada. Permission yang dirujuk oleh perintah ALL adalah:
If the securable is a database, "ALL" means BACKUP DATABASE, BACKUP LOG,
CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE
PROCEDURE, CREATE RULE, CREATE TABLE, and CREATE VIEW.
If the securable is a scalar function, "ALL" means EXECUTE and REFERENCES.
If the securable is a table-valued function, "ALL" means DELETE, INSERT,
REFERENCES, SELECT, and UPDATE.
If the securable is a stored procedure, "ALL" means DELETE, EXECUTE, INSERT,
SELECT, and UPDATE.
If the securable is a table, "ALL" means DELETE, INSERT, REFERENCES,
SELECT, and UPDATE.
If the securable is a view, "ALL" means DELETE, INSERT, REFERENCES, SELECT,
and UPDATE.
Note: Perintah ALL telah digantikan dengan perintah CONTROL. Contoh: GRANT
CONTROL, DENY CONTROL, REVOKE CONTROL untuk memberikan semua permission
yang dimiliki oleh pemberi permission.
6.7. Schema
Schema adalah suatu collection dari database entity yang membentuk sebuah
namespace tunggal. Sebuah namespace merupakan suatu set dimana setiap elemen
mempunyai suatu nama yang unique. Sebagai contoh, untuk mencegah name collision, 2
table tidak boleh memiliki nama yang sama jika diletakkan pada schema yang sama,
namun bisa dilakukan jika diletakkan pada schema yang berbeda.
Salah satu konsep baru yang diperkenalkan pada SQL Server 2005 adalah
User-Schema Separation. Pada SQL Server 2000, setiap object yang dibuat oleh suatu
user akan dimiliki oleh user tersebut. Adapun perintah CREATE SCHEMA pada SQL
Server 2000 tidak bisa memberikan nama pada schema tersebut. Akibatnya terjadi
kesulitan untuk melakukan drop user karena semua object yang dimiliki oleh user
tersebut harus di-reassign atau di-drop dan di-create ulang. Contoh:
69
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Object tersebut dimiliki oleh user george. Jika administrator ingin melakukan
drop pada user tersebut, dia harus men-drop object tersebut atau mengganti
kepemilikan object tersebut dengan perintah ALTER AUTHORIZATION. Setelah
kepemilikan diganti, object tersebut menjadi:
accounting.ap.sandra.reconciliation
SQL Server 2005 memperkenalkan konsep pemisahan antara user dengan schema.
Pada SQL Server 2005, schema ada secara independent dari user yang membuat object
tersebut. Kepemilikan dari suatu schema dapat dipindahkan tanpa mengganti namanya.
Object juga bisa dibuat dengan menggunakan nama yang lebih user-friendly. Contohnya
adalah daripada menggunakan nama accounting.ap.sandra.reconciliation,
dapat dibuat schema dengan nama accounting.ap.invoice.reconciliation. Nama
ini tidak perlu diganti ketika user di-drop dari database karena invoice bukan suatu user.
Hal ini akan menyederhanakan pekerjaan database administrator dan developer.
Server.Database.Schema_Name.Object_Name
70
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
ASTRASERVER.Db_Astra_Finance.dbo.Tb_Invoice
Jika terdapat suatu perusahaan yang sangat besar dengan beberapa server
serta database, maka penggunaan full-name menjadi mutlak diperlukan untuk
mencegah kesalahan referensi, sehingga semua query dari aplikasi berjalan harus
merujuk pada full-name. Contoh:
Note: User yang dibuat tanpa menyebutkan default schema secara otomatis akan
menggunakan dbo schema.
<schema_name_clause> ::=
{
schema_name
| AUTHORIZATION owner_name
| schema_name AUTHORIZATION owner_name
}
<schema_element> ::=
{
table_definition | view_definition | grant_statement
revoke_statement | deny_statement
}
71
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Note: Meskipun jarang sekali digunakan, untuk menghapus suatu schema, tidak
boleh ada object yang masih merujuk ke schema tersebut. Object tersebut harus di-
drop dan re-create atau ditransfer kepemilikannya ke schema lain terlebih dahulu.
ALTER AUTHORIZATION
ON [ <entity_type> :: ] entity_name
TO { SCHEMA OWNER | principal_name }
Dengan melakukan hal ini, maka semua reference atas object yang dimiliki
oleh user tersebut tidak akan berubah karena full-name suatu object menggunakan
73
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
6.8. Credential
Credential merupakan suatu rekaman informasi autentifikasi yang digunakan untuk
mengakses resource diluar SQL Server. Biasanya, credential digunakan untuk memberi
akses pada suatu SQL Server user untuk memiliki hak dari suatu Windows user. Isi dari
credential sendiri biasanya adalah identity dan password sebuah Windows user.
Setelah membuat credential, perintah CREATE LOGIN atau ALTER LOGIN bisa
dipakai untuk mem-bound suatu login dengan suatu credential. Sebuah credential bisa di-
bound dengan beberapa login, namun satu login hanya bisa di-bound pada satu
credential.
6.10. Synonym
Synonym sebenarnya hanya merupakan sebuah shortcut untuk mengakses suatu
object pada SQL Server. Misalkan suatu perusahaan mempunyai lebih dari satu server,
untuk mengambil data pada server lain, harus digunakan object full-name atau sering
disebut four-part name. Contohnya adalah ketika aplikasi dari Server2 ingin mengambil
data pada table Employee pada database AdventureWorks yang terletak pada server
Server1, maka harus digunakan: Server1.AdventureWorks.dbo.Employee.
74
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Note: SQL Server 2005 tidak menyediakan perintah ALTER SYNONYM sehingga untuk
mengganti referensi synonym harus dilakukan dengan drop and re-create.
Contoh:
75
ADMINISTERING DATABASE SERVER WITH MICROSOFT SQL SERVER 2005
Contoh:
76