Daugiau
MSSQL klaida 'Atidarant nepavyko atidaryti pagrindinio teikėjo'
Naudojau .mdf
prisijungimui prie databazės
ir entityClient
. Dabar noriu pakeisti prisijungimo eilutę taip, kad nebūtų .mdf
failo.
Ar ši prisijungimo eilutė
yra teisinga?
<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" />
Nes visada gaunu klaidą:
The underlying provider failed on Open
211
3
Aš turėjau šią klaidą ir radau keletą sprendimų:
Žvelgiant į jūsų ryšio eilutę, ji atrodo tinkama. Radau šį tinklaraščio įrašą, problema ta, kad jie naudojo Integrated Security. Jei naudojate IIS, jūsų IIS naudotojui reikia prieigos prie duomenų bazės.
Jei naudojate Entity Framework su transakcijomis, Entity Framework automatiškai atidaro ir uždaro ryšį su kiekvienu duomenų bazės iškvietimu. Taigi naudodami transakcijas bandote išskaidyti transakciją per kelis ryšius. Tai pakyla iki MSDTC.
(Daugiau informacijos rasite šioje nuorodoje).
Pakeitus mano kodą į toliau pateiktą, problema buvo išspręsta:
context.Connection.Open()
nepadėjo išspręsti mano problemos, todėl pabandžiau įjungti "Allow Remote Clients" DTC konfigūracijoje, klaidos nebeliko.Windows 7 galite atidaryti DTC konfigūraciją paleidę dcomcnfg, Component Services -> Computers -> My Computer -> Distributed Transaction Coordinator -> Dešiniuoju pelės mygtuku spustelėkite Local DTC -> Security.
Nustatau, kad problema buvo ta, kad viename iš šių variantų turėjau serverio kelią per ryšio eilutę:
Kai iš tikrųjų turėčiau:
Dėl kažkokių priežasčių gavau klaidą, kai buvo sunku rasti SQL egzempliorių.