SqlConnection 클래스

정의

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
구현

예제

다음 예제에서는 a 및 .를 SqlCommandSqlConnection만듭니다. 이 SqlConnection 열려 있고 에 대한 것으로 Connection 설정됩니다 SqlCommand. 그런 다음 이 예제에서는 .를 호출합니다 ExecuteNonQuery. 이를 위해 ExecuteNonQuery sqlConnection 및 Transact-SQL INSERT 문인 쿼리 문자열을 전달합니다. 코드가 using 블록을 종료하면 연결이 자동으로 닫힙니다.

using System;
using System.Data;
using Microsoft.Data.SqlClient;

namespace SqlCommand_ExecuteNonQuery
{
    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 사용합니다.

인스턴스 SqlConnection를 만들면 모든 속성이 초기 값으로 설정됩니다. 이러한 값의 목록은 SqlConnection 생성자를 참조하세요.

연결 문자열 키워드 목록은 ConnectionString 참조하세요.

SqlConnection 범위를 벗어나면 닫혀 있지 않습니다. 따라서 호출하거나 Dispose.를 호출 Close 하여 연결을 명시적으로 닫아야 합니다. CloseDispose 기능적으로 동일합니다. 연결 풀링 값 Pooling 이 설정 true 되거나 yes기본 연결이 다시 연결 풀로 반환됩니다. 반면에 설정된 falseno경우 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 Data Provider 사용하는 경우 일부 설정을 수정할 수 있지만 공급자가 자동으로 관리하므로 연결 풀링을 사용하도록 설정할 필요가 없습니다. 자세한 내용은 SQL Server 연결 풀링(ADO.NET)을 참조하세요.

메서드를 SqlException 실행하여 SqlCommandSqlConnection 생성되는 경우 심각도 수준이 19 이하일 때 열린 상태로 유지됩니다. 심각도 수준이 20 이상이면 서버는 일반적으로 닫힙니다 SqlConnection. 그러나 사용자는 연결을 다시 열고 계속할 수 있습니다.

개체의 SqlConnection 인스턴스를 만드는 애플리케이션은 선언적 또는 명령적 보안 요구를 설정하여 모든 직접 및 간접 호출자가 코드에 대한 충분한 권한을 갖도록 요구할 수 있습니다. SqlConnection 는 개체를 사용하여 보안 요구 사항을 만듭니다 SqlClientPermission . 사용자는 개체를 사용하여 SqlClientPermissionAttribute 코드에 충분한 권한이 있는지 확인할 수 있습니다. 사용자 및 관리자는 Caspol.exe(코드 액세스 보안 정책 도구) 를 사용하여 컴퓨터, 사용자 및 엔터프라이즈 수준에서 보안 정책을 수정할 수도 있습니다. 자세한 내용은 .NET의 보안을 참조하세요. 보안 요구를 사용하는 방법을 보여 주는 예제는 코드 액세스 보안 및 ADO.NET 참조하세요.

서버에서 경고 및 정보 메시지를 처리하는 방법에 대한 자세한 내용은 연결 이벤트를 참조하세요. SQL Server 엔진 오류 및 오류 메시지에 대한 자세한 내용은 데이터베이스 엔진 이벤트 및 오류 참조하세요.

Caution

공유 메모리 대신 TCP를 강제 적용할 수 있습니다. 연결 문자열 서버 이름에 tcp 접두사를 추가하거나 localhost를 사용할 수 있습니다.

생성자

Name Description
SqlConnection()

SqlConnection 클래스의 새 인스턴스를 초기화합니다.

SqlConnection(String, SqlCredential)

사용하지 SqlConnection 않는 연결 문자열과 사용자 ID 및 Integrated Security = true 암호를 포함하는 개체가 지정된 클래스의 새 인스턴스 SqlCredential 를 초기화합니다.

SqlConnection(String)

연결 문자열이 포함된 문자열이 SqlConnection 제공되면 클래스의 새 인스턴스를 초기화합니다.

속성

Name Description
AccessToken

연결에 대한 액세스 토큰을 가져오거나 설정합니다.

AccessTokenCallback

연결에 대한 액세스 토큰 콜백을 가져오거나 설정합니다.

CanCreateBatch

SqlConnection 인스턴스가 클래스를 지원하는 DbBatch 지 여부를 나타내는 값을 가져옵니다.

ClientConnectionId

시도 성공 여부에 관계없이 가장 최근 연결 시도의 연결 ID입니다.

ColumnEncryptionKeyCacheTtl

Always Encrypted 기능에 대한 열 암호화 키 캐시의 열 암호화 키 항목에 대한 TL(Time to Live)을 가져오거나 설정합니다. 기본값은 2시간입니다. 0은 캐싱이 전혀 없음을 의미합니다.

ColumnEncryptionQueryMetadataCacheEnabled

Always Encrypted 사용 데이터베이스에 대해 실행되는 매개 변수가 있는 쿼리에 대해 쿼리 메타데이터 캐싱을 사용할 수 있는지(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 인스턴스의 버전을 포함하는 문자열을 가져옵니다.

SspiContextProvider

SSPI 컨텍스트를 사용자 지정하기 위한 인스턴스를 가져오거나 설정합니다 SspiContextProvider . 설정하지 않으면 플랫폼의 기본값이 사용됩니다.

State

연결에서 SqlConnection 수행된 가장 최근 네트워크 작업 중의 상태를 나타냅니다.

StatisticsEnabled

true설정하면 현재 연결에 대한 통계 수집을 사용하도록 설정합니다.

WorkstationId

데이터베이스 클라이언트를 식별하는 문자열을 가져옵니다.

메서드

Name Description
BeginTransaction()

데이터베이스 트랜잭션을 시작합니다.

BeginTransaction(IsolationLevel, String)

지정된 격리 수준 및 트랜잭션 이름을 사용하여 데이터베이스 트랜잭션을 시작합니다.

BeginTransaction(IsolationLevel)

지정된 격리 수준으로 데이터베이스 트랜잭션을 시작합니다.

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, String[])

스키마 이름에 지정된 문자열과 제한 값에 대해 지정된 문자열 배열을 사용하여 이 SqlConnection 데이터 원본에 대한 스키마 정보를 반환합니다.

GetSchema(String)

스키마 이름에 지정된 문자열을 사용하여 이 SqlConnection 데이터 원본에 대한 스키마 정보를 반환합니다.

Open()

에서 지정 ConnectionString한 속성 설정을 사용하여 데이터베이스 연결을 엽니다.

Open(SqlConnectionOverrides)

에서 지정 ConnectionString한 속성 설정을 사용하여 데이터베이스 연결을 엽니다.

OpenAsync(CancellationToken)

에 지정된 ConnectionString속성 설정과 데이터베이스 연결을 여는 비동기 버전Open()입니다. 취소 토큰을 사용하여 연결 시간 초과가 경과하기 전에 작업을 중단하도록 요청할 수 있습니다. 예외는 반환된 작업을 통해 전파됩니다. 연결 시간이 성공적으로 연결되지 않고 경과하면 반환된 작업이 예외로 오류로 표시됩니다. 구현은 풀링된 연결과 풀링되지 않은 연결 모두에 대한 호출 스레드를 차단하지 않고 Task를 반환합니다.

OpenAsync(SqlConnectionOverrides, CancellationToken)

에 지정된 ConnectionString속성 설정과 데이터베이스 연결을 여는 비동기 버전Open()입니다. 취소 토큰을 사용하여 연결 시간 초과가 경과하기 전에 작업을 중단하도록 요청할 수 있습니다. 예외는 반환된 작업을 통해 전파됩니다. 연결 시간이 성공적으로 연결되지 않고 경과하면 반환된 작업이 예외로 오류로 표시됩니다. 구현은 풀링된 연결과 풀링되지 않은 연결 모두에 대한 호출 스레드를 차단하지 않고 Task를 반환합니다.

RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>)

열 암호화 키 저장소 공급자를 등록합니다. 이 함수는 앱에서 한 번만 호출해야 합니다. 이렇게 하면 앱이 설정된 후 사용자 지정 공급자 목록을 변경할 수 없도록 사전의 단순 복사가 수행됩니다.

Windows 인증서 저장소, CNG 저장소, CSP에 사용할 수 있는 기본 제공 열 마스터 키 저장소 공급자는 미리 등록됩니다.

RegisterColumnEncryptionKeyStoreProvidersOnConnection(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>)

인스턴스에 암호화 키 저장소 공급자를 등록합니다 SqlConnection . 이 함수가 호출된 경우 정적 RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) 메서드를 사용하여 등록된 모든 공급자는 무시됩니다. 이 함수를 두 번 이상 호출할 수 있습니다. 이렇게 하면 앱이 설정된 후 사용자 지정 공급자 목록을 변경할 수 없도록 사전의 단순 복사가 수행됩니다.

ResetStatistics()

통계 수집을 사용하도록 설정하면 모든 값이 0으로 다시 설정됩니다.

RetrieveInternalInfo()

메서드가 호출되는 시점에 내부 속성의 이름 값 쌍 컬렉션을 반환합니다.

RetrieveStatistics()

메서드가 호출되는 시점에 통계의 이름 값 쌍 컬렉션을 반환합니다.

이벤트

Name Description
InfoMessage

SQL Server 경고 또는 정보 메시지를 반환할 때 발생합니다.

명시적 인터페이스 구현

Name Description
ICloneable.Clone()

현재 인스턴스의 복사본인 새 개체를 만듭니다.

적용 대상