2014-11-10 4 views
1

배경 : 코드를 사용하여 기본 엔티티 프레임 워크 저장소 패턴을 만들었습니다. 그런 다음 테스트 프로젝트를 만들었고 첫 번째 단위 테스트는 데이터베이스에 대한 기본 저장소 호출을 테스트하는 것이 었습니다. 이상하게도, 나는 엔티티 프레임 워크가 내 사용자 \ myusername 디렉토리에 데이터베이스를 만들고 있다는 것을 알았다!Visual Studio Web Config - 연결 문자열에서 SQL 사용자 이름 암호를 무시합니까?

약간의 연구 끝에 나는 정의 된 사용자 이름과 암호로 SSMS를 사용하여 약간의 테스트를위한 데이터베이스를 만드는 것이 가장 좋습니다. 이 작업을 완료하고 VS 2012 내 서버 탐색기에서 만든 연결을 테스트하여 성공했습니다. 내가 이름으로 연결 문자열을 사용하여 저장소를 인스턴스화해야 내 테스트를 실행할 때

그러나
<connectionStrings> 
    <add name="TestConnection" connectionString="Data Source=.\SQLEXPRESS;User ID=DevSqlUser;Password=devsql;Initial Catalog=TestDatabase;MultipleActiveResultSets=True;Integrated Security=False;" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

는 지금, 나는 내 Windows 자격 증명을 사용하는 이상한 예외가 : 내 연결 문자열은 그대로처럼 보인다! 왜 이러는거야? 나는 단서가 없다. 나는 나의 웹 설정에서 어떤 신원 도용도 필요가 없다.

System.Data.SqlClient.SqlException : 로그인 요청한 데이터베이스 "TestConnection"을 열 수 없습니다. 로그인에 실패했습니다. '{domain} {myusername}'사용자가 로그인하지 못했습니다.

연결 문자열에 지정한 사용자 ID를 사용하지 않는 이유는 누구나 알고 계십니까?

+0

DevSqlUser가 해당 데이터베이스의 사용자로 설정되어 있습니까? – valverij

+0

해당 필드에 TestConnection을 공급 했습니까 ?? – Steve

+0

DevSqlUser가 사용자로 설정되었습니다. 서버 탐색기에서 사용자 이름과 암호를 사용하여 새 연결을 만들 수 있습니다. DbContext에서 상속받은 컨텍스트에 대한 클래스 선언에 연결 문자열의 이름을 올바르게 입력합니다. 참고 : 연결 문자열에없는 사용자 이름이 예외로 표시됩니다 (내 Windows 인증). – slek84

답변

0

SQL 익스프레스가 Windows 인증 전용으로 설정된 것 같습니다. SQL 데이터베이스의 인증 모드 설정을 살펴보십시오. Windows 인증을 사용하는 경우 사용자 이름과 암호를 제공 할 필요가 없습니다. 사용자 이름과 암호를 사용해야하는 경우 혼합 모드를 사용할 수 있습니다.

SSMS에서 데이터베이스에 연결하고 서버를 마우스 오른쪽 버튼으로 클릭 한 다음 속성을 선택하십시오. 보안 아래에서 인증 모드 설정을 볼 수 있습니다. 귀하의 필요에 따라 설정하십시오.

+0

이것은 좋았지 만 결과에 영향을 미치지 않습니다! Visual Studio에서 연결 문자열에 지정한 것 대신 Windows 자격 증명을 사용해야하는 것과 같습니다! – slek84

+0

SQL 데이터베이스의 인증 방법은 무엇입니까? – danish

+0

혼합 모드 덴마크어에 대한 귀하의 도움을 주셔서 감사합니다, 나는 그것을 변경해야했지만 그것을 테스트 프로젝트에 대한 app.config에 연결 문자열을 복사하여 작동 시켰어. 나는 내가 테스트 한 프로젝트의 연결 문자열이 사용된다는 잘못된 가정을했습니다! 내 잘못을 저질렀다. – slek84

0

대답은 당황 스럽습니다! 클래스의 모든 코드가 테스트 대상 프로젝트에 있지만 연결 문자열을 web.config에서 app.config로 복사해야했습니다. 와우, 나는 신기한 실수가 무엇인지 dumbdumb하게 느낀다. ... .Lol 나는 오늘 아침에 이것을 몇 시간 동안 휘젓고 있었다!