Pesan yang ditampilkan oleh SQL Server Log File Viewer:
Login failed for user [User]
Error: 18456, Severity: 14, State 38
Apa sebenarnya artinya:
Failed to open the explicitly specified database
Pertanyaan saya:
Apakah ada daftar di suatu tempat dari semua variasi kesalahan 18456 (Login gagal), untuk setiap kombinasi keparahan dan keadaan, dengan teks uraian yang membantu?
Saya sudah memiliki Google tetapi tidak dapat menemukan selain kombinasi spesifik.
sql-server
errors
logins
Pete Oakey
sumber
sumber
Saya memiliki kesalahan yang sama dengan kode negara 38 yang disebabkan oleh kesalahan ketik nama database dalam string koneksi.
sumber
Inilah yang saya temukan ketika saya menyelesaikan kesalahan ini: Saya telah membuat beberapa koneksi SQL menggunakan windows login dan bukan nama pengguna dan kata sandi. Tidak benar-benar yakin apa atau bagaimana itu terjadi tetapi ternyata itu terjadi. Saya menghapusnya dan kemudian membangun kembali model entitas saya. Saya menggunakan koneksi string lain yang saya tahu baik, dan semuanya adalah sukacita. Kuncinya adalah Persist Security Info = True, yang tidak akan berfungsi di jaringan atau situs web eksternal
sumber
Saya memiliki 18456 dengan negara 38 juga. Ternyata string koneksi memiliki 'keamanan terpadu = benar' yang bukan yang saya inginkan. String koneksi berisi userid dan kata sandi yang akan digunakan. Ketika saya mengubah pengaturan menjadi false, semuanya baik-baik saja.
sumber
Saya mendapat kesalahan ini mencoba masuk ke SQL Server dengan beberapa contoh. String koneksi tidak memberi nama instance. Setelah saya beri nama instance (SERVERNAME \ INSTANCENAME), saya berhasil terhubung ke server.
sumber
@Pete Oakly berada di jalur yang benar dengan daftar kode negara. Secara khusus, ini adalah kode yang kita semua tertarik:
Masalah saya dimulai pada log kesalahan C #:
Mata saya terfokus pada bagian "Login gagal" . Pengguna saya adalah sa untuk server DB ini, bagaimana mungkin login gagal?
Saya menemukan posting ini oleh trio programmer yang memiliki jawaban: https://justaprogrammer.net/2012/12/09/a-misleading-sql-error-message-error-18456-severity-14-state-38 /
Ini bukan gagal login per se, itu database yang saya coba akses. Itu tidak ada!
Bingo! Saya telah mengubah nama database karena alasan lain dan tidak memperbarui file konfigurasi. Memperbaiki nama DB dan semuanya berfungsi seperti pesona sekali lagi.
sumber
Dalam kasus kami di Manajer Konfigurasi SQL Server | Konfigurasi Jaringan SQL Server | TCP / IP | IP | Port TCP TIDAK diatur.
Tanpa kita bisa membuat koneksi ODBC dan bahkan menggunakan koneksi SQL Management Studio jarak jauh dan login dengan pengguna. Namun setiap kali kami mengakses url dari aplikasi Tomcat kami, ia meluncurkan koneksi jdbc, kemudian kami melihat di SQL Server. Log kesalahan: Login gagal untuk pengguna 'xxxx': alasan Gagal membuka database yang ditetapkan secara eksplisit, kesalahan 18456, Severity 14 , Negara 38
Di sini abstrak dari string koneksi jdbc
Ini untuk mengatakan bahwa juga di SQL Server Network Configuration | Protokol untuk <nama instance> | Pipa Bernama harus DIAKTIFKAN & Nama Pipa
\\.\pipe\MSSQL$<instance name>\sql\query
harus diatur dengan benar.sumber
Ya, ini adalah kesalahan terkait izin basis data. Saya menambahkan solusi saya dalam pertanyaan ini karena, sangat penting untuk memahami peran DBA. Jadi, ada saran saya:
Sekarang, login dengan nama pengguna itu dan Anda dapat memberikan akses kepada pengguna. Untuk melakukannya:
Pergi ke Keamanan , klik kanan pada Login dan pilih Login Baru
Di jendela masuk, Anda dapat mengetik nama pengguna atau mencarinya. Pilih pengguna dari daftar dan klik OK dan OK lagi.
Pada jendela login yang sama, klik Server Peran , dan berikan akses ke pengguna yang dipilih seperti: sysadmin, serveradmin, decreator dll; klik OK .
Jika Anda ingin memberikan akses ke basis data individual, buka Pemetaan Pengguna dan berikan akses sesuai kebutuhan Anda.
Periksa Status database: Izin: Grant Login: Diaktifkan
Klik OK
sumber