SQL Server 2012 Nie można zalogować się przy użyciu konta komputera

11

Przeprowadzamy migrację witryny IIS / SQL Server od 2008 do 2012 roku i mam problem z uwierzytelnianiem. Używamy uwierzytelniania systemu Windows do uwierzytelnienia jako DOMAIN\COMPUTER$, ale to nie działa, co powoduje błąd:

Logowanie nie powiodło się dla użytkownika „DOMAIN \ COMPUTER $”. Powód: Nie można znaleźć loginu pasującego do podanej nazwy. [KLIENT: <komputer lokalny>]

Sprawdziłem, czy konto istnieje, a nawet usunąłem je i utworzyłem ponownie

create login "DOMAIN\COMPUTER$" from windows

Jeśli zrobię to ponownie, otrzymam odpowiedź:

Msg 15025, poziom 16, stan 2, wiersz 1
Jednostka główna serwera „DOMAIN \ COMPUTER $” już istnieje.

( DOMAIN\COMPUTERzastępuje rzeczywistą domenę i nazwę komputera)

Wygląda więc na to, że strona wysyła zapytanie do SQL Servera, ale SQL Server nie patrzy bardzo mocno na loginy.

Czego mi brakowało?

alt
źródło

Odpowiedzi:

6

Jest to najprawdopodobniej nie domena \ komputer $ w ogóle. Wiadomość ta jest myląca. Myślę, że wszystko, czego chce, to przyznanie dostępu do serwera dla „NT AUTHORITY \ NETWORK SERVICE”. Otwórz właściwości logowania do SQL Server i dodaj to konto. Sprawdź także, jakiego użytkownika używa się w IIS do podszywania się pod anonimowego użytkownika, powinno to być coś w rodzaju „IUSR_ServerName”. Udziel dostępu również temu użytkownikowi

cha
źródło
1
„NT AUTHORITY \ NETWORK SERVICE” ma już dostęp do serwera. IIS podszywa się pod „IUSR” (bez _ServerName). O ile mi wiadomo, to nie jest prawdziwe konto - i nie mogę przyznać dostępu do „DOMAIN \ IUSR” lub „DOMAIN \ IUSR”, ponieważ te konta nie istnieją.
alt
To zadziałało dla mnie dla usługi Windows
user919426
Po długiej walce z Kreatorem kopiowania bazy danych i kreatorem eksportu i eksportu SQL, jest to jedyna odpowiedź, która pozwoliła mu działać. Dzięki!
Zalakain
6

Zarówno @cha, jak i @alt mają właściwe wskazówki - komunikat o błędzie wprowadza w błąd i Application Pool Identityjest zaangażowany (przynajmniej tak było w moim przypadku).

Jeśli używana jest pula aplikacji aplikacji IIS Application Pool Identity, konto użytkownika, które należy dodać do SQL Server, to IIS APPPOOL\your_app_pool_name. Uwaga: nie używaj Search...przycisku we Właściwościach logowania, aby znaleźć tego użytkownika - znajdzie go, ale zastąpi go MACHINE_NAME\your_app_pool_nameniedziałającym - po prostu wpisz IIS APPPOOL\your_app_pool_namejako nazwę logowania.

Jakub Januszkiewicz
źródło
1
Działa tylko wtedy, gdy twój serwer WWW i serwer SQL są w tym samym pudełku.
maxisam
1
Jasne, konta tożsamości puli aplikacji są lokalne dla komputera AFAIK, więc nie można ich używać na innych komputerach. W takim przypadku wystarczy użyć uwierzytelniania programu SQL Server lub uruchomić aplikację internetową na koncie domeny.
Jakub Januszkiewicz
3

Ten problem należy traktować inaczej w zależności od konfiguracji serwera.

  1. Serwer SQL i IIS znajdują się na tym samym komputerze.

    za. zmień Tożsamość puli aplikacji naNetwork Service

    b. dodaj NT AUTHORITY\NETWORK SERVICEdo loginu serwera SQL

  2. Serwer SQL i IIS znajdują się na innym komputerze.

    za. dodaj konto komputera DOMAIN\computer-name$, do loginu do serwera SQL.

    b. tożsamość puli aplikacji pozostajeApplication Pool Identity

maxisam
źródło
1

Udało mi się go uruchomić, zmieniając witrynę w IIS, aby korzystać z Application Pool Identity, a następnie zmieniając tożsamość puli aplikacji na Network Service. Skomentuj wszelkie problemy związane z bezpieczeństwem.

alt
źródło
Dlaczego nie użyć użytkownika domeny do puli aplikacji, ponieważ masz AD lub jeszcze lepiej konto usługi Manange?
Spörri
0

Otrzymywałem ten sam błąd. Błąd logowania: 18456, wskaźnik ważności: 14, stan: 5. Wyłączenie CEIP z SQL Server Błąd i raportowanie użycia rozwiązało problem.

Ayan Mullick
źródło
1
Czy mógłbyś trochę rozwinąć swoją odpowiedź? Czy możesz podać jakieś odpowiednie zasoby? Twoja odpowiedź pojawiła się jako niskiej jakości z powodu jej długości i treści i może zostać usunięta z tego powodu.
John aka hot2use,