Saya menggunakan .mdf
untuk menghubungkan ke database
dan entityClient
. Sekarang saya ingin mengubah string koneksi sehingga tidak akan ada .mdf
file.
Apakah yang berikut ini connectionString
benar?
<connectionStrings>
<!--<add name="conString" connectionString="metadata=res://*/conString.csdl|res://*/conString.ssdl|res://*/conString.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQL2008;AttachDbFilename=|DataDirectory|\NData.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />-->
<add name="conString" connectionString="metadata=res://*/conString.csdl|res://*/conString.ssdl|res://*/conString.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQL2008;Initial Catalog=NData;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
Karena saya selalu mendapatkan kesalahan:
Penyedia yang mendasarinya gagal pada Open
c#
sql-server
entity-framework
database-connection
senzacionale
sumber
sumber
Integrated Security
dari connectionstring, membuat pengguna dan memastikan mereka memilikisysadmin
izin dan menambahkan pengguna itu ke connectionstring.Jawaban:
Saya mengalami kesalahan ini dan menemukan beberapa solusi:
Melihat string koneksi Anda, itu terlihat valid. Saya menemukan posting blog ini , masalahnya di sini adalah mereka menggunakan Keamanan Terpadu . Jika Anda menjalankan IIS, pengguna IIS Anda perlu akses ke database.
Jika Anda menggunakan Entity Framework with Transactions , Entity Framework secara otomatis membuka dan menutup koneksi dengan setiap panggilan basis data. Jadi saat menggunakan transaksi, Anda mencoba untuk menyebar transaksi melalui beberapa koneksi. Ini naik ke MSDTC .
( Lihat referensi ini untuk informasi lebih lanjut. )
Mengubah kode saya ke yang berikut ini memperbaikinya:
sumber
context.Connection.Open()
tidak membantu menyelesaikan masalah saya, jadi saya mencoba mengaktifkan "Izinkan Klien Jarak Jauh" di konfigurasi DTC, tidak ada lagi kesalahan.Di windows 7 Anda dapat membuka konfigurasi DTC dengan menjalankan dcomcnfg, Layanan Komponen -> Komputer -> Komputer Saya -> Koordinator Transaksi Terdistribusi -> Klik kanan ke DTC Lokal -> Keamanan.
sumber
Anda harus melihat innerException untuk melihat apa penyebab batuk kesalahan.
Dalam kasus saya, kesalahan aslinya adalah:
yang diselesaikan dengan memberikan izin penuh kepada pengguna saat ini untuk mengakses file terkait
mdf
danldf
menggunakan properti file.sumber
Saya menemukan masalahnya adalah bahwa saya memiliki jalur server dalam string koneksi di salah satu varian ini:
Kapan saya seharusnya memiliki:
Untuk beberapa alasan saya mendapatkan kesalahan setiap kali mengalami kesulitan menemukan contoh SQL.
sumber
Ini hanya masalah umum. Bahkan saya telah menghadapi masalah ini. Pada mesin pengembangan, yang dikonfigurasi dengan otentikasi Windows, ini berfungsi dengan sempurna:
Setelah di-host di IIS dengan konfigurasi yang sama, saya mendapatkan kesalahan ini:
Itu dipecahkan berubah
connectionString
dalam file konfigurasi:Kesalahan umum lainnya adalah:
sumber
Integrated Security=True
dan ganti denganuser id=sa;password=notmyrealpassword
untuk memperbaiki masalah penyebaran ini.Saat Anda menerima pengecualian ini, pastikan untuk memperluas detail dan melihat detail pengecualian dalam karena itu akan memberikan detail mengapa login gagal. Dalam kasus saya, string koneksi berisi pengguna yang tidak memiliki akses ke database saya.
Terlepas dari apakah Anda menggunakan Keamanan Terpadu (konteks Pengguna Windows yang masuk) atau akun SQL individual, pastikan bahwa pengguna memiliki akses yang tepat di bawah 'Keamanan' untuk database yang Anda coba akses untuk mencegah masalah ini.
sumber
inner exception
negara? Itulah jawaban saya di sini, bahwa itu akan memberikan detail tambahan tersembunyi yang diperlukan untuk memahami masalah mendasar yang sebenarnya. Tidakinner exception
akan memverifikasi bahwa Anda memiliki log masuk yang benar - itu pengecualian bukan klarifikasi.Login failed for user 'user'.
NT AUTHORITY\NETWORK SERVICE
ke daftar pengguna SQL Server. Saya masih mendapat kegagalan login yang ditolak sama.data source
kehostname\SQLEXPRESS
. Saya sudah mencobahostname
dan.\SQLEXPRESS
sebelumnya. Kemudian saya dapat terhubung dengan keamanan terintegrasi. Anehnya, ini kebalikan dari jawaban dooburt . Curiouser, nama pengguna SQL Server tidak pernah dapat terhubung dari Visual Studio.Saya memiliki masalah serupa dengan SQL Server Express Edition pada Windows Server 2003 . Saya hanya menambahkan layanan jaringan sebagai pengguna dalam keamanan basis data.
sumber
Layanan SQL Server Express tidak diatur untuk mulai secara otomatis.
1) Buka panel kontrol 2) Alat Administratif 3) Layanan 4) Set SQL Server express untuk memulai secara otomatis dengan mengkliknya 5) Klik kanan dan mulai layanan
Saya harap itu akan membantu.
sumber
Ini juga dapat terjadi jika Anda memulihkan database dan pengguna sudah ada dengan skema berbeda, membuat Anda tidak dapat menetapkan izin yang benar.
Untuk memperbaiki proses ini:
sumber
Saya memposting masalah serupa di sini, bekerja dengan SQL 2012 db yang diselenggarakan di Amazon RDS. Masalahnya ada di string koneksi - Saya punya properti "Nama Aplikasi" dan "Aplikasi" di sana. Setelah saya menghapusnya, itu berhasil.
Entity Framework 5 dan Amazon RDS - "Penyedia yang mendasari gagal pada Open."
sumber
Pastikan setiap nilai elemen dalam string koneksi yang diberikan sudah benar. Dalam kasus saya, saya mendapatkan kesalahan yang sama karena nama katalog (nama database) yang ditentukan dalam string koneksi salah.
sumber
Saya memiliki masalah serupa dengan pengecualian karena status koneksi, kemudian saya menyadari bahwa saya memiliki variabel kelas layanan domain saya ditandai sebagai statis (karena kesalahan).
Dugaan saya adalah bahwa begitu perpustakaan layanan dimuat ke dalam memori, setiap panggilan baru berakhir menggunakan nilai variabel statis yang sama (contoh layanan domain), menyebabkan konflik melalui keadaan koneksi.
Saya pikir juga bahwa setiap panggilan klien menghasilkan utas baru, sehingga beberapa utas mengakses instance layanan domain yang sama dengan disamakan dengan bangkai kereta.
sumber
Saya memiliki masalah yang sama tetapi yang berhasil bagi saya adalah menghapus ini dari Connection Connection:
persist security info=True
sumber
Saya memiliki kesalahan yang sama dengan pengecualian dalam seperti di bawah ini:
Saya bisa mengatasinya dengan mengaktifkan pengaturan keamanan DTC.
Pergi ke Properti DTC, di bawah Tab Keamanan, periksa di bawah ini
sumber
Jika Anda mendapatkan kesalahan ini pada aplikasi web ASP.NET, selain hal-hal lain yang disebutkan periksa berikut ini:
sumber
Saya menyingkirkan ini dengan mengatur ulang IIS , tetapi masih menggunakan
Integrated Authentication
dalam string koneksi.sumber
Mendefinisikan aturan Windows Firewall baru untuk SQL Server (dan untuk port 1433) pada mesin server menyelesaikan kesalahan ini (jika nama server Anda, nama login atau kata sandi pengguna tidak salah dalam string koneksi Anda ...).
sumber
Kesalahan umum yang saya lakukan karena saya memindahkan aplikasi dari satu pc ke pc lain dan tidak ada yang bekerja di atas adalah bahwa saya lupa menyalin string koneksi ke App.Config dan Web.Config!
sumber
Saya memiliki masalah yang sama: Dalam eksekusi kasus pengujian saya, saya selalu mendapatkan kesalahan ini. Saya menemukan, bahwa "Layanan Transaksi Terdistribusi" saya tidak dimulai (jalankan: services.msc -> mulai "Layanan Transaksi Terdistribusi" (terbaik untuk mengaturnya untuk memulai otomatis)). Setelah saya melakukan itu, itu berfungsi seperti pesona ...
sumber
Saya menyalin file database (.mdf / .ldf) ke folder App_Data untuk menyingkirkan pengecualian ini.
sumber
Saya juga menghadapi masalah yang sama. Sekarang saya telah melakukannya dengan menghapus nama pengguna dan kata sandi dari string koneksi.
sumber
Bagi saya itu hanya kesalahan sederhana:
Saya menggunakan Amazon EC2 , dan saya menggunakan alamat IP elastis saya di string koneksi, tetapi ketika saya mengubah alamat IP saya lupa memperbarui string koneksi saya.
sumber
Saya mendapatkan kesalahan ini tiba-tiba terjadi secara tiba-tiba di salah satu situs kami. Dalam kasus saya, ternyata kata sandi pengguna SQL telah kedaluwarsa! Melepas kotak kedaluwarsa kata sandi di SQL Server Management Studio berhasil!
sumber
Saya memiliki masalah yang sama beberapa hari yang lalu, menggunakan "Keamanan Terpadu = Benar;" dalam string koneksi Anda perlu menjalankan identitas kumpulan aplikasi di bawah "sistem lokal" Tentu ini tidak dianjurkan tetapi untuk pengujian itu berhasil.
Inilah cara Anda dapat mengubah identitas dalam IIS 7: http://www.iis.net/learn/manage/configuring-security/application-pool-identities
sumber
Di IIS mengatur App Pool Identity Sebagai pengguna Akun Layanan atau Administrator Account atau akun semut yang memiliki izin untuk melakukan operasi pada DataBase itu.
sumber
Dalam kasus saya, saya memiliki ketidakcocokan antara nama string koneksi yang saya daftarkan di konstruktor konteks vs nama di web.config saya. Kesalahan sederhana yang disebabkan oleh salin dan tempel: D
sumber
saya memiliki kesalahan yang sama dengan yang saya temukan ketika saya mengubah koneksi sayaString ke Sumber Data baru saya lupa mengubah Username dan passowrd untuk database baru
sumber
Saya juga memiliki kesalahan ini terjadi jika nama SQL Server Instance tidak ditentukan dan host SQL memiliki beberapa contoh SQL diinstal. Berikut beberapa contoh untuk diklarifikasi:
String koneksi di bawah ini menghasilkan pengecualian "Penyedia yang mendasari gagal pada Buka" tanpa pengecualian dalam aplikasi .NET WebForms:
String koneksi berikut dijalankan seperti yang diharapkan dalam aplikasi .net WebForms di mana lingkungan SQL memiliki beberapa instance. Rare saya tahu, tapi saya punya beberapa contoh SQL yang berbeda di kotak dev saya untuk mengakomodasi proyek yang berbeda:
sumber
dalam kasus saya alamat server telah diubah oleh admin server jadi saya harus mengubah string koneksi ke alamat server baru
sumber
Saya punya masalah ini karena Application Pool login yang dijalankan oleh aplikasi ini telah berubah.
Dalam IIS:
Temukan kumpulan Aplikasi dengan mengklik situs Anda dan pergi ke Pengaturan Dasar.
Pergi ke Kolam Aplikasi.
Klik pada kumpulan aplikasi situs Anda.
Klik Pengaturan Lanjut.
Di Identity, masukkan login dan kata sandi akun.
Mulai ulang situs Anda dan coba lagi.
sumber