응용 프로그램에서 Azure SQL Database“사용자 로그인 실패”, SSMS에서 제대로 작동


14

Azure SQL Database V12 에서 포함 된 데이터베이스 사용자 기능 을 사용 해보고 싶었지만 인증에 문제가있어 이상한 것 같습니다.

라는 데이터베이스를 만들었습니다 Classifier. 내 IP를 방화벽 규칙에 추가하여 워크 스테이션의 SSMS에서 Azure db 서버에 연결할 수 있습니다. 관리를 위해 SSMS를 통해 연결되면 다음과 같이 데이터베이스에 비밀번호가있는 사용자를 추가하려고했습니다.

CREATE USER classifier WITH PASSWORD='thepassword'

또한이 사용자를 데이터 작성기 및 독자 역할에 추가했습니다.

exec sp_addrolemember 'db_datawriter', 'classifier'
exec sp_addrolemember 'db_datareader', 'classifier'

그런 다음 SSMS에서 다음 자격 증명을 사용하여 데이터베이스에 연결할 수 있습니다.

여기에 이미지 설명을 입력하십시오

그러나 이것은 문제가되는 곳입니다. 여러 가지 다른 연결 문자열 주문을 시도했지만 현재 작업중 인 웹 응용 프로그램에서 연결할 수없는 것 같습니다. Azure 환경에서는 작동하지 않았으므로 Azure 데이터베이스에 대한 연결 문자열로 localhost에서 실행 중이며 연결되지 않습니다. 현재 사용중인 연결 문자열은 다음과 같습니다.

<add name="Classifier" connectionString="Data Source=xxxxxxx.database.secure.windows.net;Initial Catalog=Classifier;User ID=classifier;Password=xxxxxxxxxxxxx;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" providerName="System.Data.SqlClient"/>

사용자의 암호를 재설정하고 (SSMS를 통해) 연결 문자열을 업데이트하려고했습니다. 또한이 연결 문자열과 SSMS의 연결 대화 상자에 암호를 복사하여 오타가 없는지 확인하여 암호를 다시 확인했습니다.

실패 이유에 대한 세부 정보를 얻기를 희망하면서 Azure DB 서버에서 감사를 활성화했지만 얻을 수있는 것은 다음과 같습니다.

오류 18456, 수준 14, 상태 1, 서버 SQL Azure, 1 행 사용자 '분류 자'에 대한 로그인이 실패했습니다.

그리고 이것은 내가 붙어있는 곳입니다. 내가 문서 나 블로그를 통해 찾을 수 있었던 대부분은 SQL Server 로그를보고 실제 오류 상태가 실패의 성격을보다 좁게 나타내는 것이 무엇인지 확인하는 것입니다. 'Azure를 다루는 방법은 없습니다 (아는 한).

SSMS (및 LinqPad 및 Visual Studio Server Explorer가 우연히 성공)에서 응용 프로그램이 실패하는 원인은 무엇입니까?

답변:


15

포함 된 데이터베이스 / 포함 된 사용자의 경우 다음을 지정해야합니다.

GRANT CONNECT TO [YOUR_USER]

그렇지 않으면 CONNECT기본적으로 취소 된 것 같습니다. 위와 같이 변경하면 데이터베이스에 액세스 할 수 있습니다.


작동중인 기존 계정이 있었고 작동을 멈췄습니다. 나는 그것에 다시 연결을 부여했다.
Shane Courtrille

Azure Cannot find the user 'myuser', because it does not exist or you do not have permission.에서 사용자 이름이 보안> 로그인에는 있지만 MyDatabse> 보안> 사용자에는 없지만 오류가 발생 합니다. 시도 CREATE USER [myuser] FOR LOGIN [myuser] WITH DEFAULT_SCHEMA=[mydb] GO했지만 오류가 발생했습니다The login already has an account under a different user name.
Korayem

나는 비슷한 문제가 있었다. 개발 환경에서는 모든 것이 SQL Azure에 연결되어 작동하지만 일단 게시되면 해당 오류가 발생합니다. 그러나 나는 명령을 실행하거나 사용자를 만들 수 없으며 누군가 다른 것을 시도하고 있습니까?
Ricker Silva 2016

@ dezso 비슷한 문제에 직면하고 있습니다. 내 ADO.NET 및 EF (DBContext) 코드는 로컬 컴퓨터에서 잘 작동하지만 (Azure에서는 시도하지 않았 음) IdentityDBConext를 사용하여 구현 된 EF 코드는 실패합니다. 무엇이 잘못되었거나 IdentityDBConext의 어떤 기능이 서버에 액세스해야하는지 잘 모르겠습니다. 내 원래 질문 stackoverflow.com/questions/40260720/…
Hiren Desai

5

포함 된 새로운 사용자를 통해 Azure 데이터베이스에 연결하도록 API를 전환 할 때 다음을 포함하도록 연결 문자열을 변경해야했습니다.

Persist Security Info=True;

이 변경이 왜 필요한지 이해하지 못하지만 앞으로 다른 사람을 도울 수 있도록 여기에 게시하고 싶었습니다.

우리는 원래이 질문 에서 이것을 시도 했다 .


2

내 문제는 달랐지만 관련이 있습니다 . 포함 된 사용자 와 함께 SSMS (SQL Server Management Studio)를 사용하여 Azure SQL 데이터베이스에 연결하려고했습니다 . SSMS에서 "사용자 로그인 실패"메시지가 나타납니다.

해결 방법 : 쿼리 창의 SSMS 연결 옵션에서 "데이터베이스에 연결"을 연결하려는 데이터베이스 이름으로 설정했습니다.

설명 : 이유는 분명합니다. 포함 된 사용자는 자신이 작성된 데이터베이스에만 연결할 수 있습니다.


다운 투표를 설명 할까?
Vince Horst

1
내가 아니었을 수도 있지만 아마도 당신의 대답이 질문과 반대되는 것이기 때문일 것입니다. 그래도 여전히 유용하며 SSMS 대화 상자의 나쁜 디자인 덕분에 쉽게 실수 할 수 있습니다!
Simon_Weaver

0

암호에 다음이 포함 된 경우 연결 문자열이 포함 된 Powershell 명령을 실행하는 경우 발생할 수 있습니다 $. 작은 따옴표로 연결 문자열을 묶거나 처음부터 연결 문자열에 비밀번호를 저장하지 않으면이 문제를 해결할 수 있습니다. ;-)

예 : 나는 Scaffold-DbContext명령 으로 이것을 만났다.

https://github.com/aspnet/EntityFrameworkCore/issues/6624

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.