02 Mei 2009

Mengaktifkan Protokol TCP/IP dan Named Pipes pada SQL Server 2008

Instalasi SQL Server 2008 melalui GUI secara default tidak akan mengaktifkan protokol TCP/IP dan Named Pipes, hanya protokol Shared Memory yang aktif. Supaya dapat mengakses SQL Server secara remote, salah satu dari dua protokol tersebut harus diaktifkan. Kita bisa mengaktifkan dua protokol tersebut melalui tool SQL Server Configuration Manager dan mengaktifkan protokol tersebut secara manual. Tapi bukan itu yang dimaksud disini. Kita akan mengaktifkan protokol tersebut dengan memakai Windows PowerShell.
Ide ini diilhami dari cerita sederhana, mengenai user yang agak “rewel”. User tersebut tidak mau dipusingkan dengan banyak setting yang kadang memang membingungkan bagi banyak orang awam. Daripada mengharuskan user untuk melakukan setting tersebut, kita sendiri yang melakukan hal tersebut dengan bantuan Windows PowerShell. Sehingga user merasa diberikan kemudahan dalam pemakaian aplikasi yang kita kembangkan, apalagi dengan instalasi SQL Server 2008 yang begitu ruwet.
Setelah instalasi SQL Server 2008 berhasil, kita akan mendapatkan sebuah tool dengan nama “sqlps.exe” pada direktori instalasi SQL Server. Kita bisa mengakses tool ini dari direktori manapun, karena path yang sudah ditambahkan ke variabel environment. Tool ini akan kita perlukan untuk menjalankan file skrip yang akan kita buat. Tool ini sama dengan Windows PowerShell dengan tambahan cmdlet yang di load dan di register dari SQL Server.
Yang kita butuhkan adalah file skrip yang berisi kumpulan perintah untuk mengaktifkan protokol TCP/IP dan Named Pipes. Skrip ini dibuat dengan asumsi nama instance SQL Server adalah MSSQLSERVER. Berikut adalah isi dari file skrip “skrip.ps1”.
$smo = 'Microsoft.SqlServer.Management.Smo.'
$wmi = new-object ($smo + 'Wmi.ManagedComputer').

# List the object properties, including the instance names.
$wmi

# Enable the TCP protocol on the default instance.
$uri = "ManagedComputer[@Name='" + (get-item env:\computername).Value + "']/ServerInstance[@Name='MSSQLSERVER']/ServerProtocol[@Name='Tcp']"
$Tcp = $wmi.GetSmoObject($uri)
$Tcp.IsEnabled = $true
$Tcp.Alter()
$Tcp

# Enable the named pipes protocol for the default instance.
$uri = "ManagedComputer[@Name='" + (get-item env:\computername).Value + "']/ServerInstance[@Name='MSSQLSERVER']/ServerProtocol[@Name='Np']"
$Np = $wmi.GetSmoObject($uri)
$Np.IsEnabled = $true
$Np.Alter()
$Np


Sebelum menjalankan file skrip ini, kita perlu tahu bahwa secara default kita tidak dapat menjalankan file skrip. Ada sebuah istilah yang dinamakan ExecutionPolicy yang mengatur eksekusi skrip. Secara default nilainya adalah Restricted, yang perlu kita ubah ke RemoteSigned.
sqlps.exe -Command “Set-ExecutionPolicy RemoteSigned”
Kemudian file skrip dapat dijalankan dengan perintah seperti ini.
sqlps.exe -Command “C:\skrip.ps1”

Tidak ada komentar:

Posting Komentar