Masalahnya adalah bahwa mengembalikan membawa kembali pengguna db dari contoh server asli tetapi contoh baru biasanya tidak tahu apa-apa tentang login pengguna tersebut. Anda akan melihat mereka di bawah Keamanan di tingkat db, tetapi mereka tidak memiliki login tingkat server yang sesuai.
Anda harus memasang kembali pengguna database dengan login server pada contoh di mana Anda memulihkan database.
Ada beberapa cara untuk melakukannya:
Buat login baru untuk mereka di instance baru. Anda kemudian harus menghapus mereka sebagai pengguna database pada instance baru dan menambahkan login baru mereka. Ini tampak aneh mengingat bahwa Anda dapat membuat nama login yang sama, tetapi SID (pengidentifikasi keamanan) akan berbeda dan itulah yang digunakan SQL untuk identifikasi pengguna. Ini cukup mudah untuk satu atau dua login.
Jika Anda ingin mempertahankan pengguna yang sama, menjaga SID yang sama, di seluruh instance kemudian gunakan prosedur tersimpan sp_help_revlogin . Salin kode dari tautan yang akan membuat prosedur tersimpan yang diperlukan dan jalankan di server tempat Anda ingin menyalin pengguna. Ini akan menghasilkan skrip SQL yang dapat Anda jalankan di server target Anda untuk membuat pengguna yang sama membawa SID, kata sandi, semuanya. Ini adalah cara yang harus ditempuh jika Anda memiliki banyak pengguna basis data yang perlu Anda sambungkan kembali pada instance target atau jika Anda tidak tahu kata sandi untuk satu atau lebih SQL Login pada instance sumber.
EXEC sp_change_users_login 'Auto_Fix', 'User', NULL, 'password';
sebagai gantinya. :)Inilah yang saya temukan.
Seperti squillman yang dikeluarkan, para pengguna dapat disalin dengan database, tetapi login tidak. Ada procdure toko bernama sp_change_users_login yang dapat Anda gunakan untuk menyelesaikan masalah. Langkah-langkah untuk melakukannya dirinci dalam aritcle ini . Rincian penggunaan procdure toko dapat ditemukan di halaman ini .
sumber
Pada SQL Server 2012, ada perintah T-SQL untuk menetapkan pengguna yang sudah ada ke login baru. Buat login, tetapi jangan mencoba melakukan Pemetaan Pengguna (itu akan gagal). Kemudian jalankan:
Ini akan memetakan login yang ada ke pengguna baru. Dokumentasi SQL di sini: https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-user-transact-sql?view=sql-server-2017
sumber