Saya ingin mencoba fitur pengguna basis data yang terkandung di Azure SQL Database V12, tapi saya mengalami masalah otentikasi yang terasa aneh bagi saya.
Saya membuat basis data bernama Classifier
. Saya menambahkan IP saya ke aturan firewall sehingga saya bisa terhubung ke server Azure db dari SSMS di workstation saya. Setelah saya dapat terhubung melalui SSMS untuk administrasi, saya mencoba menambahkan pengguna dengan kata sandi ke database, seperti ini:
CREATE USER classifier WITH PASSWORD='thepassword'
Saya juga menambahkan pengguna ini ke peran penulis data dan pembaca:
exec sp_addrolemember 'db_datawriter', 'classifier'
exec sp_addrolemember 'db_datareader', 'classifier'
Setelah ini, saya dapat terhubung ke database dengan kredensial ini dari SSMS:
Tapi di sinilah semuanya serba salah: Saya sudah mencoba beberapa mantra koneksi string yang berbeda dan sepertinya tidak bisa terhubung dalam aplikasi web yang sedang saya kerjakan. Itu tidak berfungsi di lingkungan Azure, jadi saya berjalan di localhost dengan string koneksi ke database Azure, dan itu tidak akan terhubung. Inilah string koneksi yang saya gunakan saat ini:
<add name="Classifier" connectionString="Data Source=xxxxxxx.database.secure.windows.net;Initial Catalog=Classifier;User ID=classifier;Password=xxxxxxxxxxxxx;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" providerName="System.Data.SqlClient"/>
Saya sudah mencoba mengatur ulang kata sandi (melalui SSMS) untuk pengguna dan kemudian memperbarui string koneksi; Saya juga memeriksa ulang kata sandi dengan menyalinnya langsung dari string koneksi ini dan ke dialog connect di SSMS untuk memastikan saya tidak memiliki kesalahan ketik di sana.
Saya mengaktifkan audit di server Azure db dengan harapan mendapatkan beberapa detail mengapa gagal, tetapi yang saya dapatkan adalah ini:
Dan di sinilah aku terjebak. Sebagian besar dari apa yang saya dapat temukan melalui dokumentasi atau blog menunjukkan bahwa hal yang harus dilakukan adalah melihat log SQL Server untuk melihat apa status kesalahan sebenarnya yang akan menunjukkan secara lebih sempit sifat kegagalan, tetapi karena saya Saya berurusan dengan Azure tidak ada cara untuk melakukan itu (sejauh yang saya tahu).
Apa yang bisa menyebabkan aplikasi gagal di mana SSMS (dan LinqPad dan Visual Studio Server Explorer, kebetulan) berhasil?
sumber
Cannot find the user 'myuser', because it does not exist or you do not have permission.
meskipun nama pengguna ada di bawah Keamanan> Masuk tetapi tidak MyDatabse> Keamanan> Pengguna. Saya mencobaCREATE USER [myuser] FOR LOGIN [myuser] WITH DEFAULT_SCHEMA=[mydb] GO
tetapi mendapat kesalahanThe login already has an account under a different user name.
Saat mengalihkan API kami untuk terhubung ke basis data Azure melalui pengguna baru yang terkandung, kami harus mengubah string koneksi kami untuk menyertakan:
Meskipun saya tidak mengerti mengapa perubahan ini diperlukan, saya ingin memposting di sini jika itu membantu orang lain di masa depan.
Kami awalnya datang untuk mencoba ini dari pertanyaan ini .
sumber
Masalah saya berbeda, tetapi terkait: Saya mencoba menyambungkan ke database Azure SQL dengan menggunakan SQL Server Management Studio (SSMS) dengan pengguna yang ada . Saya menerima pesan "Login gagal untuk pengguna" di SSMS.
Solusi: dalam opsi koneksi SSMS untuk jendela kueri, saya telah menetapkan "Sambungkan ke Database" ke nama database yang saya coba sambungkan.
Penjelasan: Di belakang, alasannya jelas: pengguna yang terkandung hanya diizinkan untuk terhubung ke database tempat mereka dibuat.
sumber
Ini dapat terjadi jika menjalankan perintah Powershell yang berisi string koneksi ketika kata sandi Anda berisi
$
. Anda dapat menyiasatinya dengan melampirkan string koneksi dengan tanda kutip tunggal - atau dengan tidak menyimpan kata sandi Anda dalam string koneksi terlebih dahulu ;-)Misalnya. Saya mengalami ini dengan
Scaffold-DbContext
perintahhttps://github.com/aspnet/EntityFrameworkCore/issues/6624
sumber