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
Реализации

Примеры

В следующем примере создается SqlCommand и a SqlConnection. Откроется SqlConnection и задано значение Connection для SqlCommandпараметра . Затем в примере вызывается ExecuteNonQuery. Для этого ExecuteNonQuery передается sqlConnection и строка запроса, которая является инструкцией INSERT Transact-SQL. Подключение закрывается автоматически при выходе кода из блока 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 используется вместе с SqlDataAdapter и SqlCommand для повышения производительности при подключении к база данных Microsoft SQL Server. Для всех сторонних продуктов SQL Server и других источников данных, поддерживаемых OLE DB, используйте OleDbConnection.

При создании экземпляра все свойства задаются для их начальных значений SqlConnection. Список этих значений см. в конструкторе SqlConnection .

Список ключевых слов в строка подключения см. в разделе ConnectionString.

SqlConnection Если область выходит из области, она не будет закрыта. Таким образом, необходимо явно закрыть подключение путем вызова Close или Disposeвызова. Close и Dispose функционально эквивалентны. Если для пула Pooling подключений задано true значение или yesзначение базового подключения возвращается обратно в пул подключений. С другой стороны, если Pooling задано false значение или no, базовое подключение к серверу фактически закрывается.

Замечание

События входа в систему и выхода из системы не вызываются на сервере при выборке подключения из пула подключений и при возврате его в пул подключений, поскольку при возврате в пул подключений подключение фактически не закрывается. Дополнительные сведения см. в разделе Объединение подключений в пул в 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.  
}  

Замечание

Чтобы развернуть высокопроизводительные приложения, необходимо использовать пул подключений. При использовании Data Provider платформы .NET для SQL Server не требуется включить пул подключений, так как поставщик управляет этим автоматически, хотя можно изменить некоторые параметры. Дополнительные сведения см. в разделе Объединение подключений в пул в SQL Server (ADO.NET).

SqlException Если метод создает методSqlCommand, SqlConnection остается открытым, если уровень серьезности равен 19 или меньше. Если уровень серьезности равен 20 или больше, сервер, как правило, закрывается SqlConnection. Однако пользователь может повторно открыть подключение и продолжить.

Приложение, создающее экземпляр объекта, может требовать от всех прямых SqlConnection и косвенных вызывающих объектов достаточно разрешений на код, задав декларативные или императивные требования к безопасности. SqlConnection создает требования к безопасности с помощью SqlClientPermission объекта. Пользователи могут убедиться, что код имеет достаточные разрешения с помощью SqlClientPermissionAttribute объекта. Пользователи и администраторы также могут использовать Caspol.exe (средство политики безопасности доступа к коду) для изменения политики безопасности на компьютере, пользователей и корпоративных уровнях. Дополнительные сведения см. в разделе "Безопасность" в .NET. Пример использования требований к безопасности см. в разделе "Безопасность доступа к коду" и ADO.NET.

Дополнительные сведения об обработке предупреждений и информационных сообщений с сервера см. в разделе "События подключения". Дополнительные сведения об ошибках и сообщениях об ошибках ядра SQL Server см. в разделе ядро СУБД События и ошибки.

Осторожность

Вы можете принудительно использовать TCP вместо общей памяти. Это можно сделать, префиксируя tcp: имя сервера в строка подключения или использовать localhost.

Конструкторы

Имя Описание
SqlConnection()

Инициализирует новый экземпляр класса SqlConnection.

SqlConnection(String, SqlCredential)

Инициализирует новый экземпляр SqlConnection класса с заданной строкой подключения, которая не используется Integrated Security = true и SqlCredential объект, содержащий идентификатор пользователя и пароль.

SqlConnection(String)

Инициализирует новый экземпляр SqlConnection класса при указании строки, содержащей строку подключения.

Свойства

Имя Описание
AccessToken

Возвращает или задает маркер доступа для подключения.

AccessTokenCallback

Возвращает или задает обратный вызов маркера доступа для подключения.

CanCreateBatch

Возвращает значение, указывающее, поддерживает DbBatch ли этот SqlConnection экземпляр класс.

ClientConnectionId

Идентификатор подключения последней попытки подключения независимо от того, выполнена ли попытка успешно или завершилась ошибкой.

ColumnEncryptionKeyCacheTtl

Возвращает или задает время в реальном времени для записей ключа шифрования столбцов в кэше ключей шифрования столбца для функции Always Encrypted . Значение по умолчанию — 2 часа. 0 означает отсутствие кэширования вообще.

ColumnEncryptionQueryMetadataCacheEnabled

Возвращает или задает значение, указывающее, включена ли кэширование метаданных запроса (true) или нет (false) для параметризованных запросов, выполняемых в базах данных с поддержкой Always Encrypted . Значение по умолчанию — 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) активного подключения.

ServerVersion

Возвращает строку, содержащую версию экземпляра SQL Server, к которому подключен клиент.

SspiContextProvider

Возвращает или задает SspiContextProvider экземпляр для настройки контекста SSPI. Если не задано, будет использоваться значение по умолчанию для платформы.

State

Указывает состояние последней SqlConnection сетевой операции, выполняемой при подключении.

StatisticsEnabled

Если задано значение true, включает сбор статистики для текущего подключения.

WorkstationId

Возвращает строку, определяющую клиент базы данных.

Методы

Имя Описание
BeginTransaction()

Запускает транзакцию базы данных.

BeginTransaction(IsolationLevel, String)

Запускает транзакцию базы данных с указанным уровнем изоляции и именем транзакции.

BeginTransaction(IsolationLevel)

Запускает транзакцию базы данных с указанным уровнем изоляции.

BeginTransaction(String)

Запускает транзакцию базы данных с указанным именем транзакции.

ChangeDatabase(String)

Изменяет текущую базу данных для открытой SqlConnection.

ChangePassword(String, SqlCredential, SecureString)

Изменяет пароль SQL Server для пользователя, указанного в объекте SqlCredential.

ChangePassword(String, String)

Изменяет пароль SQL Server для пользователя, указанного в строка подключения на предоставленный новый пароль.

ClearAllPools()

Очищает пул соединений.

ClearPool(SqlConnection)

Очищает пул соединений, связанный с указанным подключением.

Close()

Закрывает подключение к базе данных. Это предпочтительный метод закрытия любого открытого подключения.

CreateCommand()

Создает и возвращает объект, связанный SqlCommand с SqlConnectionобъектом.

EnlistDistributedTransaction(ITransaction)

Выполняет перечисление в указанную транзакцию в виде распределенной транзакции.

EnlistTransaction(Transaction)

Выполняет перечисление в указанную транзакцию в виде распределенной транзакции.

GetSchema()

Возвращает сведения о схеме для источника данных этого SqlConnectionобъекта. Дополнительные сведения о схеме см. в разделе SQL Server коллекции схем.

GetSchema(String, String[])

Возвращает сведения о схеме для источника данных, SqlConnection используя указанную строку для имени схемы и указанный массив строк для значений ограничений.

GetSchema(String)

Возвращает сведения о схеме для источника данных, SqlConnection используя указанную строку для имени схемы.

Open()

Открывает подключение к базе данных с параметрами свойств, заданными параметром ConnectionString.

Open(SqlConnectionOverrides)

Открывает подключение к базе данных с параметрами свойств, заданными параметром ConnectionString.

OpenAsync(CancellationToken)

Асинхронная версия Open(), которая открывает подключение к базе данных с параметрами свойств, указанными в параметре ConnectionString. Маркер отмены можно использовать для запроса на то, что операция будет прекращена до истечения времени ожидания подключения. Исключения будут распространяться через возвращаемую задачу. Если время ожидания подключения истекает без успешного подключения, возвращенная задача будет помечена как неисправная с исключением. Реализация возвращает задачу, не блокируя вызывающий поток для подключений, не относящихся к пулу.

OpenAsync(SqlConnectionOverrides, CancellationToken)

Асинхронная версия Open(), которая открывает подключение к базе данных с параметрами свойств, указанными в параметре ConnectionString. Маркер отмены можно использовать для запроса на то, что операция будет прекращена до истечения времени ожидания подключения. Исключения будут распространяться через возвращаемую задачу. Если время ожидания подключения истекает без успешного подключения, возвращенная задача будет помечена как неисправная с исключением. Реализация возвращает задачу, не блокируя вызывающий поток для подключений, не относящихся к пулу.

RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>)

Регистрирует поставщиков хранилища ключей шифрования столбцов. Эта функция должна вызываться только один раз в приложении. Это делает неглубокое копирование словаря, чтобы приложение не могло изменить настраиваемый список поставщиков после его установки.

Встроенные поставщики хранилища главных ключей для столбцов, доступные для хранилища сертификатов Windows, хранилища CNG и CSP, зарегистрированы изначально.

RegisterColumnEncryptionKeyStoreProvidersOnConnection(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>)

Регистрирует поставщиков хранилища ключей шифрования в экземпляре SqlConnection . Если эта функция была вызвана, все поставщики, зарегистрированные с помощью статических RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) методов, будут игнорироваться. Эту функцию можно вызывать несколько раз. Это делает неглубокое копирование словаря, чтобы приложение не могло изменить настраиваемый список поставщиков после его установки.

ResetStatistics()

Если сбор статистики включен, все значения сбрасываются до нуля.

RetrieveInternalInfo()

Возвращает коллекцию пар значений имени внутренних свойств в момент вызова метода.

RetrieveStatistics()

Возвращает коллекцию пар значений имен статистики в момент вызова метода.

События

Имя Описание
InfoMessage

Происходит, когда SQL Server возвращает предупреждение или информационное сообщение.

Явные реализации интерфейса

Имя Описание
ICloneable.Clone()

Создает новый объект, который является копией текущего экземпляра.

Применяется к