Saya telah membuat layanan web yang menyimpan beberapa data ke db. Tapi saya mendapatkan kesalahan ini:
Tidak dapat membuka database "test" yang diminta oleh login. Login gagal. Login gagal untuk pengguna 'xyz \ ASPNET'.
String koneksi saya adalah
Data Source=.\SQLExpress;Initial Catalog=IFItest;Integrated Security=True
c#
asp.net
sql-server
iis
web-services
coure2011
sumber
sumber
Jawaban:
Nah, kesalahannya cukup jelas, bukan? Anda mencoba menyambung ke SQL Server dengan pengguna "xyz / ASPNET" - itulah akun yang menjalankan aplikasi ASP.NET Anda.
Akun ini tidak diizinkan untuk menyambung ke SQL Server - buat login di SQL Server untuk akun tersebut, atau kemudian tentukan akun SQL Server valid lainnya di string koneksi Anda.
Dapatkah Anda menunjukkan kepada kami string koneksi Anda (dengan memperbarui pertanyaan asli Anda)?
UPDATE: Oke, Anda menggunakan otentikasi Windows terintegrasi -> Anda perlu membuat login SQL Server untuk "xyz \ ASPNET" di SQL Server Anda - atau ubah string koneksi Anda menjadi seperti:
Jika Anda memiliki user "xyz" dengan password "top $ secret" di database Anda.
sumber
Saya akan memilih opsi ke-2: pesan kesalahan menyiratkan database default tidak ada atau tidak ada hak di dalamnya, daripada tidak diatur sebagai login.
Untuk menguji apakah itu sudah diatur sebagai login
Jika NULL
Jika bukan NULL
Jika NULL
sumber
Saya memiliki masalah ini dan yang menyelesaikannya bagi saya adalah:
sumber
Solusi terbaik untuk masalah login adalah membuat pengguna login di sqlServer. Berikut adalah langkah-langkah untuk membuat login SQL Server yang menggunakan otentikasi Windows (SQL Server Management Studio):
Misalnya, jika nama pengguna adalah
xyz\ASPNET
, maka masukkan nama ini ke dalam Kotak nama Login.Anda juga perlu mengubah Pemetaan pengguna untuk mengizinkan akses ke Database yang ingin Anda akses.
sumber
Sering kali, ini bukan masalah login, tetapi masalah dengan pembuatan database itu sendiri. Jadi jika ada kesalahan saat membuat database Anda, itu tidak akan dibuat sejak awal. Dalam hal ini jika Anda mencoba masuk, terlepas dari penggunanya, proses masuk akan gagal. Ini biasanya terjadi karena salah tafsir logis dari konteks db.
Kunjungi situs di browser dan BENAR-BENAR membaca log kesalahan tersebut, ini dapat membantu Anda menemukan masalah dengan kode Anda (biasanya masalah logika yang bertentangan dengan model).
Dalam kasus saya, kode dikompilasi dengan baik, masalah login yang sama, ketika saya masih mengunduh studio manajemen, saya melewati log kesalahan, memperbaiki kendala konteks db saya dan situs mulai berjalan dengan baik .... sementara studio manajemen masih mengunduh
sumber
Bagi saya database belum dibuat dan kode EF pertama kali harus membuatnya tetapi selalu berakhir dengan kesalahan ini. String koneksi yang sama berfungsi di proyek web default inti aspnet. Solusinya adalah menambahkan
sebelum kontak database pertama (sebelum seeding DB).
sumber
Masalah
Kesalahan muncul dengan sendirinya sebagai pesan yang mirip dengan ini:
Perbaiki
Solusinya ada dalam langkah-langkah berikut. Anda tidak akan kehilangan data apa pun dalam database Anda dan Anda tidak boleh menghapus file database Anda!
Prasyarat: Anda harus menginstal SQL Server Management Studio (Penuh atau Ekspres)
Sumber solusi: https://www.codeproject.com/Tips/775607/How-to-fix-LocalDB-Requested-Login-failed
sumber
Itu juga terjadi ketika Anda mengetik nama DB yang salah
Terkadang, itu hanya kesalahan bodoh. Saya membutuhkan waktu lebih dari 1 jam untuk mengetahuinya :( karena saya baru saja mencoba banyak hal yang sulit terlebih dahulu
sumber
Saya mencoba memperbarui pengguna, dan berhasil. Lihat perintah di bawah ini.
Ganti saja yang
user('ftool')
sesuai.sumber
Ini Bekerja untuk saya.
Baca blog ini.
http://blog.sqlauthority.com/2009/08/20/sql-server-fix-error-cannot-open-database-requested-by-the-login-the-login-failed-login-failed-for- pengguna-nt-otoritasnetwork-service /
sumber
Saya menggunakan otentikasi Windows untuk menyambung ke database lokal file .mdf dan server lokal saya adalah sql server 2014. Masalah saya diselesaikan menggunakan string koneksi ini:
sumber
Dalam kasus saya ini adalah masalah yang berbeda. Basis data berubah menjadi mode pengguna tunggal dan koneksi kedua ke basis data menunjukkan pengecualian ini. Untuk mengatasi masalah ini ikuti langkah-langkah di bawah ini.
exec sp_who2
dan temukan semua koneksi ke database 'my_db'. Matikan semua koneksi dengan melakukan diKILL { session id }
mana id sesi adalah SPID yang terdaftar oleh sp_who2.sumber
Saya belum melihat hal ini disebutkan di edisi sebelumnya, jadi izinkan saya membuang kemungkinan lain. Bisa jadi itu
IFItest
tidak bisa dijangkau atau memang tidak ada. Misalnya, jika seseorang memiliki sejumlah konfigurasi, masing-masing dengan database-nya sendiri, bisa jadi nama database tidak diubah ke yang benar untuk konfigurasi saat ini.sumber
NB: Jika menggunakan layanan windows untuk menghosting webservice.
Anda harus memastikan bahwa layanan web Anda menggunakan akun Logon yang benar untuk menyambung ke SQL Server.
sumber
Terinspirasi oleh jawaban cyptus yang saya gunakan
pada EF6 sebelum kontak database pertama (sebelum seeding DB).
sumber
Jika Anda belum membuat database di server Anda, Anda akan mendapatkan error login yang sama, Pastikan database sudah ada sebelum Anda login.
sumber
Saya mengalami masalah ini ketika mencoba untuk menulis ke database default yang disediakan di template MVC asp.net. Hal ini dikarenakan database belum dibuat.
Untuk membuat database dan memastikannya dapat diakses, ikuti langkah-langkah berikut:
Ini akan membuat database dan menjalankan semua migrasi yang diperlukan di dalamnya.
sumber
Pilihan terbaik adalah menggunakan otentikasi terintegrasi Windows karena lebih aman daripada otentikasi sql. Buat pengguna windows baru di sql server dengan izin yang diperlukan dan ubah pengguna IIS di pengaturan keamanan pool aplikasi.
sumber
Saya menemukan bahwa saya juga harus mengatur opsi UserMapping saat membuat login baru dan ini memecahkan masalah bagi saya. Harapan yang membantu siapa saja yang juga terjebak di sini!
Sunting: Mengatur login sebagai pemilik db memecahkan masalah berikutnya juga
sumber
Beberapa kali masalah ini mungkin muncul jika Anda membuka db ini di server sql lain (misalnya, Anda meluncurkan studio manajemen sql (SMS) dan menambahkan db ini), dan lupa menghentikan server ini. Akibatnya - aplikasi Anda mencoba untuk terhubung dengan pengguna yang sudah terhubung di db ini di bawah server lain. Untuk memperbaikinya, coba hentikan server ini dengan Config. operator sql server.
Saya minta maaf tentang bahasa Inggris yang buruk. Hormat kami, Ignat.
sumber
Dalam kasus saya, aplikasi asp.net biasanya dapat terhubung ke database tanpa masalah. Saya melihat pesan seperti itu di log. Saya mengaktifkan log server SQL dan saya menemukan pesan ini:
Jadi sepertinya server sedang restart dan SQL server yang telah ditutup lebih awal dari aplikasi ASP.NET dan database tidak tersedia selama beberapa detik sebelum server restart.
sumber
Bahkan jika Anda telah mengatur login sebagai pemilik DB dan mengatur pemetaan pengguna untuk database yang akan menggunakan login, periksa apakah pengguna DB yang sebenarnya (bukan hanya login) memiliki peran sebagai 'pemilik'.
sumber
Dalam kasus saya, saya menjalankan Layanan Windows dengan identitas "Sistem". Kesalahannya adalah:
Masalahnya adalah kesalahan tersebut sangat menyesatkan. Bahkan setelah saya menambahkan login 'MYDOMAINNAME \ HOSTNAME $' ke database, dan memberikan akses masuk sysadmin ini dan menambahkan pengguna untuk login tersebut di database target saya, dan membuat pengguna dbowner itu, saya masih mendapatkan kesalahan yang sama. Rupanya saya perlu melakukan hal yang sama untuk login 'NT AUTHORITY \ SYSTEM'. Setelah saya melakukan itu, saya bisa masuk tanpa masalah. Saya tidak tahu mengapa pesan kesalahan mengeluh tentang 'MYDOMAINNAME \ HOSTNAME $'. Saya menghapus login itu dan pengguna yang sesuai dan semuanya masih berfungsi.
sumber