03 April 2009

Mengganti Authentication Mode pada SQL Server dari Skrip SQL

Buat komputer lokal bisa set Authentication Mode dengan akses registry dari Delphi, terus gimana kalo akses dari komputer lain? Salah satu cara adalah dengan menggunakan extended stored procedure. Extended stored procedure yang diperlukan adalah xp_regread dan xp_regwrite yang tidak didokumentasikan tapi ada pada database master. Langkahnya sama dengan posting sebelumnya. Berikut ini adalah stored procedure untuk membaca dan mengganti nilai dari registry. Stored procedure dengan nama uspSetSQLServerAuthMode mempunyai satu parameter tipe integer. Jika parameter tersebut diisi 1 maka modenya adalah SQL Server and Windows Authentication mode, selain nilai 1 modenya adalah Windows Authentication mode.
CREATE PROCEDURE uspSetSQLServerAuthMode(@MixedMode INT)
AS
BEGIN
  DECLARE @InstanceName VARCHAR(100)
  DECLARE @Key VARCHAR(150)
  DECLARE @LoginMode INT

  EXEC master..xp_regread 'HKEY_LOCAL_MACHINE',
    'Software\Microsoft\Microsoft SQL Server\Instance Names\SQL\',
    'MSSQLSERVER', @InstanceName OUTPUT
  SET @Key = 'Software\Microsoft\Microsoft SQL Server\' + @InstanceName + '\MSSQLServer\'
  IF @MixedMode = 1
    SET @LoginMode = 2
  ELSE
    SET @LoginMode = 1
  EXEC master..xp_regwrite 'HKEY_LOCAL_MACHINE', @Key,
    'LoginMode', 'REG_DWORD', @LoginMode
END

Tidak ada komentar:

Posting Komentar