SqlConnection 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
SQL Server 데이터베이스에 대한 연결을 나타냅니다. 이 클래스는 상속될 수 없습니다.
public ref class SqlConnection sealed : System::Data::Common::DbConnection, ICloneable
public sealed class SqlConnection : System.Data.Common.DbConnection, ICloneable
type SqlConnection = class
inherit DbConnection
interface ICloneable
Public NotInheritable Class SqlConnection
Inherits DbConnection
Implements ICloneable
- 상속
-
SqlConnection
- 구현
예제
다음 예제에서는 및 를 SqlCommandSqlConnection만듭니다. SqlConnection 열고로 설정 합니다 Connection 에 대 한는 SqlCommand. 그런 다음, 이 예제에서는 를 호출합니다 ExecuteNonQuery. 이 수행 하는 ExecuteNonQuery 연결 문자열 및 TRANSACT-SQL INSERT 문 쿼리 문자열로 전달 됩니다. 코드가 using 블록을 종료하면 연결이 자동으로 닫힙니다.
using System;
using System.Data;
using Microsoft.Data.SqlClient;
namespace SqlCommandCS
{
class Program
{
static void Main()
{
string str = "Data Source=(local);Initial Catalog=Northwind;"
+ "Integrated Security=SSPI";
string qs = "SELECT OrderID, CustomerID FROM dbo.Orders;";
CreateCommand(qs, str);
}
private static void CreateCommand(string queryString,
string connectionString)
{
using (SqlConnection connection = new SqlConnection(
connectionString))
{
SqlCommand command = new SqlCommand(queryString, connection);
command.Connection.Open();
command.ExecuteNonQuery();
}
}
}
}
설명
개체는 SqlConnection SQL Server 데이터 원본에 대한 고유한 세션을 나타냅니다. 클라이언트/서버 데이터베이스 시스템을 사용하면 서버에 대한 네트워크 연결과 동일합니다. SqlConnection은 및 와 SqlDataAdapterSqlCommand 함께 사용되어 Microsoft SQL Server 데이터베이스에 연결할 때 성능을 향상합니다. 모든 타사 SQL Server 제품 및 기타 OLE DB 지원 데이터 원본의 경우 를 사용합니다OleDbConnection.
의 SqlConnectioninstance 만들면 모든 속성이 초기 값으로 설정됩니다. 이러한 값의 목록을 보려면 참조는 SqlConnection 생성자입니다.
연결 문자열 키워드 목록은 를 참조하세요ConnectionString.
가 SqlConnection scope 나가면 닫혀 있지 않습니다. 따라서 또는 Dispose
를 호출 Close
하여 연결을 명시적으로 닫아야 합니다. Close
및 Dispose
는 기능적으로 동일합니다. 연결 풀링 값 Pooling
이 또는 yes
로 true
설정된 경우 기본 연결이 연결 풀로 다시 반환됩니다. 반면, 가 또는 no
로 false
설정된 경우 Pooling
서버에 대한 기본 연결이 실제로 닫힙니다.
참고
연결이 연결 풀에서 반환될 경우에는 실제로 해제된 것이 아니므로 연결이 연결 풀에서 반입되거나 연결 풀로 반환되는 경우 서버에서 로그인 및 로그아웃 이벤트가 발생하지 않습니다. 자세한 내용은 SQL Server 연결 풀링(ADO.NET)을 참조하세요.
연결이 항상 닫혀 있는지 확인하려면 다음 코드 조각과 같이 블록 내에서 using
연결을 엽니다. 이렇게 하면 코드가 블록을 종료할 때 연결이 자동으로 닫힙니다.
Using connection As New SqlConnection(connectionString)
connection.Open()
' Do work here; connection closed on following line.
End Using
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// Do work here; connection closed on following line.
}
참고
고성능 애플리케이션을 배포 하려면 연결 풀링을 사용 해야 합니다. SQL Server .NET Framework 데이터 공급자를 사용하는 경우 일부 설정을 수정할 수 있지만 공급자가 자동으로 관리하므로 연결 풀링을 사용하도록 설정할 필요가 없습니다. 자세한 내용은 SQL Server 연결 풀링(ADO.NET)을 참조하세요.
SqlException 가 를 실행하는 SqlCommandSqlConnection 메서드에 의해 생성되는 경우 심각도 수준이 19 이하일 때 가 열린 상태로 유지됩니다. 심각도 수준이 20 이상인 경우 서버는 일반적으로 를 닫습니다 SqlConnection. 그러나 사용자는 연결을 다시 열고 계속할 수 있습니다.
인스턴스를 만드는 애플리케이션을 SqlConnection 개체는 모든 직접 및 간접 호출자가 선언적 또는 명령적 보안이 요구를 설정 하 여 코드에 충분 한 권한이 필요할 수 있습니다. SqlConnection 는 개체를 사용하여 보안 요구 사항을 만듭니다 SqlClientPermission . 사용자는 개체를 사용하여 SqlClientPermissionAttribute 코드에 충분한 권한이 있는지 확인할 수 있습니다. 사용자 및 관리자는 Caspol.exe(코드 액세스 보안 정책 도구) 를 사용하여 컴퓨터, 사용자 및 엔터프라이즈 수준에서 보안 정책을 수정할 수도 있습니다. 자세한 내용은 .NET의 보안을 참조하세요. 보안 요구를 사용하는 방법을 보여 주는 예제는 코드 액세스 보안 및 ADO.NET 참조하세요.
서버에서 경고 및 정보 메시지를 처리하는 방법에 대한 자세한 내용은 연결 이벤트를 참조하세요. SQL Server 엔진 오류 및 오류 메시지에 대한 자세한 내용은 데이터베이스 엔진 이벤트 및 오류를 참조하세요.
주의
공유 메모리 대신 TCP를 강제 적용할 수 있습니다. tcp: 를 연결 문자열 서버 이름에 접두사로 추가하거나 localhost를 사용할 수 있습니다.
생성자
SqlConnection() |
SqlConnection 클래스의 새 인스턴스를 초기화합니다. |
SqlConnection(String) |
연결 문자열을 포함한 문자열이 제공된 경우 SqlConnection 클래스의 새 인스턴스를 초기화합니다. |
SqlConnection(String, SqlCredential) |
연결 문자열이 지정되면 SqlConnection 클래스의 새 인스턴스를 초기화합니다. 연결 문자열은 사용자 ID와 암호를 포함하는 |
속성
AccessToken |
연결용 액세스 토큰을 가져오거나 설정합니다. |
AccessTokenCallback |
연결에 대한 액세스 토큰 콜백을 가져오거나 설정합니다. |
CanCreateBatch |
이 SqlConnection 인스턴스가 DbBatch 클래스를 지원하는지를 나타내는 값을 가져옵니다. |
ClientConnectionId |
연결 시도 성공 또는 실패 여부와 관계없이 가장 최근에 연결 시도된 연결 ID입니다. |
ColumnEncryptionKeyCacheTtl |
항상 암호화 기능에 대한 열 암호화 키 캐시에 있는 열 암호화 키 항목에 대한 Time-To-Live를 가져오거나 설정합니다. 기본값은 2시간입니다. 0은 캐싱이 전혀 수행되지 않음을 의미합니다. |
ColumnEncryptionQueryMetadataCacheEnabled |
항상 암호화가 설정된 데이터베이스에 대해 실행되는 매개 변수가 있는 쿼리에 대해 쿼리 메타데이터 캐싱이 사용되도록 설정(true)되는지 또는 사용되지 않도록 설정(false)되는지를 나타내는 값을 가져오거나 설정합니다. 기본값은 true입니다. |
ColumnEncryptionTrustedMasterKeyPaths |
데이터베이스 서버에 대해 신뢰할 수 있는 키 경로 목록을 설정할 수 있습니다. 애플리케이션 쿼리를 처리하는 동안 드라이버가 목록에 없는 키 경로를 수신하면 쿼리가 실패합니다. 이 속성은 손상된 SQL Server가 가짜 키 쌍을 제공하여 키 저장소 자격 증명을 유출하는 보안 공격에 대한 추가 보호를 제공합니다. |
CommandTimeout |
명령 실행 시도를 종료하고 오류를 생성하기 전의 기본 대기 시간(초)을 가져옵니다. 기본값은 30초입니다. |
ConnectionString |
SQL Server 데이터베이스를 여는 데 사용되는 문자열을 가져오거나 설정합니다. |
ConnectionTimeout |
시도를 종료하고 오류를 생성하기 전에 연결하는 동안 대기할 시간을 가져옵니다. |
Credential |
이 연결에 대해 SqlCredential 개체를 가져오거나 설정합니다. |
Database |
현재 데이터베이스 이름이나 연결이 열린 후 사용할 데이터베이스의 이름을 가져옵니다. |
DataSource |
연결할 SQL Server 인스턴스의 이름을 가져옵니다. |
FireInfoMessageEventOnUserErrors |
FireInfoMessageEventOnUserErrors 속성을 가져오거나 설정합니다. |
PacketSize |
SQL Server의 인스턴스와 통신하는 데 사용하는 네트워크 패킷의 크기(바이트)를 가져옵니다. |
RetryLogicProvider |
이 명령에 바인딩된 SqlRetryLogicBaseProvider 개체를 지정하는 값을 가져오거나 설정합니다. |
ServerProcessId |
활성 연결의 SPID(서버 프로세스 ID)를 가져옵니다. |
ServerVersion |
클라이언트가 연결될 SQL Server 인스턴스의 버전을 포함한 문자열을 가져옵니다. |
State |
연결에 수행된 최근 네트워크 작업 중 SqlConnection의 상태를 나타냅니다. |
StatisticsEnabled |
|
WorkstationId |
데이터베이스 클라이언트를 식별하는 문자열을 가져옵니다. |
메서드
BeginTransaction() |
데이터베이스 트랜잭션을 시작합니다. |
BeginTransaction(IsolationLevel) |
지정된 격리 수준으로 데이터베이스 트랜잭션을 시작합니다. |
BeginTransaction(IsolationLevel, String) |
지정된 격리 수준과 트랜잭션 이름으로 데이터베이스 트랜잭션을 시작합니다. |
BeginTransaction(String) |
지정된 트랜잭션 이름으로 데이터베이스 트랜잭션을 시작합니다. |
ChangeDatabase(String) |
열려 있는 SqlConnection의 현재 데이터베이스를 변경합니다. |
ChangePassword(String, SqlCredential, SecureString) |
SqlCredential 개체에 지정된 사용자에 대한 SQL Server 암호를 변경합니다. |
ChangePassword(String, String) |
연결 문자열에 지정된 사용자의 SQL Server 암호를 제공된 새 암호로 변경합니다. |
ClearAllPools() |
연결 풀을 비웁니다. |
ClearPool(SqlConnection) |
지정된 연결과 관련된 연결 풀을 비웁니다. |
Close() |
데이터베이스에 대한 연결을 닫습니다. 열린 연결을 닫기 위해 기본적으로 이 메서드를 사용합니다. |
CreateCommand() |
SqlConnection과 연결된 SqlCommand 개체를 만들고 반환합니다. |
EnlistDistributedTransaction(ITransaction) |
지정된 트랜잭션에 분산 트랜잭션으로 참여합니다. |
EnlistTransaction(Transaction) |
지정된 트랜잭션에 분산 트랜잭션으로 참여합니다. |
GetSchema() |
이 SqlConnection의 데이터 소스에 대한 구성표 정보를 반환합니다. 구성표에 대한 자세한 내용은 SQL Server 구성표 컬렉션을 참조하세요. |
GetSchema(String) |
스키마 이름에 대해 지정된 문자열을 사용하여 이 SqlConnection의 데이터 소스에 대한 스키마 정보를 반환합니다. |
GetSchema(String, String[]) |
스키마 이름에 대해 지정된 문자열과 제한 값에 대해 지정된 문자열 배열을 사용하여 이 SqlConnection의 데이터 소스에 대한 스키마 정보를 반환합니다. |
Open() |
ConnectionString로 지정된 속성 설정을 사용하여 데이터베이스 연결을 엽니다. |
Open(SqlConnectionOverrides) |
ConnectionString로 지정된 속성 설정을 사용하여 데이터베이스 연결을 엽니다. |
OpenAsync(CancellationToken) |
Open()으로 지정된 속성 설정을 사용하여 데이터베이스 연결을 여는 ConnectionString의 비동기 버전입니다. 취소 토큰은 연결 제한 시간이 경과하기 전에 작업을 중단하는 요청에 사용할 수 있습니다. 예외는 반환된 작업을 통해 전파됩니다. 연결하지 못하고 연결 제한 시간이 경과하는 경우 반환된 작업이 예외와 함께 오류가 발생한 것으로 표시됩니다. 구현은 풀링된 연결 및 풀링되지 않은 연결에 대한 호출 스레드를 차단하지 않고 Task를 반환합니다. |
RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) |
사용자 지정 암호화 키 저장소 공급자를 등록합니다. 이 함수는 앱에서 한 번만 호출해야 합니다. 이렇게 하면 앱이 설정된 후 사용자 지정 공급자 목록을 변경할 수 없도록 사전의 단순 복사가 수행됩니다. Windows 인증서 저장소, CNG 저장소, CSP에 사용할 수 있는 기본 제공 열 마스터 키 저장소 공급자는 미리 등록됩니다. |
RegisterColumnEncryptionKeyStoreProvidersOnConnection(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) |
instance 암호화 키 저장소 공급자를 SqlConnection 등록합니다. 이 함수가 호출된 경우 정적 RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) 메서드를 사용하여 등록된 모든 공급자는 무시됩니다. 이 함수를 두 번 이상 호출할 수 있습니다. 이렇게 하면 앱이 설정된 후 사용자 지정 공급자 목록을 변경할 수 없도록 사전의 단순 복사가 수행됩니다. |
ResetStatistics() |
통계 수집을 활성화하면 모든 값이 0으로 다시 설정됩니다. |
RetrieveInternalInfo() |
메서드가 호출되는 시점에 내부 속성의 이름 값 쌍 컬렉션을 반환합니다. |
RetrieveStatistics() |
메서드가 호출된 시점에서 통계의 이름 값 쌍 컬렉션을 반환합니다. |
이벤트
InfoMessage |
SQL Server에서 경고나 정보 메시지를 반환할 때 발생합니다. |
명시적 인터페이스 구현
ICloneable.Clone() |
현재 인스턴스의 복사본인 새 개체를 만듭니다. |