Użyłem .mdf
do połączenia z database
i entityClient
. Teraz chcę zmienić parametry połączenia, aby nie było .mdf
pliku.
Czy poniższe informacje są connectionString
prawidłowe?
<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" />
Ponieważ zawsze pojawia się błąd:
Dostawca bazowy zawiódł na Open
c#
sql-server
entity-framework
database-connection
senzacionale
źródło
źródło
Integrated Security
z łańcucha połączeń, utworzyłem użytkownika, upewniłem się, że ma onsysadmin
uprawnienia i dodałem tego użytkownika do łańcucha połączeń.Odpowiedzi:
Miałem ten błąd i znalazłem kilka rozwiązań:
Patrząc na ciąg połączenia, wygląda na poprawny. Znalazłem ten post na blogu , problem polega na tym, że korzystali ze zintegrowanych zabezpieczeń . Jeśli korzystasz z IIS, użytkownik IIS potrzebuje dostępu do bazy danych.
Jeśli używasz Entity Framework z transakcjami , Entity Framework automatycznie otwiera i zamyka połączenie z każdym wywołaniem bazy danych. Korzystając z transakcji, próbujesz rozłożyć transakcję na wiele połączeń. To podnosi się do MSDTC .
( Zobacz to odniesienie, aby uzyskać więcej informacji. )
Zmieniłem mój kod na następujący, naprawiłem go:
źródło
context.Connection.Open()
nie pomogło rozwiązać mojego problemu, więc próbowałem włączyć opcję „Zezwalaj klientom zdalnym” w konfiguracji DTC, nie ma więcej błędów.W Windows 7 możesz otworzyć konfigurację DTC, uruchamiając dcomcnfg, Usługi składowe -> Komputery -> Mój komputer -> Koordynator transakcji rozproszonych -> Kliknij prawym przyciskiem myszy na Lokalny DTC -> Bezpieczeństwo.
źródło
Powinieneś zobaczyć innerException, aby zobaczyć, jaka jest wewnętrzna przyczyna błędu.
W moim przypadku pierwotny błąd to:
rozwiązane przez udzielenie pełnego pozwolenia bieżącemu użytkownikowi na dostęp do powiązanych
mdf
ildf
plików za pomocą właściwości plików.źródło
Znalazłem problem polegający na tym, że miałem ścieżkę serwera w ciągu połączenia w jednym z tych wariantów:
Kiedy naprawdę powinienem mieć:
Z jakiegoś powodu pojawia się błąd, ilekroć ma on trudności ze zlokalizowaniem wystąpienia SQL.
źródło
Jest to tylko powszechny problem. Nawet ja napotkałem ten problem. Na komputerze programistycznym, skonfigurowanym z uwierzytelnianiem systemu Windows, działa idealnie:
Raz hostowany w IIS w tej samej konfiguracji, otrzymałem ten błąd:
Zostało to rozwiązane poprzez zmianę
connectionString
w pliku konfiguracyjnym:Inne typowe błędy to:
źródło
Integrated Security=True
i zastąp go,user id=sa;password=notmyrealpassword
aby rozwiązać ten problem z wdrażaniem.Po otrzymaniu tego wyjątku upewnij się, że rozwinąłeś szczegóły i spójrz na szczegóły wyjątku wewnętrznego, ponieważ podadzą one dlaczego niepowodzenia logowania. W moim przypadku ciąg połączenia zawierał użytkownika, który nie miał dostępu do mojej bazy danych.
Bez względu na to, czy korzystasz ze zintegrowanych zabezpieczeń (kontekst zalogowanego użytkownika Windows), czy z indywidualnego konta SQL, upewnij się, że użytkownik ma odpowiedni dostęp w „Zabezpieczeniach” do bazy danych, do której próbujesz uzyskać dostęp, aby zapobiec temu problemowi.
źródło
inner exception
polega problem? To była moja odpowiedź tutaj, że dostarczy ukrytych dodatkowych szczegółów potrzebnych do zrozumienia prawdziwego problemu.inner exception
Nie sprawdzi, czy masz prawidłową logowania - jest to nie wyjątek wyjaśnienie.Login failed for user 'user'.
NT AUTHORITY\NETWORK SERVICE
do listy użytkowników SQL Server. Nadal dostaję ten sam odrzucony błąd logowania.data source
nahostname\SQLEXPRESS
. Próbowałemhostname
i.\SQLEXPRESS
wcześniej. Wtedy mogłem połączyć się ze zintegrowanymi zabezpieczeniami. Co ciekawe, jest to przeciwieństwo odpowiedzi dooburt . Curiouser, nazwa użytkownika SQL Server nigdy nie mogła połączyć się z Visual Studio.Miałem podobny problem z SQL Server Express Edition w systemie Windows Server 2003 . Po prostu dodałem usługę sieciową jako użytkownika do zabezpieczenia bazy danych.
źródło
Usługa SQL Server Express nie została skonfigurowana do automatycznego uruchamiania.
1) Przejdź do panelu sterowania 2) Narzędzia administracyjne 3) Usługa 4) Ustaw ekspresowe uruchamianie programu SQL Server, klikając go 5) Kliknij prawym przyciskiem myszy i uruchom usługę
Mam nadzieję, że to pomoże.
źródło
Może się to również zdarzyć, jeśli przywrócisz bazę danych, a użytkownik już istnieje z innym schematem, co uniemożliwi przypisanie poprawnych uprawnień.
Aby poprawić ten przebieg:
źródło
Podobny problem opublikowałem tutaj, pracując z bazą danych SQL 2012 hostowaną na Amazon RDS. Problem dotyczył ciągu połączenia - miałem tam właściwości „Nazwa aplikacji” i „Aplikacja” . Po ich usunięciu zadziałało.
Entity Framework 5 i Amazon RDS - „Bazowy dostawca poniósł porażkę w Open”.
źródło
Upewnij się, że każda wartość elementu w dostarczonym ciągu połączenia jest poprawna. W moim przypadku otrzymywałem ten sam błąd, ponieważ nazwa katalogu (nazwa bazy danych) określona w ciągu połączenia była niepoprawna.
źródło
Miałem podobny problem z wyjątkami ze względu na stan połączenia, a potem zdałem sobie sprawę, że moją zmienną klasy usługi domeny oznaczono jako statyczną (przez pomyłkę).
Domyślam się, że po załadowaniu biblioteki usług do pamięci każde nowe wywołanie kończy się przy użyciu tej samej wartości zmiennej statycznej (instancja usługi domeny), powodując konflikty przez stan połączenia.
Myślę też, że każde wywołanie klienta skutkowało nowym wątkiem, więc wiele wątków uzyskujących dostęp do tej samej instancji usługi domenowej było wrakiem pociągu.
źródło
Miałem ten sam problem, ale dla mnie zadziałało usunięcie tego z ciągu połączenia:
persist security info=True
źródło
Miałem podobny błąd z wewnętrznym wyjątkiem jak poniżej:
Mogę to rozwiązać, włączając ustawienia zabezpieczeń DTC.
Przejdź do właściwości DTC, w zakładce Bezpieczeństwo, sprawdź poniżej
źródło
Jeśli ten błąd wystąpi w aplikacji sieci Web ASP.NET, oprócz innych wymienionych rzeczy sprawdź następujące elementy:
źródło
Pozbyłem się tego przez zresetowanie IIS , ale nadal używam
Integrated Authentication
w ciągu połączenia.źródło
Zdefiniowanie nowej reguły Zapory systemu Windows dla programu SQL Server (i dla portu 1433) na maszynie serwerowej rozwiązuje ten błąd (jeśli nazwa serwera, nazwa użytkownika lub hasło nie są niepoprawne w ciągu połączenia ...).
źródło
Częstym błędem, który popełniłem, ponieważ przenosiłem aplikację z jednego komputera na inny i żadne z powyższych nie działało, było to, że zapomniałem skopiować parametry połączenia do App.Config i Web.Config!
źródło
Miałem podobny problem: w moich wykonaniach przypadków testowych zawsze występował ten błąd. Dowiedziałem się, że moja „Usługa rozproszonych transakcji” nie została uruchomiona (uruchom: services.msc -> uruchom „Usługa rozproszonych transakcji” (najlepiej ustawić ją tak, aby uruchamiała się automatycznie)). Kiedy to zrobiłem, zadziałało jak urok ...
źródło
Skopiowałem pliki bazy danych (.mdf / .ldf) do folderu App_Data, aby pozbyć się tego wyjątku.
źródło
Miałem też do czynienia z tym samym problemem. Teraz zrobiłem to, usuwając nazwę użytkownika i hasło z ciągu połączenia.
źródło
Dla mnie był to prosty błąd:
Użyłem Amazon EC2 i użyłem elastycznego adresu IP w ciągu połączenia, ale kiedy zmieniłem adresy IP, zapomniałem zaktualizować ciąg połączenia.
źródło
Miałem ten błąd nagle niespodziewanie na jednej z naszych witryn. W moim przypadku okazało się, że hasło użytkownika SQL wygasło! Usunięcie zaznaczenia pola wygaśnięcia hasła w SQL Server Management Studio załatwiło sprawę !
źródło
Ten sam problem miałem kilka dni temu, używając „Integrated Security = True;” w ciągu połączenia musisz uruchomić tożsamość puli aplikacji w „systemie lokalnym”. Nie jest to zalecane, ale do testowania działa.
W ten sposób możesz zmienić tożsamość w IIS 7: http://www.iis.net/learn/manage/configuring-security/application-pool-identities
źródło
W IIS ustaw tożsamość puli aplikacji jako konto użytkownika lub konto administratora lub konto ant, które ma uprawnienia do wykonania operacji na tej bazie danych.
źródło
W moim przypadku miałem niezgodność między nazwą ciągu połączenia, którą rejestrowałem w konstruktorze kontekstu, a nazwą w moim pliku web.config. Prosty błąd spowodowany kopiowaniem i wklejaniem: D
źródło
mam ten sam błąd, który znalazłem podczas zmiany połączenia Połączenie z nowym źródłem danych Zapomniałem zmienić nazwy użytkownika i hasła dla nowej bazy danych
źródło
Wystąpił również ten błąd, jeśli nazwa wystąpienia programu SQL Server nie została określona, a host SQL ma zainstalowanych wiele wystąpień SQL. Oto kilka przykładów, które należy wyjaśnić:
Poniższy ciąg połączenia powoduje wyjątek „Dostawca bazowy nie powiódł się podczas otwierania” bez wewnętrznego wyjątku w aplikacji .NET WebForms:
Poniższy ciąg połączenia jest wykonywany zgodnie z oczekiwaniami w aplikacji WebForms .net, w której środowisko SQL ma wiele wystąpień. Rzadko wiem, ale mam kilka różnych instancji SQL na moim urządzeniu deweloperskim, aby pomieścić różne projekty:
źródło
w moim przypadku adres serwera został zmieniony przez administratora serwera, więc musiałem zmienić parametry połączenia na nowy adres serwera
źródło
Miałem ten problem, ponieważ nazwa logowania do puli aplikacji, pod którą ta aplikacja była uruchomiona, uległa zmianie.
W IIS:
Znajdź pulę aplikacji, klikając swoją witrynę i przechodząc do Ustawień podstawowych.
Idź do pul aplikacji.
Kliknij pulę aplikacji swojej witryny.
Kliknij Ustawienia zaawansowane.
W polu Tożsamość wprowadź login i hasło do konta.
Uruchom ponownie witrynę i spróbuj ponownie.
źródło