앱에서는 SQL 로그인이 실패하지만 SSMS에서는 실패합니다.

앱에서는 SQL 로그인이 실패하지만 SSMS에서는 실패합니다.

데이터베이스에 연결하고 메시지를 표시하는 것 외에는 아무것도 수행하지 않는 간단한 테스트 애플리케이션을 C#(4.5)으로 작성했습니다. (기본적으로 배포 및 DB 연결을 테스트하기 위한 것입니다.) 내 로컬 워크스테이션에서는 모든 것이 잘 작동합니다. SQL Express 2012를 설치했고 현재 사용자(통합 보안)로 연결했는데 문제가 없었습니다.

그러나 Windows Server 2008에 배포하면 애플리케이션이 데이터베이스에 연결할 수 없습니다. 계속 로그인 실패 오류가 뜹니다.

서버에서는 SQL Express 2012에 대해 동일한 설치를 따랐습니다. 콘솔 응용 프로그램을 실행할 때 관리자로 로그인했습니다. 혼합 모드 인증을 켜고 사용자를 생성하고 해당 사용자로 연결해 보기도 했습니다. SQL Management Studio에서 연결할 수 있지만 애플리케이션에서 항상 로그인 실패 오류가 발생합니다.

Windows Server 2008에 .NET 응용 프로그램이 SQL Server에 연결할 수 있도록 수정해야 하는 숨겨진 보안 설정이 있습니까? SSMS를 통해 데이터베이스에 로그인할 수 있지만 애플리케이션을 통해서는 로그인할 수 없는 경우 이 동작의 원인은 무엇입니까?

오류:

System.Data.SqlClient.SqlException(0x80131904): 로그인에서 요청한 데이터베이스 "TestDatabase"를 열 수 없습니다. 로그인에 실패했습니다. 사용자 'sa'의 로그인에 실패했습니다.

sa당연히 이것은 테스트를 위한 최후의 노력 으로 연결을 시도했을 때 발생한 오류 버전입니다 . TestUser(이를 위해 만든 SQL 사용자)와 PERSONALSERVER\Administrator(현재 로그인하여 응용 프로그램을 실행하는 사용자) 에 대해서도 동일한 오류가 발생합니다 .

내가 시도한 연결 문자열은 다음과 같습니다.

  • Data Source=localhost\sqlexpress2012;Initial Catalog=TestDatabase;Integrated Security=True
  • Data Source=localhost\sqlexpress2012;Initial Catalog=TestDatabase;User Id=TestUser;Password=testpassword

답변1

구성 관리자에서 TCP/IP 및 명명된 파이프가 활성화되어 있는지 확인하십시오.

제어판에서 SQL Server 드라이버(관리 도구 아래) -> 데이터 소스를 사용하여 SQL 연결을 생성해 보십시오. 이렇게 하면 매우 적은 변수(예: 코드(완벽하게 작성되었다고 확신함)를 사용하여 로컬 연결을 테스트할 뿐입니다. :) ))

또한 연결 문자열을 참조하는 위치가 2군데 있습니까(저는 이렇게 했습니다). 내 app.config 파일과 내 코드의 문자열(또는 리소스 문자열)로 저장되었습니다.

컴퓨터 이름 대신 IP 주소를 통해 연결합니다. 이는 연결 문자열도 업데이트한다는 의미입니다. 자세한 방법은 이 게시물 하단에 나와 있습니다.

마지막으로 연결 문자열을 다음으로 업데이트합니다.

데이터 소스=.\sqlexpress2012; 초기 카탈로그=TestDatabase; 통합 보안=SSPI; 사용자 ID=myDomain\myUsername; 비밀번호=내 비밀번호;

또는 다음과 같이 시도해 보세요.

서버=.\sqlexpress2012; 데이터베이스=테스트데이터베이스; Trusted_Connection=참;

사용자가 문제의 데이터베이스에 대한 효율적인 권한을 가지고 있다고 가정하겠습니다. :)

SQL 포트(일반적으로 1433 및 1434)가 열려 있는지 확인하십시오.

사용자 이름/비밀번호로 SSMS에 로그인하여 권한이 있는지 확인하세요.

www.ConnectionStrings.com- 연결 문자열을 위한 훌륭한 리소스입니다! :)

관련 정보