Wiem, że jest to prawie duplikat: Błąd „Logowanie nie powiodło się dla użytkownika„ NT AUTHORITY \ IUSR ”” w ASP.NET i SQL Server 2008 i logowanie nie powiodło się dla użytkownika „nazwa_użytkownika” - System.Data.SqlClient.SqlException z LINQ w zewnętrzna biblioteka projektów / klas, ale niektóre rzeczy nie sumują się w porównaniu z innymi aplikacjami na moim serwerze i nie wiem dlaczego.
Używane pudełka:
Pole
testowe
SQL Box w sieci Web
Moja aplikacja:
Mam aplikację sieci Web ASP.NET, która odwołuje się do biblioteki klas, która używa LINQ-to-SQL. Parametry połączenia skonfigurowane poprawnie w bibliotece klas. Zgodnie z logowaniem nie powiodło się dla użytkownika „nazwa użytkownika” - System.Data.SqlClient.SqlException z LINQ w zewnętrznej bibliotece projektu / klasy , dodałem również ten ciąg połączenia do aplikacji internetowej.
Parametry połączenia używają poświadczeń SQL jako takich (w aplikacji internetowej i bibliotece klas):
<add name="Namespace.My.MySettings.ConnectionStringProduction"
connectionString="Data Source=(SQL Test Box);Initial Catalog=(db name);Persist Security Info=True;User ID=ID;Password=Password"
providerName="System.Data.SqlClient" />
Potwierdzono, że połączenie działa poprzez dodanie go do Eksploratora serwera. To są parametry połączenia, których używa mój plik .dbml.
Problem:
Otrzymuję następujący błąd:
System.Data.SqlClient.SqlException: Login failed for user 'DOMAIN\MACHINENAME$'.
Teraz odwołując się do tego Błąd „Logowanie nie powiodło się dla użytkownika 'NT AUTHORITY \ IUSR'” w ASP.NET i SQL Server 2008 mówi, że to naprawdę usługa sieci lokalnej i użycie jakiejkolwiek innej nazwy spoza domeny nie będzie działać.
Ale jestem zdezorientowany, ponieważ sprawdziłem zarówno SQL Box, jak i SQL Test Box SQL Management Studio i oba mają NT AUTHORITY/NETWORK SERVICE
pod Security -> Logins, na poziomie bazy danych, które nie są wymienione w Security -> Users, ale na poziomie bazy danych Security -> Użytkownicy Mam użytkownika wyświetlanego w ciągu połączenia.
Na poziomie NTFS na serwerze sieciowym uprawnienia mają USŁUGA SIECIOWA ma pełną kontrolę.
Powodem, dla którego jestem zdezorientowany, jest to, że mam wiele innych aplikacji internetowych na moim serwerze sieciowym, które odwołują się do baz danych zarówno w SQL Box, jak i SQL Test Box i wszystkie działają. Ale nie mogę znaleźć różnicy między nimi a moją obecną aplikacją, poza tym, że używam biblioteki klas. Czy to ma znaczenie? Sprawdzanie uprawnień NTFS, konfiguracja logowania zabezpieczeń na poziomie serwera i baz danych, parametry połączenia i metoda łączenia (poświadczenia programu SQL Server), pula aplikacji IIS i inne opcje folderów są takie same.
Dlaczego te aplikacje działają bez dodawania nazwy maszyny $ do uprawnień któregokolwiek z moich pól SQL? Ale to właśnie nakazuje mi jedno łącze, aby rozwiązać ten problem.