Cannot Open Database Requested by the Login Visual Studio
Tidak dapat membuka "tes" database yang diminta oleh login. Login gagal. Login gagal untuk pengguna 'xyz \ ASPNET'
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 =. \S QLExpress ; Initial Catalog = IFItest ; Integrated Security = True
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:
connectionString = "Server=.\SQLExpress;Database=IFItest;User ID=xyz;pwd=top$secret"
Jika Anda memiliki user "xyz" dengan password "top $ secret" di database Anda.
- Salah satu: "xyz \ ASPNET" bukan info masuk (dalam sys.server_principals)
- Atau: "xyz \ ASPNET" disiapkan tetapi tidak dipetakan ke pengguna dalam pengujian database (sys.database_principals)
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
SELECT SUSER_ID ( 'xyz\ASPNET' ) -- (** not ** SUSER_SID )
Jika NULL
CREATE LOGIN [ xyz\ASPNET ] FROM WINDOWS
Jika bukan NULL
USE test GO SELECT USER_ID ( 'xyz\ASPNET' )
Jika NULL
USE test GO CREATE USER [ xyz\ASPNET ] FROM LOGIN [ xyz\ASPNET ]
Saya memiliki masalah ini dan yang menyelesaikannya bagi saya adalah:
- Pergi ke kolam Aplikasi di IIS
- Klik kanan pada kumpulan aplikasi proyek saya
- Di bagian Model Proses, buka Identity
- Pilih opsi akun Kustom
- Masukkan nama pengguna dan kata sandi komputer Anda.
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):
- Di SQL Server Management Studio, buka Object Explorer dan perluas folder instance server untuk membuat login baru.
- Klik kanan folder Keamanan, arahkan ke Baru, lalu klik Login.
- Di halaman Umum, masukkan nama pengguna Windows di kotak Nama login.
- Pilih Otentikasi Windows.
- Klik OK.
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.
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
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
_dbContext . Database . EnsureCreated ()
sebelum kontak database pertama (sebelum seeding DB).
Masalah
Kesalahan muncul dengan sendirinya sebagai pesan yang mirip dengan ini:
Tidak dapat membuka database "DATABASE NAME" yang diminta oleh login. Login gagal. Login gagal untuk pengguna XYZ.
- Kesalahan biasanya tidak dapat diperbaiki dengan Visual Studio sederhana atau restart komputer penuh.
- Kesalahan juga dapat ditemukan sebagai file database yang tampaknya terkunci.
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)
- Buka SQL Server Management Studio
- Di jendela "Connect to Server" (File-> Connect object explorer) masukkan berikut ini:
- Jenis server: Mesin Basis Data
- Nama server: (localdb) \ v11.0
- Otentikasi: [Apa pun yang Anda gunakan saat membuat db lokal. Mungkin Otentikasi Windows).
- Klik "Hubungkan"
- Perluas folder "Database" di Object Explorer (View-> Object Explorer, F8)
- Temukan database Anda. Ini harus diberi nama sebagai jalur lengkap ke file database (.mdf) Anda
- Anda seharusnya melihatnya mengatakan "(Pemulihan Tertunda)" di akhir nama database atau ketika Anda mencoba untuk memperluas database itu tidak akan dapat dan mungkin atau mungkin tidak memberi Anda pesan kesalahan.
- Ini masalahnya! Basis data Anda pada dasarnya mogok ..
- Klik kanan pada database lalu pilih "Tasks -> Detach ...".
- Di jendela lepas, pilih database Anda di daftar dan periksa kolom yang bertuliskan "Drop Connections"
- Klik OK.
- Anda akan melihat database menghilang dari daftar database. Masalah Anda sekarang harus diperbaiki. Buka dan jalankan aplikasi Anda yang menggunakan localdb Anda.
- Setelah menjalankan aplikasi Anda, database Anda akan muncul kembali di daftar database - ini benar. Seharusnya tidak tertulis "Pemulihan menunggu keputusan" karena seharusnya berfungsi dengan baik.
Sumber solusi: https://www.codeproject.com/Tips/775607/How-to-fix-LocalDB-Requested-Login-failed
Itu juga terjadi ketika Anda mengetik nama DB yang salah
ex : xxx - db - dev to xxx - dev - db
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
Saya mencoba memperbarui pengguna, dan berhasil. Lihat perintah di bawah ini.
USE ComparisonData // databaseName EXEC sp_change_users_login @Action = 'update_one' , @UserNamePattern = 'ftool' , @LoginName = 'ftool' ;
Ganti saja yang user('ftool')
sesuai.
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:
string sqlString = " Data Source = (LocalDB)\\MSSQLLocalDB;" + "AttachDbFilename = F:\\.........\\myDatabase.mdf; Integrated Security = True; Connect Timeout = 30" ;
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.
- Pastikan penjelajah objek diarahkan ke database sistem seperti master.
- Jalankan a
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.
USE MASTER ; EXEC sp_who2
- Ubah database
USE MASTER ; ALTER DATABASE [ my_db ] SET MULTI_USER GO
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.
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.
- Buka layanan (Saya berasumsi layanan windows telah diinstal)
- Klik kanan pada properti layanan dan goto.
- Klik pada Tab "Masuk"
- Klik tombol radio "Akun ini"
- Klik "Jelajahi"
- Masukkan nama pengguna PC di Bidang Teks dan klik Tombol "Periksa Nama" di sebelah kanan.
- Klik pada teks di Text Field, tekan tombol "OK"
- masukkan kata sandi login dan Terapkan
Terinspirasi oleh jawaban cyptus yang saya gunakan
_dbContext . Database . CreateIfNotExists ();
pada EF6 sebelum kontak database pertama (sebelum seeding DB).
Jika Anda belum membuat database di server Anda, Anda akan mendapatkan error login yang sama, Pastikan database sudah ada sebelum Anda login.
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:
- Buka konsol manajer paket di Visual Studio
- Jalankan perintah "update-database"
Ini akan membuat database dan menjalankan semua migrasi yang diperlukan di dalamnya.
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.
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
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.
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:
2016 - 10 - 28 10 : 27 : 10.86 Logon Login failed for user '****' . Reason : Failed to open the explicitly specified database '****' . [ CLIENT : < local machine >] 2016 - 10 - 28 10 : 27 : 13.22 Server SQL Server is terminating because of a system shutdown . This is an informational message only . No user action is required .
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.
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'.
Dalam kasus saya, saya menjalankan Layanan Windows dengan identitas "Sistem". Kesalahannya adalah:
System . Data . SqlClient . SqlException ( 0x80131904 ): Cannot open database "MyDbName" requested by the login . The login failed . Login failed for user 'MYDOMAINNAME\HOSTNAME$' .
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.
Cannot Open Database Requested by the Login Visual Studio
Source: https://qastack.id/programming/2575907/cannot-open-database-test-requested-by-the-login-the-login-failed-login-fail
0 Response to "Cannot Open Database Requested by the Login Visual Studio"
Post a Comment