[c#] 로그인에서 요청한 데이터베이스 “테스트”를 열 수 없습니다. 로그인에 실패했습니다. 사용자 ‘xyz \ ASPNET’에 대한 로그인 실패

일부 데이터를 db에 저장하는 웹 서비스를 만들었습니다. 하지만이 오류가 발생합니다.

로그인에서 요청한 “테스트”데이터베이스를 열 수 없습니다. 로그인에 실패했습니다. ‘xyz \ ASPNET’사용자가 로그인하지 못했습니다.

내 연결 문자열은

Data Source=.\SQLExpress;Initial Catalog=IFItest;Integrated Security=True



답변

글쎄요, 그 오류는 아주 분명합니다. “xyz / ASPNET”사용자로 SQL Server에 연결하려고합니다.이 계정은 ASP.NET 앱이 실행되는 계정입니다.

이 계정은 SQL Server에 연결할 수 없습니다. SQL Server에서 해당 계정에 대한 로그인을 생성하거나 연결 문자열에 다른 유효한 SQL Server 계정을 지정하십시오.

원래 질문을 업데이트하여 연결 문자열을 보여줄 수 있습니까?

업데이트 : 네, 통합 Windows 인증을 사용하고 있습니다-> SQL Server에서 “xyz \ ASPNET”에 대한 SQL Server 로그인을 생성하거나 연결 문자열을 다음과 같이 변경해야합니다.

connectionString="Server=.\SQLExpress;Database=IFItest;User ID=xyz;pwd=top$secret"

데이터베이스에 암호가 “top $ secret”인 사용자 “xyz”가있는 경우.


답변

  • 다음 중 하나 : “xyz \ ASPNET”은 로그인이 아닙니다 (sys.server_principals에 있음).
  • 또는 : “xyz \ ASPNET”이 설정되었지만 데이터베이스 테스트 (sys.database_principals)의 사용자에 매핑되지 않았습니다.

두 번째 옵션을 선택하겠습니다. 오류 메시지는 기본 데이터베이스가 로그인으로 설정되지 않았거나 권한이 없음을 의미합니다.

로그인으로 설정되었는지 테스트하려면

SELECT SUSER_ID('xyz\ASPNET') -- (**not** SUSER_SID)

NULL 인 경우

CREATE LOGIN [xyz\ASPNET] FROM WINDOWS

NULL이 아닌 경우

USE test
GO
SELECT USER_ID('xyz\ASPNET')

NULL 인 경우

USE test
GO
CREATE USER [xyz\ASPNET] FROM LOGIN [xyz\ASPNET]


답변

나는이 문제가 있었고 그것을 해결 한 것은 다음과 같습니다.

  • IIS의 응용 프로그램 풀로 이동
  • 내 프로젝트 응용 프로그램 풀을 마우스 오른쪽 버튼으로 클릭하십시오.
  • 프로세스 모델 섹션에서 ID 열기
  • 사용자 지정 계정 옵션 선택
  • PC 사용자 이름과 암호를 입력하십시오.

답변

로그인 문제에 대한 최상의 솔루션은 sqlServer에서 로그인 사용자를 만드는 것입니다. Windows 인증 (SQL Server Management Studio)을 사용하는 SQL Server 로그인을 만드는 단계는 다음과 같습니다.

  1. SQL Server Management Studio에서 개체 탐색기를 열고 새 로그인을 만들 서버 인스턴스의 폴더를 확장합니다.
  2. 보안 폴더를 마우스 오른쪽 단추로 클릭하고 새로 만들기를 가리킨 다음 로그인을 클릭합니다.
  3. 일반 페이지에서 로그인 이름 상자에 Windows 사용자 이름을 입력합니다.
  4. Windows 인증을 선택합니다.
  5. 확인을 클릭하십시오.

예를 들어 사용자 이름이 xyz\ASPNET이면이 이름을 로그인 이름 상자에 입력합니다.

또한 액세스하려는 데이터베이스에 액세스 할 수 있도록 사용자 매핑을 변경해야합니다.


답변

대부분의 경우 로그인 문제가 아니라 데이터베이스 자체를 만드는 문제입니다. 따라서 데이터베이스를 생성하는 중에 오류가 발생하면 처음부터 생성되지 않습니다. 이 경우 사용자에 관계없이 로그인을 시도하면 로그인이 실패합니다. 이것은 일반적으로 db 컨텍스트의 논리적 오해로 인해 발생합니다.

브라우저에서 사이트를 방문하고 실제로 해당 오류 로그를 읽으면 코드 문제 (일반적으로 모델과 충돌하는 논리 문제)를 발견하는 데 도움이 될 수 있습니다.

제 경우에는 코드가 잘 컴파일되고 동일한 로그인 문제가 발생했습니다. 여전히 관리 스튜디오를 다운로드하는 동안 오류 로그를 살펴보고 db 컨텍스트 제약 조건을 수정하고 사이트가 정상적으로 실행되기 시작했습니다 …. 한편 관리 스튜디오는 여전히 다운로드 중입니다.


답변

나를 위해 데이터베이스가 생성되지 않았고 EF 코드가 먼저 생성해야했지만 항상이 오류로 끝납니다. aspnet 코어 기본 웹 프로젝트에서 동일한 연결 문자열이 작동했습니다. 해결책은

_dbContext.Database.EnsureCreated()

첫 번째 데이터베이스 연결 전 (DB 시드 전).


답변

문제

오류는 다음과 유사한 메시지로 나타납니다.

로그인에 의해 요청 된 “DATABASE NAME”데이터베이스를 열 수 없습니다. 로그인에 실패했습니다. 사용자 XYZ가 로그인하지 못했습니다.

  • 이 오류는 일반적으로 간단한 Visual Studio 또는 전체 컴퓨터 다시 시작으로 수정할 수 없습니다.
  • 오류는 잠긴 것처럼 보이는 데이터베이스 파일로도 발견 될 수 있습니다.

수정

솔루션은 다음 단계에 있습니다. 데이터베이스의 데이터를 잃지 않으며 데이터베이스 파일을 삭제해서는 안됩니다!

전제 조건 : SQL Server Management Studio (Full 또는 Express)를 설치해야합니다.

  1. SQL Server Management Studio 열기
  2. “서버에 연결”창 (파일-> 개체 탐색기 연결)에서 다음을 입력합니다.
    • 서버 유형 : 데이터베이스 엔진
    • 서버 이름 : (localdb) \ v11.0
    • 인증 : [로컬 db를 만들 때 사용한 모든 것. 아마도 Windows 인증).
  3. “연결”을 클릭하십시오.
  4. 개체 탐색기에서 “데이터베이스”폴더를 확장합니다 (보기-> 개체 탐색기, F8).
  5. 데이터베이스를 찾으십시오. 데이터베이스 (.mdf) 파일의 전체 경로로 이름을 지정해야합니다.
    • 데이터베이스 이름 끝에 “(Pending Recovery)”라는 메시지가 표시되거나 데이터베이스를 확장하려고 할 때 오류 메시지가 표시되거나 표시되지 않을 수 있습니다.
    • 이 문제! 데이터베이스가 본질적으로 충돌했습니다 ..
  6. 데이터베이스를 마우스 오른쪽 버튼으로 클릭 한 다음 “작업-> 분리 …”를 선택합니다.
  7. 분리 창에서 목록에서 데이터베이스를 선택하고 “연결 끊기”열을 확인하십시오.
  8. 확인을 클릭하십시오.
  9. 데이터베이스 목록에서 데이터베이스가 사라지는 것을 볼 수 있습니다. 이제 문제가 해결되어야합니다. 가서 localdb를 사용하는 애플리케이션을 실행하십시오.
  10. 응용 프로그램을 실행하면 데이터베이스 목록에 데이터베이스가 다시 나타납니다. 맞습니다. 제대로 작동해야하므로 더 이상 “복구 보류 중”이라고 표시되지 않아야합니다.

솔루션 소스 : https://www.codeproject.com/Tips/775607/How-to-fix-LocalDB-Requested-Login-failed