Saya sesekali memindahkan database (SQL Express 2012) dari mesin pengembangan ke server, atau sebaliknya, menggunakan cadangan dan pemulihan database di SQL Server Management Studio.
Setiap kali saya melakukan ini, aplikasi pada mesin target tidak dapat mengakses database sampai saya menghapus pengguna yang mereka gunakan, "george", dari pengguna database (Database, Keamanan, Pengguna di SQL Server Management Studio), dan menambahkan kembali sebagai pemilik di bawah Keamanan, Login, george / properti, pemetaan pengguna.
Apakah ada cara yang lebih baik untuk melakukan ini? Tampaknya agak berbelit-belit.
sql-server
backup
xpda
sumber
sumber
CREATE LOGIN
pernyataan.Jawaban:
Ini adalah perbedaan antara login dan pengguna dan bagaimana mereka saling berhubungan:
Apa yang biasanya terjadi dengan login terotentikasi SQL dan pengguna database pada pengembalian adalah bahwa SIDS akan tidak sinkron, sehingga memutuskan hubungan. Hubungan ini harus diperbaiki sebelum Anda dapat terhubung ke database menggunakan login itu, karena di mata SQL Server prinsipal tersebut tidak lagi terhubung. Anda dapat memperbaikinya dengan SQL berikut:
Anda dapat menggunakan kueri berikut dalam konteks basis data Anda untuk memeriksa anak yatim:
sumber
Anda bisa melihat mengubah database menjadi database yang terkandung . Pengguna basis data yang terkandung diautentikasi oleh basis data, bukan pada tingkat contoh melalui login. Itu membuat memindahkan database ke instance yang berbeda lebih sederhana.
Jika tidak, Anda dapat membuat cadangan informasi login menggunakan skrip sp_help_revlogin yang disediakan di KB dukungan Microsoft ini . Dan jalankan script output pada instance baru.
sumber
Saya menggunakan skrip di bawah ini untuk melakukan migrasi / membuat akun dan login pengguna. Jalankan dari Server tempat Anda mengembalikan database dan berikan nama Server asli sebagai parameter pada prosedur.
Saya tidak mengambil kredit untuk prosedur ini karena saya mendapatkannya dari tempat lain tetapi berfungsi dengan baik.
sumber
Inilah solusi yang berhasil untuk saya. Apa yang dilakukannya adalah:
EXEC sp_change_users_login 'REPORT'
EXEC sp_change_users_login 'UPDATE_ONE','<userName>','<userName>'
sumber
Anda selalu bisa mencoba untuk menautkan kembali semua pengguna dalam database ke login dengan nama yang sama di server database.
sumber
Saya pikir perlu dicatat perbaikan sederhana ini untuk masalah poster. Ini adalah skrip yang saya jalankan di SQL Server 2008 ketika saya mengembalikan database produksi dari satu server ke pengembangan / pengujian database di server lain KAPAN nama Pengguna di Keamanan> Pengguna dari database TETAPI yang
'login name'
hilang dari properti pengguna di Tab umum:Referensi MSDN di sini Perhatikan bahwa artikel ini merekomendasikan penggunaan ALTER USER untuk versi SQL yang lebih baru.
sumber