Transparent Data Encryption Overvie Dalam database, data yang kita masukkan, akan dismpan dalam baris – baris pada tiap kolom dan tabel. Namun sebenarnya data tersebut disimpan oleh database engine dalam sebuah file di media penyimpanan pada komputer. Database engine memiliki kemanan yang bisa melarang orang tidak terautentikasi untuk mengakses database. Tetapi masalahnya, jika seseorang tersebut mendapatkan data fisik dari media penyimpanan, maka hal itu berarti dia juga mendapatakn semua data yang ada di database. Untuk mengatasi permasalahan tersebut dibutuhkan suatu cara agar orang yang berhasil mendapatkan data kita tetap tidak bisa membacanya. Solusinya adalah dengan cara melakukan enkripsi pada data yang disimpan. Enkripsi adalah metode yang digunakan untuk merubah suatu data menggunakan kunci tertentu sehingga makna sebenarnya dari data tersebut tidak bisa dimengerti oleh orang lain tanpa melakukan dekripsi menggunakan kunci yang sesuai. Masalahnya, setiap kali kita membaca data yang dienkripsi kita harus melakukan dekripsi pada data tersebut dengan kunci kita. Hal itu tentu membuat pekerjaan menggunakan data yang dienkripsi menjadi semakin lama. Oleh karena itu dibuatlah metode Transparent Data Encryption, dimana untuk membaca data yang dienkripsi, kita tidak perlu melakukan dekripsi berulang – ulang. Kita hanya butuh satu kunci yang menyataka bahwa kita adalah orang yang berhak mengakses data – data tertenty, lalu kita tidak perlu melakukan dekripsi lagi pada data yang kita miliki meskipun data tersebut dienkripsi dengan metode yang berbeda. Pada SQL Server juga terdapat metode Transparent Data Encryption yang membantu mengamankan data yang disimpan pada database dengan cara melakukan enkripsi pada data. TDE pada SQL Server juga tidak membatasi pengguna untuk mengakses data pada database, tetapi jika ada pencurian data, maka data tersebut tetap tidak bisa dibaca [1]. Enkripsi database SQL Server menggunakan Database Encryption Key (DEK), yaitu key yang diamankan menggunakan certificate yang disimpan pada master database. Key ini mengenkripsi data dan log file [2]. Cara kerja TDE pada SQL Server SQL Server menerapkan penggunaan 3 tingkat kunci untuk melakukan enkripsi pada data. Kunci yang pertama ada di tingkat server atau instance atau service level yang disebut dengan service master key. Pada level berikutnya ada database master key, dan level yang terakhir adalah database encryption key. Ketiga kunci tersebut merupakan tiga kunci yang berbeda fungsinya. Service master key adalh kunci yang diatur pada saat setup SQL Server. Service master key ini merupakan kunci yang digunakan untuk mengenkripsi database master key pada master database. Untuk melakukan enkripsi pada database, tidak perlu mengubah service master key. Database master key adalah key yang juga ada di master database. Key pada database master key ini telah dienkripsi menggunakan key yang ada pada service master key. Kemudian database master key ini digunakan untuk membuat certificate. Seperti yang telah saya sebutkan sebelumnya, bahwa fungsi dari certificate adalah untuk mengamankan Database Encryption Key (DEK) pada database. Yang terakhir adalah Database Encryption Key atau DEK. DEK ini lah yang sebenarnya akan digunakan secara langsung untuk mengenkripsi data yang ada pada database. Oleh karena itu, tingkat keamanan pada DEK jauh lebih tinggi dari pada key sebelumnya. Pada DEK keamanan bisa hanya dilakukan menggunakan password yang dimasukkan oleh user, melainkan harus menggunakan algoritma enkripsi yang didukung oleh SQL Server. Beberapa algoritma yang didukung oleh SQL Server adalah AES_128, AES_192, AES_256, dan TRIPLE_DES_3KEY [3]. Sehingga orang dari luar (tanpa otentikasi), jika ingin mendekripsi data, maka harus berhasil mendekripsi key pada service master, kemudian database master, lalu certificate, kemudian encryption key dari database yang tidak mungkin dipecahkan. Menerapkan TDE pada Database Untuk melakukan enkripsi pada database, langkah pertama yang harus dilakukan adalah membuat database master key, jika belum ditetapkan sebelumnya. Untuk membuatnya digunakan syntax CREATE MASTER KEY ENCRYPTION BY PASSWORD = <namaPasswordY4ngKuat> Sangat disarankan untuk menggunakan password yang kuat agar tidak mudah ditebak. Password yang digunakan harus sesuai dengan aturan yang ditetapkan pada password policy milik Windows pada setiap komputer. Kemudian, langkah kedua adalah membuat certificate untuk mengamankan DEK. Dalam satu server bisa dibuat banyak certificate. Satu certificate dapat digunakan pada beberapa database. Syntax untuk membuatnya adalah [4]: CREATE CERTIFICATE certificate_name WITH SUBJECT = ‘certificate subject name’ Untuk membuat certificate bisa menggunakan key yang sudah ada maupun bisa membuat baru. Syntax di atas merupakan contoh membuat certificate dengan key yang baru. Subject adalah nilai yang merujuk pada metadata dari certificate [4]. Yang ketiga adalah membuat database encryption key. Untuk bisa membuat DEK, certificate harus dibaut terlebih dahulu karena certificate akan digunakan untuk mengenkripsi. Contoh syntax untuk membuatnya adalah: CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE certificate_name; Algoritma yang digunakan tidak harus AES_256, bisa menggunakan algoritma lain yang didukung oleh SQL Server. Langkah terkhir untuk melakukan enkripsi adalah mengaktifkan enkripsi pada database. Ketiga key yang telah dibuat sebelumnya tidak akan berfungsi sebelum enkripsi pada database diaktifkan. Cara untuk mengaktifkannya adalah: ALTER DATABASE nama_database SET ENCRYPTION ON Yang Perlu Diingat Perlu diketahui bahwa pada database dengan enkripsi aktif, maka segala backup yang dilakukan pada database tersebut juga akan dienkripsi. Selain itu, enkripsi juga akan mengenkripsi data dan log-file milik database sehingga recovery database menggunakan log file juga tidak mungkin dilakukan tanpa menggunakan key. Oleh karena itu, ketika membuat key dan mengaktifkan enkripsi pada database, admin tidak boleh lupa key yang telah dibuatnya karena sama saja dengan kehilangan database. Oleh karena itu, sebaiknya admin melakukan backup terlebih dahulu sebelum mengaktifkan pada enkripsi pada database. Backup ini akan disimpan pada sebuah file pada media penyimpanan. Backup key ini harus di-restore terlebih ke database engine sebelum kita me-restore backup database yang ternkripsi. Syntax untuk melakukan backup adalah: Backup service master key: BACKUP SERVICE MASTER KEY TO FILE = 'G:\folder\service key.bak' ENCRYPTION BY PASSWORD = 'STRONGESTPASSWORD' Backup database master Key: BACKUP MASTER KEY TO FILE = 'G:\folder\Master_Key.bak' ENCRYPTION BY PASSWORD = 'DifferentPassword' Backup certificate: BACKUP CERTIFICATE certificate_name TO FILE = 'G:\folder\certificate_name.bak' Selain itu perlu diingat juga bahwa melakukan enkripsi pada database juga akan mengurangi kecepatan database untuk membaca maupun menuliskan data pada database. Data yang dikirim menggunakan FILESTREAM juga tidak akan dienkripsi. Database Compression Overview Semua data dapat dikompresi (diperkecil ukurannya). Begitu pula data yang ada pada database. Kompresi data adalah teknik - teknik yang dilakukan untuk memperkecil volume yang digunakan oleh data pada media penyimpanan tanpa merubah data tersebut. Data yang mengalami kompresi tetap bisa dimengerti oleh manusia, hanya saja ukurannya menjadi lebih kecil. Pada database, terdapat dua jenis kompresi, yaitu page compression (kompresi pada tabel) dan row compression (kompresei pada row). Keduanya memiliki perbedaan dari segi jangkauan kompresinya dan cara melakukukan kompresi pada data. Row Compression Row compression akan melakukan data pada setiap row di setiap kolom. Cara kompresinya adalah dengan mengubah storage format menjadi variable-length pada tipe data numeric dan tipe data dengan fixed-length serta mengurangi metadata ovehead yang terkait dengan record tersebut [5]. Contohnya pada tipe data char yang seharusnya memiliki fixed-lenght, maka jika dikompresi menggunakan row compression penyimpananya hanya akan menggunakan panjang yang dimiliki karekternya. Contohnya lagi pada tipe data float, maka kompresi tidak akan menyimpan angka terakhir dari float jika angka terseu adalah angka nol. Cara mengaktifkan row compression pada database dapat menggunakan dua cara. Cara yang pertama adalah dengan cara menambahkan atribut WITH COMPRESSION = ROW pada saat membuat tabel. Cara yang kedua adalah dengan cara melakukan alter tabel dengan syntax ALTER TABLE nama_tabel REBUILD PARTITION = ALL WITH (DATA COMPRESSION = ROW). Perintah alter table tersebut sebenarnya adalah untuk melakukan rebulid partition dengan menambahkan row compression pada pembentukan yang baru. Page Compression Page compression dalah compression dengan jangakauan kompresi yang lebih luas dari pada row compression. Page compression tidak hanya melakukan kompresi pada tingkat record tiap baris, tetapi juga melakukan kompresi pada penyimpanan tabel. Selain itu, pada saat melakukan page compression maka row compression juga pasti dijalankan. Sebenarnya ada tiga proses kompresi yang dilakukan ketika page compression aktif. Yang pertama adalah melakukan row compression, lalu prefix compression, dan yang terakhir adalah dictionary compression[6]. Prefix compression adalah proses kompresi data pada tabel dengan cara mengurangi redudansi data pada tabel. Prefix mengurangi redudansi data dengan cara mencari awalan dari setiap record yang memiliki persamaan. Setelah awalan tersebut disimpan, awalan pada setiap record yang sama dengan awalan tersebut akan dihapus dan diganti dengan cara mereferensikan record pada awalan. Setelah awalan pada setiap record terhapus pada prefix compression kemudian dictionary compression dijalankan. Dictironarry compression akan mencari record – record yang sama setelah awalanya terhapus pada saaat prefix compression. Setelah itu, record yang sama tersebut akan direferensikan oleh baris – baris lain yang menggunakannya. Contohnya jika ada record: Meja meja_makan meja_tamu meja_belajar Kursi kursi_makan kursi_tamu kursi_belajar Maka ketika dilakukan prefix compression akan dibuat satu recor yang berisi meja_ dan kursi_ menghapus record lain yang mengandung data tersebut. Sehingga semua record menjadi: Meja meja_ makan tamu belajar Kursi kursi_ makan tamu belajar Ketika akan dibaca, record yang dipotong akan direferensikan ke baris pertama. Kemudian, dengan menggunakan dictionarry compression maka kata – kata yang sama pada tabel tersebut akan dijadikan satu sehingga tabel menjadi seperti berikut: Meja meja_ makan tamu belajar Kursi kursi_ 0 0 0 Record yang dihapus akan direferensikan ke record dengan data yang sama. Cara mengaktifkan page compression pada tabel sama seperti cara mengaktifkan row compression, hanya mengganti jenis compression-nya menjadi page. Contohnya adalah ALTER TABLE nama_tabel REBUILD PARTITION = ALL WITH (DATA COMPRESSION = PAGE). Yang Perlu Diperhatikan Melakukan compression pada tabel juga akan memperlambat kerja dari database engine. Hal tersebut disebabkan karena untuk menghasilkan data yang sama maka database engine harus menyusun kembali data yang telah dikompresi (bisa dilogika dari algoritma page compression). Kompresi ini tidak berlaku pada backup dan restore. Sehingga volume backup dari database yang dikompresi akan lebih besar dari pada database yang dikompresi. Begitu juga saat restore, maka database tidak akan terkompresi. Server And Database Options Overview Database engine SQL Server dirancang untuk dapat bekerja di segala lingkungan kerja. Oleh karena itu, untuk agar SQL Server bisa disesuaikan dengan lingkungan kerjanya, maka disediakan berbagai options yang bisa diatur sendiri oleh admin database. Options pada SQL Server bisa dilakukan pada tingkat server maupun pada itngkat database. Options pada tingkat server akan mengatur perilaku server atau instace atau service. Sedangkan options pada database akan mengatur perilaku dari database. Server Options Server options akan mengatur perilaku dari server. Sebenarnya semua options pada server dapat diubah, tetapi tidak semua options tersebut diperlihatkan oleh SQL Server dan tidak semuanya dapat diubah dengan mudah. Ada 17 opsi yang dapat diubah dengan mudah dari total 69 opsi yang bisa diubah. Untuk mengatur basic options admin dapat mengaturnya melalui user interface yang telah disediakan oleh SQL Server Management Studio dengan cara membuka properties dari server kemudain pilih tab advance. Meskipun options yang ada pada GUI ini adalah opsi dasar, tetapi tetap saja opsi – opsi tersebut bisa mempengaruhi performa. Seperti contohnya saya sendiri yang secara tidak sengaja merubah opsi pada server melalui GUI kemudian entah kenapa database engine saya tidak bisa mengekseskusi query untuk merubah options pada database. Untuk mengubah opsi yang lebih advance, diperlukan cara yang lebih advance dan administrator yang lebih ahli. Hal ini dikarenakan opsi yang lebih advance dapat menentukan keseluruhan proses kerja dari SQL Server. Salah satu contoh advance options yang ada adalah RECOVERY INTERVAL yang mengatur selang waktu recovery yang harus dilakukan database engine dalam satuan menit. Untuk mengubah advance options, maka kita harus mengakitfkan Advance Options dengan query sp_configure ‘show advance RECONFIGURE. Setelah mengaktifkan advance options, barulah kita bisa advance options pada server. Ada banyak pilihan advance options, menggunakan perintah RECONFIGURE. dulu Show option’,1 mengubah semuanya Database Options Berbeda dengan server options, database options hanya akan mengatur perilaku dari database. Pada database ini tidak ada opsi yang disembunyikan. Semua opsi dapat diubah dengan mudah baik menggunakan GUI maupun menggunakan query. Untuk mengubah opsi menggunakan GUI caranya sangat mudah, tinggal membuka properties dari salah satu database, kemudian buka tab options, disana akan banyak opsi yang bisa diubah. Opsi yang lebih banyak bisa diakses menggunakan query. Query yang digunakan untuk mengatur options pada database adalah ALTER DATABASE dengan atribut SET. Ada banyak kategori pilihan opsi pada SET, beberapa diantaranya adalh auto option, access options (single user, restricted user, multi user) dan state options (Online, Offline, Emergency). Contoh query untuk mengubah database menjadi offline adalah: ALTER DATABASE Db_name SET OFFLINE Affinition and Paralellism Affinition SQL Server berjalan di atas sistem operasi windows yang mengoperasikan hardware – hardware yang ada di dalam komputer untuk melakukan tugas tertentu. Di dalam dunia software, hardware yang dimiliki komputer ini disebut sumber daya atau resources. Affinition adalah kemampuan untuk menentukan berapa resource pada komputer yang akan digunakan untuk menyelesaikan tugas terntentu. Software yang berjalan pada sebuah sistem operasi komputer tidak hanya satu, melainkan ada banyak software terkadang bekerja bersama. Oleh karena itu, resource yang ada di komputer harus dibagi ke semua software tersebut diantaranya adalah SQL Server. SQL Server membutuhkan resouce untuk melakukan pekerjaannya. Windows akan melakukan scheduling dan melakukan pembagian resource untuk thread SQL Server, inilah yang disebut Apartement Threading. Affinity sendiri memiliki dua jenis, yaitu CPU Affinity dan IO Affinity. CPU Affinity terkait dengan pembagian resource CPU kepada SQL Server. Sedangkan IO Affinition adalah terkait proses read/write yang akan dilakukan oleh CPU ke main memorry. SQL Server bisa memilih CPU mana yang akan digunakan untuk menyelesaikan tugasnya. Namun sekali lagi, Windows-lah yang berhak menentukan kapan SQL Server bisa memakai resource tersebut. Paralellism Paralellisem sebenarnya ada kaitannya dengan Affinition. Paralellism adalah kemampuan SQL Server untuk menggunakan lebih dari satu CPU untuk menyelsaikan satu tugas. Kemampuan ini hanya berfungsi jika SQL Server berjalan pada komputer yang memiliki lebih dari satu cpu atau cpu core. Secara default, SQL Server akan menyeting dirinya untuk bisa menggunakan semua resource yang tersedia pada komputer [7]. Berapapun CPU dan main memorry yang ada akan digunakan dengan maksimal oleh SQL Server. Dengan begitu, proses query yang dilakukan pada SQL Server dapat diekseskusi dengan lebih cepat. Tetapi masalahnya adalah ketika komputer tersebut tidak hanya digunakan untuk menjalankan SQL Server, maka aplikasi yang lain akan dikorbankan. Oleh karena itu, kita bisa merubah setting pada SQL Server untuk merubah CPU mana saja yang akan digunakan untuk melakukan prosess. Selain itu kita juga bisa mengatur MAXDOP (Maximum Degree Of Paralellism). MAXDOP adalah setting yang mengatur seberapa banyak CPU yang bisa digunakan oleh SQL Server. Dengan menggunakan MAXDOP ini, kita bisa mengatur berapa resource maksimal yang bisa digunakan oleh SQL Server. Pengaturan MAXDOP ini bisa diatur pada tingkat server dan query. Pada tingkat service berarti kita mengatur default MAXDOP pada semua query yang akan dijalankan. Tetapi, jika kita merasa query tersebut butuh resource yang lebih banyak atau jika kita ingin mempercepat proses lain dengan mengurangi paralellism pada query tersebut, kita juga bisa mengatur MAXDOP pada setiap query yang akan diekseskusi. Pengaturan MAXDOP pada tingkat query akan meng-override pengaturan MAXDOP pada tingkat server. Untuk mengatur MAXDOP bisa menggunakan GUI yaitu pada propertise milik database engine dan pilih tab processor. Diana bisa memilih CPU mana yang akan digunakan dan berapa MAXDOP yang diterapkan. Selain meggunakan GUI bisa menggunakan query SP_CONFIGURE pada RECONFIGURE. Contoh query untuk mengatur MAXDOP pada SQL Server menjadi 4 adalah: SP_CONFIGURE ‘Max Degree Of Paralellism’, 4 RECONFIGURE WITH OVERRIDE. Secara default, angka MAXDOP adalah 0 menggunakan semua resource yang tersedia. yang berarti SQL Server bisa Automation: SQL Agent Jobs and Alerts Pada SQL Server terdapat sebuah fitur yang sangat berguna, yaitu automation. Fitur Automation adalah fitur yang memunkinkan SQL Server untuk melakukan perkerjaan secara otomatis pada saat – saat tertentu sesuai aturan yang telah dibuat. Bagian dalam SQL Server yang bertugas untuk melakukan automation adalah Agent Jobs. Agent Job Agent jobs bertugas untuk mengeksekusi suatu perintah otomatis yang dibuat oleh admin [8]. Perintah yang akan dijalankan secara otomatis oleh Agent Jobs tersebut disebut JOB. JOB merupakan sebuah pekerjaan yang akan dikerjakan secara otomatis baik itu pekerjaan yang akan bekerja secara sementara (ad-hoc), sesuai jadwal (on schedule), atau sesuai kebutuhan (on-demand). Setiap job akan memiliki satu atau beberapa rangkaian pekerjaan (job-step) yang harus dilakukan untuk menyelesaikan job tersebut. Setiap job-step akan menjalankan satu job-subsystem. Keamanan untuk setiap step pada setiap job berbeda beda. Tergantung dimana job step tersebut dikerjakan. Job yang dibuat untuk sysadmin tentunya akan berbeda keamanannya dengan job yang dibuat untuk non-sysadmin. Membuat Automation Untuk membuat automation, yang pertama dibuat orang yang memiliki kepentingan terhadap hasil akan dianggap sebagai orang yang menjalankan entah itu gagal atau sukes akan diberitahuan operator. adalah operator. Operator adalah pekerjaan sebuah job. Operator sebuah job. Hasil akhir dari job, kepada operator melalui email Setelah membuat operator, maka kita harus masukkan job-step. Setiap job dapat memiliki akan mengeksekusi perintah. Kita juga dapat job-step selesai, entah pada kondisi sukses dapat diatur schedulnya. membuat job. Pada job ini harus kita beberapa job step dan setiap job step memilih apa yang akan dialkukan jika ataupun gagal. Pada setiap job juga Agent Alrets Agent alrets adalah sautu agen yang dimiliki oleh SQL Server yang berfungsi untuk melaporkan suatu kondisi atau event. Seperti contohnya laporan sukses atau gagal pada sebuah job. Ada tiga tipe event utama yang ditangani oleh Alrets, yaitu SQL Server Event, SQL Server Performance Conditions, dan WMI (Windows Management Instrument) Event. SQL Server Event adalah jenis event yang dilakukan oleh SQL Server yang sudah diatur oleh admin. Sedangkan SQL Server Performance Event adalah event yang terjadi berdasarkan performa yang diraih oleh SQL Server. Kemudia WMI Event adalah suatu event dari SQL Server yang dimonitor oleh WMI [9]. Database Mail Pada SQL Server terdapat fitur pengiriman email langsung dari database engine ke alamat email tertentu. Untuk mengirim email ini dibutuhkan SMTP Server yang akan digunakan untuk mengrimkan email. Isi dari email yang dikirimkan bisa bermacam – macam. Bisa berupa notification biasa atau bisa juga hasil query dari database. Email akan dikirim menggunakan account milik database yang telah ditentukan sebelumnya. Email juga bisa dikirimkan melalui prosedur automation seperti yang telah di jelaskan pada bab sebelumnya. Implementasi Database Mail Untuk mengaktifkan fitur ini,maka pengartruan server untuk mengirim database harus diaktifkan dulu. Cara mengaktifkannya adalah menggunakan sp_configure dengan perintah Database Mail XPs. Selain itu, untuk bisa mengirim email maka admin harus membuat email account untuk database terelbih dahulu. Account ini lah yang akan menyimpan informasi tentang SMPT account [10]. Cara membuatnya adalah menggunakan query msdb.dbo.sysmail_add_account_sp. Contoh query untuk melakukannya adalah: EXECUTE msdb.dbo.sysmail_add_account_sp @account_name = 'MyStore_db Admin’, @description = 'Mail account for store customer e-mail.', @email_address = '[email protected]', @display_name = 'MyStore Mailer', @mailserver_name = 'smtp.gmail.com' ; Yang perlu diperhatikan untuk add account adalah apakah alamat email dan SMTP servernya sudah benar. Kemudian, untuk mengirimkan email, kita gunakan msdb.dbo.sp_send_dbmail. Contoh query untuk mengirim email adalah: perintah EXEC msdb.dbo.sp_send_dbmail @profile_name = 'MyStore Admin’, @recipients = '[email protected]', @query = 'SELECT * FROM Store_db.Cust_order WHERE cust_id = 5212100064, @body = ‘This is your order list’ @subject = 'Customer Order List', @attach_query_result_as_file = 1; Pada query di atas, kita bisa menambahkan hasil query sebagai attachment. Kita harus memperhatikan apakah alamat email yang dikirim benar. Isi dari email bisa dimasukkan pada body. Database mail history Kita juga harus mengelola history dari database mail agar tidak memakan banyak space pada media penyimpanan. Untuk menghapusnya digunakan perintah dbo.sysmail.delete_mailitems_sp untuk menghapus email database yang disimpan pada tabel database mail. Dan menggunakan perintah dbo.sysmai.delete_log_sp untuk menghapus log event yang dihasilkan oleh database mail. Kita bisa menghapus semua email atau log yang ada atau kita juga bisa menghapus email – email tertentu saja. Misalkan kita hanya akan menghapsu email yang dikirim sebelum bulan ini atau menghapsu semua email yang gagal dikirim. Untuk memilih berdasarkan waktu kita menggunkan atribut @logged_before. Untuk memilih berdasrkan event kita menggunakan atribut @event_type. Contoh query untuk menghapus email dan log adalah sebagai berikut: EXEC msdb.dbo.sysmail_delete_log_sp @logged_before = 'January 1, 2015'; EXEC msdb.dbo.sysmail_delete_mailitems_sp @sent_status = 'failed'; References [1] Database Journal, “Transparent Data Encryption,” 19 May 2014. [Online]. Available: http://www.databasejournal.com/features/mssql/transparent-dataencryption-tde-in-sql-server.html. [2] Micrsoft Developer Network, “Transparent Data Encryption,” [Online]. Available: https://msdn.microsoft.com/en-us/library/bb934049.aspx. [3] Microsoft Developer Network, “Create Database Encryption Key,” [Online]. Available: https://msdn.microsoft.com/en-us/library/bb677241.aspx. [4] Microsoft Developer Network, “Create Certificate,” [Online]. https://msdn.microsoft.com/en-us/library/ms187798.aspx. Available: [5] Microsoft Developer Network, “Row Compression Imprlementation,” [Online]. Available: https://msdn.microsoft.com/en-us/library/cc280576.aspx. [6] Microsoft Developer Network, “Page Compression Implementation,” [Online]. Available: https://msdn.microsoft.com/en-us/library/cc280464.aspx. [7] Microsoft TechNet - SQL Server , “Max Degree Of Paralellism Option,” [Online]. Available: https://technet.microsoft.com/enus/library/ms181007%28v=sql.105%29.aspx. [8] Microsoft Developer Network, “SQL Server Agent,” https://msdn.microsoft.com/en-us/library/ms189237.aspx. [Online]. [9] Microsoft Developer Network, “Alrets,” [Online]. https://msdn.microsoft.com/en-us/library/ms180982.aspx. Available: Available: [10 Microsoft Developer Network, “sysmail_add_account_sp (Transact-SQL),” ] [Online]. Available: https://msdn.microsoft.com/en-us/library/ms182804.aspx.