2017-12-07 20 views
0

C# SqlConnection 클래스를 사용하여 연결을 시도하는 호스팅 서버에 데이터베이스가 있습니다. 문제없이 SQL Server 인증을 사용하여 SQL Server Management Studio를 통해 서버에 로그온 할 수 있습니다.C#을 사용하여 온라인 SQL Server에 로그온하면 "사용자가 로그인하지 못했습니다 ..."?

내 개시 코드는 다음과 같습니다 : 데이터베이스 이름, 사용자 이름과 암호를 적절한 값으로 대체됩니다

public static string ConnectionString { get; set; } 

public Constructor() { 
    ConnectionString = @"Data source=SQL6002.site4now.net;Initial Catalog=myDatabase;User Id=MyUserName;Password=MyPassword;"; 
} 

. 연결 코드는 다음과 같습니다.

using (SqlConnection con = new SqlConnection(ConnectionString)) 
{ 
    con.Open(); 
    ... 
} 

이 코드는 로컬 db 연결 문자열을 사용할 때 작동합니다. 그러나 위의 연결 문자열을 사용하면 오류가 발생합니다.

오류가 발생했습니다. 사용자 'IFC \ WINxxxx $'에 대한 로그인에 실패했습니다.

예외 유형 : System.Data.SqlClient.SqlException System.Data.SqlClient.SqlInternalConnectionTds..ctor (DbConnectionPoolIdentity 신원, 등등에
스택 트레이스

여기서 사용자의 X 이름은 숫자이며 또한 연결 문자열에서 사용하는 사용자 이름이 아닙니다.

신뢰할 수있는 연결 = true를 추가하려고했지만 통합 보안 = true가 성공하지 못했습니다.

SQL Server Management Studio를 통해 서버에 로그온하고 보안 -> 로그인 -> MyUserName에서 속성을 열면 암호가 SSMS에 로그온 할 때 사용한 것과 길이가 같지 않습니다. 나는 호스트를 통해서만, smarterasp.net SSMS를 통해 그것을 변경할 수있는 권한이 없습니다.

모든 입력을 환영합니다!

+0

위의 연결 문자열에서와 같이 사용자가 'MyUserName'이 아니라'IFC \\ WINxxxx $'라고 생각한다는 오류가 표시됩니다. 통합 로그인 (예 : Windows 인증)을 사용하는 것처럼 보이며 SQL 로그인이 아닙니다. – Yuck

+0

'Trusted_Connection = True; 및'integrated security = true' - 서버에 Windows 인증을 사용하도록 **, ** ** 원하지 않는 것을 말합니다. – stuartd

+0

Stuartd : 두 대의 PC 사이를 연결하기 위해 Windows 자격 증명이 필요합니다 . SQL을 사용하거나 사용하지 않고 연결을 완료하려면 두 PC가 동일한 그룹에 있어야합니다. Windows 자격 증명을 사용하지 않으면 게스트 권한이 있고 데이터베이스에 대한 게스트 액세스를 허용해야합니다. – jdweng

답변

0

의견을 보내 주셔서 감사합니다. 나는

암호가 읽기 전용 SecureString입니다
var credentials = new SqlCredentials(userName, password); 
using (var con = new SqlConnection(ConnectionString, credentials){ 
    con.Open(); 
} 

()로, SqlCredentials의 인스턴스에 자격 증명을 움직였다. 그 트릭을 했어!