02 April 2009

Mengganti Authentication Mode pada SQL Server dari Program

Trik berikut bisa dilakukan pada SQL Server 2008 dan mungkin juga SQL Server 2005, tapi tidak pada SQL Server 2000. Kita tahu pada SQL Server terdapat dua mode untuk otentikasi, yaitu Windows Authentication dan SQL Server Authentication. Jika kita klik kanan pada SQL Server Management Studio kemudian pilih Properties dan pada bagian Security kita bisa melihat ada pilihan Server Authentication. Ada dua pilihan, Windows Authentication mode atau SQL Server and Windows Authentication mode. Dari sini jelas bahwa jika kita pilih Windows Authentication mode, maka kita hanya bisa login dengan mode Windows Authentication saja. Jika kita pilih SQL Server and Windows Authentication mode, kita bisa memilih salah satu dari mode login tersebut.
Mungkin masih banyak dari kita yang memilih menggunakan SQL Server Authentication untuk koneksi ke SQL Server. Masalah timbul jika kita mengembangkan aplikasi dengan SQL Server dan memakai SQL Server Authentication, sedangkan instalasi SQL Server secara default pilihannya hanya Windows Authentication mode. Kita juga tidak mau merepotkan user dengan meminta user untuk mengubah mode tersebut secara manual. Bisa-bisa nanti user ngomel atau malah tidak mau menggunakan program kita. Apalagi jika pada komputer target/server hanya menggunakan Windows Authentication mode dan tidak ada SQL Server management studio.
Permasalahan ini bisa diatasi dengan menggantinya melalui program. Hal pertama yang perlu kita ketahui adalah apa yang perlu kita ubah, dan jawabannya adalah registry. Jika kita membuka registry (menu Start->Run, ketikkan “regedit”) pada HKEY_LOCAL_MACHINE terdapat key SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL. Didalam sini terdapat daftar nama instance yang ada pada komputer dengan key value-nya, dan isi dari key value ini yang kita butuhkan. Misal nama instance yang mau diganti modenya adalah “MSSQLSERVER”, dan key value-nya berisi “MSSQL10.MSSQLSERVER”. Pada key SOFTWARE\Microsoft\Microsoft SQL Server terdapat harusnya terdapat subkey dengan nama “MSSQL10.MSSQLSERVER” dan pada subkey tersebut terdapat lagi subkey “MSSQLServer”, jadi lengkapnya adalah SOFTWARE\Microsoft\Microsoft SQL\MSSQL10.MSSQLSERVER\MSSQLServer. Didalam key ini terdapat key dengan nama “LoginMode” dan inilah yang perlu kita ganti isinya. Set 1 untuk Windows Authentication mode atau 2 untuk SQL Server and Windows Authentication mode.

uses Windows, Registry;

procedure SetSQLServerAuthMode(aMixedMode: Boolean);
var
  reg: TRegistry;
  s: string;
begin
  reg := TRegistry.Create;
  try
    reg.RootKey := HKEY_LOCAL_MACHINE;
    reg.OpenKey('SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL', False);
    s := reg.ReadString('MSSQLServer');
    reg.CloseKey;
    reg.OpenKey('SOFTWARE\Microsoft\Microsoft SQL Server\' + s + '\MSSQLServer', False);
    if aMixedMode then reg.WriteInteger('LoginMode', 2)
    else reg.WriteInteger('LoginMode', 1);
    reg.CloseKey;
  finally
    reg.Free;
  end;
end;

Tidak ada komentar:

Posting Komentar