연결 문자열 구문
적용 대상: .NET Framework .NET .NET Standard
Microsoft.Data.SqlClient에는 공급자별 ConnectionString 속성뿐만 아니라 DbConnection에서 상속되는 Connection
개체가 있습니다. SqlClient 공급자의 특정 연결 문자열 구문은 해당 ConnectionString
속성에 설명되어 있습니다. 연결 문자열 구문에 대한 자세한 내용은 ConnectionString을 참조하세요.
연결 문자열 빌더
Microsoft SqlClient 데이터 공급자 의 경우 SQL Server는 다음 연결 문자열 작성기를 도입했습니다.
연결 문자열 작성기를 사용하면 구문이 올바른 연결 문자열을 런타임에 작성할 수 있기 때문에 코드에 연결 문자열 값을 직접 연결하지 않아도 됩니다. 자세한 내용은 연결 문자열 작성기를 참조하세요.
Windows 인증
Windows 인증(통합 보안이라고도 함)을 사용하여 Windows 인증을 지원하는 데이터 원본에 연결하는 것이 좋습니다. 다음 표에서는 Microsoft SqlClient 데이터 공급자 의 경우 SQL Server와 함께 사용되는 Windows 인증 구문을 보여 줍니다.
공급자 | 구문 |
---|---|
SqlClient |
Integrated Security=true; -- or -- Integrated Security=SSPI; |
SqlClient 연결 문자열
SqlConnection 연결 문자열의 구문은 SqlConnection.ConnectionString 속성에 설명되어 있습니다. ConnectionString 속성을 사용하면 SQL Server 데이터베이스에 대한 연결 문자열을 가져오거나 설정할 수 있습니다. 연결 문자열 키워드는 SqlConnectionStringBuilder의 속성에도 매핑됩니다.
Important
Persist Security Info
키워드의 기본 설정은 false
입니다. 이 키워드를 true
또는 yes
로 설정하면 연결이 열린 다음 연결에서 사용자 ID 및 암호와 같은 보안 관련 정보를 얻을 수 있습니다. Persist Security Info
를 false
로 설정하면 신뢰할 수 없는 소스가 중요한 연결 문자열 정보에 액세스할 수 없습니다.
SqlClient를 사용한 Windows 인증
다음 구문 형식은 각각 Windows 인증을 사용하여 로컬 서버의 AdventureWorks 데이터베이스에 연결합니다.
"Persist Security Info=False;Integrated Security=true;
Initial Catalog=AdventureWorks;Server=MSSQL1;Encrypt=True;"
"Persist Security Info=False;Integrated Security=SSPI;
database=AdventureWorks;server=(local);Encrypt=True;"
"Persist Security Info=False;Trusted_Connection=True;
database=AdventureWorks;server=(local);Encrypt=True;"
SqlClient를 사용한 SQL Server 인증
SQL Server에 연결하기 위해 기본적으로 Windows 인증이 사용됩니다. 그러나 SQL Server 인증이 필요한 경우 다음 구문을 사용하여 사용자 이름과 암호를 지정하세요.
"Persist Security Info=False;User ID=<user name>;Password=<password>;Initial Catalog=AdventureWorks;Server=MySqlServer;Encrypt=True;"
Azure SQL Database 또는 Azure Synapse Analytics에 연결하고 user@servername
형식으로 사용자 이름을 제공하는 경우 로그인의 servername
값이 Server=
에 대해 제공된 값과 일치하는지 확인합니다.
참고 항목
Windows 인증은 SQL Server 로그인에 우선적으로 적용됩니다. Integrated Security=true와 사용자 이름 및 암호를 모두 지정하는 경우 사용자 이름과 암호는 무시되고 Windows 인증이 사용됩니다.
SQL Server의 명명된 인스턴스에 연결
SQL Server의 명명된 인스턴스에 연결하려면 server name\instance name 구문을 사용합니다.
"Data Source=MySqlServer\MSSQL1;"
연결 문자열을 작성할 때 DataSource의 SqlConnectionStringBuilder
속성을 인스턴스 이름으로 설정할 수도 있습니다. DataSource 개체의 SqlConnection 속성은 읽기 전용입니다.
Type System Version 변경 내용
SqlConnection.ConnectionString 내의 Type System Version
키워드는 SQL Server 형식의 클라이언트 측 표현을 지정합니다. Type System Version
키워드 사용에 관한 자세한 내용은 SqlConnection.ConnectionString을 참조하세요.
SQL Server Express 사용자 인스턴스에 연결
사용자 인스턴스는 SQL Server Express의 한 기능입니다. 최소 권한의 로컬 Windows 계정에서 실행 중인 사용자가 관리자 권한 없이 SQL Server 데이터베이스에 연결하여 SQL Server 데이터베이스를 실행할 수 있습니다. 사용자 인스턴스는 서비스가 아닌 사용자의 Windows 자격 증명을 사용하여 실행됩니다.
사용자 인스턴스 작업에 대한 자세한 내용은 SQL Server Express 사용자 인스턴스를 참조하세요.
TrustServerCertificate 사용
TrustServerCertificate
키워드는 SQL Server 인스턴스에 연결할 때 사용됩니다. TrustServerCertificate
이 true
로 설정된 경우 전송 계층에서는 TLS/SSL을 사용하여 채널을 암호화하고 인증서 체인을 무시하여 신뢰의 유효성을 확인합니다.
- Microsoft.Data.SqlClient 2.0 이전 버전에서는
Encrypt
가False
로 설정된 경우 이 설정이 무시되고 서버 인증서의 유효성이 검사되지 않습니다. - Microsoft.Data.SqlClient 버전 2.0부터
Encrypt
가False
로 설정된 경우에도 서버가 암호화를 강제하는 경우 설정이 인증서 유효성 검사가 수행되는지 여부를 제어합니다. - Microsoft.Data.SqlClient 버전 5.0부터
Encrypt
가Strict
로 설정된 경우 이 설정이 무시됩니다. 서버 인증서는 항상Strict
모드에서 유효성을 검사합니다.
자세한 내용은 암호화 및 인증서 유효성 검사를 참조하세요.
"TrustServerCertificate=true;"
HostNameInCertificate
Microsoft.Data.SqlClient 버전 5.0부터 HostNameInCertificate는 새로운 연결 옵션입니다. 서버 인증서 유효성 검사는 인증서의 CN(일반 이름) 또는 SAN(주체 대체 이름)이 연결되는 서버 이름과 일치하는지 확인합니다. DNS 별칭과 같은 경우에 서버 이름이 CN 또는 SAN과 일치하지 않을 수 있습니다. HostNameInCertificate 값을 사용하여 서버 인증서에서 다른 예상 CN 또는 SAN을 지정할 수 있습니다.
"HostNameInCertificate=myserver.example.com"
ServerCertificate
Microsoft.Data.SqlClient 버전 5.1부터 ServerCertificate
는 새로운 연결 옵션입니다. ServerCertificate
연결 설정의 기본값은 빈 문자열입니다. Encrypt
가 Mandatory
또는 Strict
로 설정된 경우 ServerCertificate
는 서버의 TLS 인증서와 일치하는 인증서 파일에 대한 파일 시스템 경로를 지정하는 데 사용할 수 있습니다. 인증서가 유효하려면 지정된 인증서가 정확히 일치해야 합니다. 허용되는 인증서 형식은 PEM, DER 및 CER입니다. 예를 들어 다음과 같습니다.
"Data Source=...;Encrypt=Strict;ServerCertificate=C:\certificates\server.cer"
암호화 사용
인증서가 서버에서 프로비전되지 않은 경우에 암호화를 사용하도록 설정하려면 Trust Server Certificate 연결 속성을 True
로 설정해야 합니다. 이 경우 확인할 수 있는 인증서가 서버에 제공되지 않았으므로 암호화는 유효성 검사 없이 자체 서명된 서버 인증서를 사용합니다.
애플리케이션 설정에서 SQL Server에 구성된 보안 수준을 낮출 수는 없지만 선택적으로 높일 수는 있습니다. 애플리케이션에서는 TrustServerCertificate
및 Encrypt
키워드를 true
로 설정하여 암호화를 요청할 수 있으므로, 서버 인증서가 프로비전되지 않은 경우에도 암호화가 설정됩니다. 그러나 TrustServerCertificate
이 클라이언트 구성에서 사용하도록 설정되지 않은 경우 프로비저닝된 서버 인증서가 여전히 필요합니다.
다음 표에는 가능한 모든 경우가 설명되어 있습니다.
연결 문자열/특성 암호화 | 서버 인증서 신뢰 연결 문자열/특성 | 결과 |
---|---|---|
아니요/선택 사항 | 무시됨 | 암호화가 수행되지 않습니다. |
예/필수 | 아니요 | 확인할 수 있는 서버 인증서가 있는 경우에만 암호화가 수행되고 그렇지 않으면 연결 시도가 실패합니다. |
예/필수 | 예 | 항상 암호화가 수행되지만 자체 서명된 서버 인증서가 사용될 수 있습니다. |
Strict1 | 무시됨 | 암호화는 항상 발생하며 확인할 수 있는 서버 인증서를 사용해야 합니다. 그렇지 않으면 연결 시도가 실패합니다. |
1 Strict 암호화는 Microsoft.Data.SqlClient 버전 5.0부터만 사용할 수 있습니다.
이전 버전의 동작을 비롯한 자세한 내용은 암호화 및 인증서 유효성 검사를 참조하세요.
참고 항목
연결 문자열
암호화 및 인증서 유효성 검사
데이터 원본에 연결
Microsoft ADO.NET for SQL Server