Migrasi Server Databse : Men-capture Userid dan Password
Suatu server yang digunakan sebagai Server Database tentu tidak selamanya akan dipakai secara terus menerus. Ada saatnya server tersebut akan diupgrade/diganti dengan server lain yang lebih canggih dan mempunyai kemampuan yang lebih baik. Umumnya administrator akan kesulitan untuk memindahkan user yang sudah cukup banyak dan digunakan untuk akses melalui aplikasi yang sedang berjalan.
Dari server yang saat ini operasional biasanya sudah berisi banyak data dan usernya digunakan (user untuk aplikasi (naive) maupun user yang sophisticated) .
Untuk perpindahan data (database) biasanya tidak mengalami kendala yang berarti dalam proses migrasi. Data lama di backup selanjutnya di restore di tempat yang baru. Maka data tersebut akan persis sama dengan data yang lama.
Permasalahan akan muncul terkait dengan userID /Login Name yang sudah ada di dalam security database. Apalagi database yang beroperasi mempunyai banyak user puluhan/ratusan, maka tidak mungkin akan meng-create satu persatu user dengan memasukkan kembali username dan passwordnya termasuk di dalamnya Role terkait dengan username tersebut.
Nah berikut ini langkah-langkah yang bisa dilakukan untuk melakukan migrasi user dari satu DB Server ke server yang lainnya.Langkah ini hanya digunakan untuk migrasi DBMS MS-SQL Server.
Langkah-langkahnya :
- Restore database ke tempat (server) baru
- Ambil nama-nama user (login name) dengan Script berikut ini. Script di bawah di-execute di database “Master” dan hasil Executenya di simpan dalam file text (misalnya text1) (akan berisi login name, password dari database terkait)
SET NOCOUNT ON SELECT ‘EXEC sp_addlogin @loginame = ”’ + loginname + ””
,’, @defdb = ”’ + dbname + ””
,’, @deflanguage = ”’ + language + ””
,’, @encryptopt = ”skip_encryption”’
,’, @passwd =’
, cast(password AS varbinary(256))
,’, @sid =’ , sid
FROM syslogins
WHERE name NOT IN (‘sa’)
AND isntname = 0 - Selanjutnya jalankan Scrip di bawah ini untuk sinkronisasi role dari login name di database asal, yang akan disinkronisasikan di database baru hasil restore. Jalankan Script ini di database “Master” dari server lama, dan hasilnya di simpan dalam file text (misalnya text 2)
SELECT ‘EXEC sp_grantlogin @loginame = ”’ + loginname + ””
,’ EXEC sp_defaultdb @loginame = ”’ + loginname + ””
,’, @defdb = ”’ + dbname + ””
FROM syslogins
WHERE loginname NOT IN (‘BUILTINAdministrators’)
– AND isntname = 1 - Setelah semua database berhasil di restore di server baru, maka jalankan Script hasil generate login name (Text1) di atas di database yang baru. Proses ini akan menggenerate login name di server baru sesuai dengan login name di server lama. Akan digenerate login name dan passwordnya