SqlConnection SqlConnection SqlConnection SqlConnection Class

Определение

Представляет подключение к базе данных SQL Server.Represents a connection to a SQL Server database. Этот класс не наследуется.This class cannot be inherited.

public ref class SqlConnection sealed : System::Data::Common::DbConnection, ICloneable, IDisposable
public sealed class SqlConnection : System.Data.Common.DbConnection, ICloneable, IDisposable
type SqlConnection = class
    inherit DbConnection
    interface IDbConnection
    interface ICloneable
    interface IDisposable
Public NotInheritable Class SqlConnection
Inherits DbConnection
Implements ICloneable, IDisposable
Наследование
Реализации

Примеры

В следующем примере создаются SqlCommand SqlConnectionи.The following example creates a SqlCommand and a SqlConnection. Открывается и устанавливается в Connection качестве для SqlCommand. SqlConnectionThe SqlConnection is opened and set as the Connection for the SqlCommand. Затем в примере вызывается метод ExecuteNonQuery.The example then calls ExecuteNonQuery. Для этого ExecuteNonQuery передается строка подключения и строка запроса, которая Transact-SQLTransact-SQL является инструкцией INSERT.To accomplish this, the ExecuteNonQuery is passed a connection string and a query string that is a Transact-SQLTransact-SQL INSERT statement. Соединение закрывается автоматически, когда код выходит из блока using.The connection is closed automatically when the code exits the using block.

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();
    }
}
Public Sub CreateCommand(ByVal queryString As String, _
  ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)
        command.Connection.Open()
        command.ExecuteNonQuery()
    End Using
End Sub

Комментарии

SqlConnection Объект представляет уникальный сеанс для SQL Server источника данных.A SqlConnection object represents a unique session to a SQL Server data source. В системе базы данных клиента или сервера она эквивалентна сетевому подключению к серверу.With a client/server database system, it is equivalent to a network connection to the server. SqlConnectionиспользуется вместе с SqlDataAdapter и SqlCommand для повышения производительности при подключении к Microsoft SQL Server базе данных.SqlConnection is used together with SqlDataAdapter and SqlCommand to increase performance when connecting to a Microsoft SQL Server database. Для всех SQL Server продуктов сторонних производителей и других поддерживаемых OLE DB источников данных используйте OleDbConnection.For all third-party SQL Server products and other OLE DB-supported data sources, use OleDbConnection.

При создании экземпляра SqlConnectionвсе свойства устанавливаются в исходные значения.When you create an instance of SqlConnection, all properties are set to their initial values. Список этих значений см. в SqlConnection описании конструктора.For a list of these values, see the SqlConnection constructor.

Список ConnectionString ключевых слов в строке подключения см. в разделе.See ConnectionString for a list of the keywords in a connection string.

SqlConnection Если выходит из области, оно не будет закрыто.If the SqlConnection goes out of scope, it won't be closed. Поэтому необходимо явно закрыть соединение, вызвав Close или. DisposeTherefore, you must explicitly close the connection by calling Close or Dispose. Closeфункции Dispose и функционально эквивалентны.Close and Dispose are functionally equivalent. Если для Pooling true параметра пулы соединений задано значение или yes, то базовое соединение возвращается в пул соединений.If the connection pooling value Pooling is set to true or yes, the underlying connection is returned back to the connection pool. С другой стороны, если Pooling параметр имеет false значение или no, то базовое соединение с сервером фактически закрыто.On the other hand, if Pooling is set to false or no, the underlying connection to the server is actually closed.

Примечание

События входа в систему и выхода из системы не вызываются на сервере при выборке подключения из пула подключений и при возврате его в пул подключений, поскольку при возврате в пул подключений подключение фактически не закрывается.Login and logout events will not be raised on the server when a connection is fetched from or returned to the connection pool, because the connection is not actually closed when it is returned to the connection pool. Дополнительные сведения см. в разделе Пулы подключений SQL Server (ADO.NET).For more information, see SQL Server Connection Pooling (ADO.NET).

Чтобы гарантировать, что соединения всегда закрываются, откройте соединение внутри using блока, как показано в следующем фрагменте кода.To ensure that connections are always closed, open the connection inside of a using block, as shown in the following code fragment. Это гарантирует, что соединение будет автоматически закрыто при выходе кода из блока.Doing so ensures that the connection is automatically closed when the code exits the block.

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.  
    }  

Примечание

Для развертывания высокопроизводительных приложений необходимо использовать пулы соединений.To deploy high-performance applications, you must use connection pooling. При использовании .NET Framework поставщика данных для SQL Server не нужно включать пулы соединений, так как поставщик управляет этим автоматически, хотя некоторые параметры можно изменить.When you use the .NET Framework Data Provider for SQL Server, you do not have to enable connection pooling because the provider manages this automatically, although you can modify some settings. Дополнительные сведения см. в разделе Пулы подключений SQL Server (ADO.NET).For more information, see SQL Server Connection Pooling (ADO.NET).

Если объект SqlException создается методом SqlCommand, выполняющим, SqlConnection компонент остается открытым, если уровень серьезности равен 19 или меньше.If a SqlException is generated by the method executing a SqlCommand, the SqlConnection remains open when the severity level is 19 or less. Если уровень серьезности равен 20 или больше, сервер обычно закрывает SqlConnection.When the severity level is 20 or greater, the server ordinarily closes the SqlConnection. Тем не менее, пользователь может опять открыть подключение и продолжить работу.However, the user can reopen the connection and continue.

Приложение, создающее экземпляр SqlConnection объекта, может потребовать, чтобы все прямые и косвенные вызывающие объекты имели достаточные разрешения на доступ к коду, установив декларативные или императивные требования безопасности.An application that creates an instance of the SqlConnection object can require all direct and indirect callers to have sufficient permission to the code by setting declarative or imperative security demands. SqlConnectionвыполняет требования безопасности с помощью SqlClientPermission объекта.SqlConnection makes security demands using the SqlClientPermission object. Пользователи могут убедиться, что их код имеет достаточные разрешения с SqlClientPermissionAttribute помощью объекта.Users can verify that their code has sufficient permissions by using the SqlClientPermissionAttribute object. Пользователи и администраторы также могут использовать средство Caspol. exe (политика управления доступом для кода) для изменения политики безопасности на уровне компьютера, пользователя и предприятия.Users and administrators can also use the Caspol.exe (Code Access Security Policy Tool) to modify security policy at the machine, user, and enterprise levels. Дополнительные сведения см. в разделе Безопасность в .NET.For more information, see Security in .NET. Пример, демонстрирующий использование требований безопасности, см. в разделе Управление доступом для кода и ADO.NET.For an example demonstrating how to use security demands, see Code Access Security and ADO.NET.

Дополнительные сведения об обработке предупреждений и информационных сообщений с сервера см. в разделе события подключения.For more information about handling warning and informational messages from the server, see Connection Events. Дополнительные сведения об ошибках SQL Server Engine и сообщениях об ошибках см. в разделе ядро СУБД события и ошибки.For more information about SQL Server engine errors and error messages, see Database Engine Events and Errors.

Внимание!

Вместо общей памяти можно принудительно использовать TCP.You can force TCP instead of shared memory. Это можно сделать путем добавления префикса TCP: к имени сервера в строке подключения или же можно использовать localhost.You can do that by prefixing tcp: to the server name in the connection string or you can use localhost.

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

SqlConnection() SqlConnection() SqlConnection() SqlConnection()

Инициализирует новый экземпляр класса SqlConnection.Initializes a new instance of the SqlConnection class.

SqlConnection(String) SqlConnection(String) SqlConnection(String) SqlConnection(String)

Инициализирует новый экземпляр класса SqlConnection после получения строки, содержащей строку соединения.Initializes a new instance of the SqlConnection class when given a string that contains the connection string.

SqlConnection(String, SqlCredential) SqlConnection(String, SqlCredential) SqlConnection(String, SqlCredential) SqlConnection(String, SqlCredential)

Инициализирует новый экземпляр класса SqlConnection, используя строку подключения, в которой не используется Integrated Security = true, и объект SqlCredential, содержащий идентификатор пользователя и пароль.Initializes a new instance of the SqlConnection class given a connection string, that does not use Integrated Security = true and a SqlCredential object that contains the user ID and password.

Свойства

AccessToken AccessToken AccessToken AccessToken

Возвращает или задает токен доступа для подключения.Gets or sets the access token for the connection.

CanRaiseEvents CanRaiseEvents CanRaiseEvents CanRaiseEvents

Возвращает значение, показывающее, может ли компонент вызывать событие.Gets a value indicating whether the component can raise an event.

(Inherited from Component)
ClientConnectionId ClientConnectionId ClientConnectionId ClientConnectionId

Идентификатор соединения последней попытки подключения, независимо от того, успешно ли выполнена попытка или завершилась ошибкой.The connection ID of the most recent connection attempt, regardless of whether the attempt succeeded or failed.

ColumnEncryptionKeyCacheTtl ColumnEncryptionKeyCacheTtl ColumnEncryptionKeyCacheTtl ColumnEncryptionKeyCacheTtl

Возвращает или задает срок жизни для записей ключей шифрования столбцов в кэше ключей шифрования столбцов для функции Always Encrypted.Gets or sets the time-to-live for column encryption key entries in the column encryption key cache for the Always Encrypted feature. Значение по умолчанию — 2 часа.The default value is 2 hours. 0 означает отсутствие кэширования.0 means no caching at all.

ColumnEncryptionQueryMetadataCacheEnabled ColumnEncryptionQueryMetadataCacheEnabled ColumnEncryptionQueryMetadataCacheEnabled ColumnEncryptionQueryMetadataCacheEnabled

Возвращает или задает значение, которое указывает, включено ли кэширование метаданных запроса (True) или нет (False) для параметризованных запросов к базам данных с поддержкой функции Always Encrypted.Gets or sets a value that indicates whether query metadata caching is enabled (true) or not (false) for parameterized queries running against Always Encrypted enabled databases. Значение по умолчанию — true.The default value is true.

ColumnEncryptionTrustedMasterKeyPaths ColumnEncryptionTrustedMasterKeyPaths ColumnEncryptionTrustedMasterKeyPaths ColumnEncryptionTrustedMasterKeyPaths

Позволяет задать список доверенных путей к разделам для сервера базы данных.Allows you to set a list of trusted key paths for a database server. Если при обработке запроса приложения драйвер получает путь к разделу, которого нет в списке, запрос завершится ошибкой.If while processing an application query the driver receives a key path that is not on the list, the query will fail. Это свойство обеспечивает дополнительную защиту от атак на систему безопасности, которые подразумевают предоставление скомпрометированным сервером SQL Server неверных путей к разделам, что может привести к утечке учетных данных хранилища ключей.This property provides additional protection against security attacks that involve a compromised SQL Server providing fake key paths, which may lead to leaking key store credentials.

ConnectionString ConnectionString ConnectionString ConnectionString

Получает или задает строку, используемую для открытия базы данных SQL Server.Gets or sets the string used to open a SQL Server database.

ConnectionTimeout ConnectionTimeout ConnectionTimeout ConnectionTimeout

Получает время ожидания при попытке установки подключения, по истечении которого попытка подключения завершается и создается ошибка.Gets the time to wait while trying to establish a connection before terminating the attempt and generating an error.

Container Container Container Container

Возвращает контейнер IContainer, содержащий компонент Component.Gets the IContainer that contains the Component.

(Inherited from Component)
Credential Credential Credential Credential

Возвращает или задает объект SqlCredential для этого подключения.Gets or sets the SqlCredential object for this connection.

Credentials Credentials Credentials Credentials
Database Database Database Database

Получает имя текущей базы данных или базы данных, которая будет использоваться после открытия подключения.Gets the name of the current database or the database to be used after a connection is opened.

DataSource DataSource DataSource DataSource

Получает имя экземпляра SQL Server, к которому осуществляется подключение.Gets the name of the instance of SQL Server to which to connect.

DesignMode DesignMode DesignMode DesignMode

Возвращает значение, указывающее, находится ли данный компонент Component в режиме конструктора в настоящее время.Gets a value that indicates whether the Component is currently in design mode.

(Inherited from Component)
Events Events Events Events

Возвращает список обработчиков событий, которые прикреплены к этому объекту Component.Gets the list of event handlers that are attached to this Component.

(Inherited from Component)
FireInfoMessageEventOnUserErrors FireInfoMessageEventOnUserErrors FireInfoMessageEventOnUserErrors FireInfoMessageEventOnUserErrors

Возвращает или задает свойство FireInfoMessageEventOnUserErrors.Gets or sets the FireInfoMessageEventOnUserErrors property.

PacketSize PacketSize PacketSize PacketSize

Получает размер сетевых пакетов (в байтах), используемых при взаимодействии с экземпляром SQL Server.Gets the size (in bytes) of network packets used to communicate with an instance of SQL Server.

ServerVersion ServerVersion ServerVersion ServerVersion

Получает строку, содержащую версию экземпляра SQL Server, к которому подключается клиент.Gets a string that contains the version of the instance of SQL Server to which the client is connected.

Site Site Site Site

Возвращает или задает ISite объекта Component.Gets or sets the ISite of the Component.

(Inherited from Component)
State State State State

Отображает состояние SqlConnection во время последней сетевой операции, выполненной по подключению.Indicates the state of the SqlConnection during the most recent network operation performed on the connection.

StatisticsEnabled StatisticsEnabled StatisticsEnabled StatisticsEnabled

Когда задано значение true, разрешает сбор статистических сведений для текущего подключения.When set to true, enables statistics gathering for the current connection.

WorkstationId WorkstationId WorkstationId WorkstationId

Получает строку, определяющую клиента базы данных.Gets a string that identifies the database client.

Методы

BeginTransaction() BeginTransaction() BeginTransaction() BeginTransaction()

Начинает транзакцию базы данных.Starts a database transaction.

BeginTransaction(IsolationLevel) BeginTransaction(IsolationLevel) BeginTransaction(IsolationLevel) BeginTransaction(IsolationLevel)

Начинает транзакцию базы данных с указанным уровнем изоляции.Starts a database transaction with the specified isolation level.

BeginTransaction(IsolationLevel, String) BeginTransaction(IsolationLevel, String) BeginTransaction(IsolationLevel, String) BeginTransaction(IsolationLevel, String)

Начинает транзакцию базы данных с указанным уровнем изоляции и именем транзакции.Starts a database transaction with the specified isolation level and transaction name.

BeginTransaction(String) BeginTransaction(String) BeginTransaction(String) BeginTransaction(String)

Начинает транзакцию базы данных с указанным уровнем изоляции.Starts a database transaction with the specified transaction name.

ChangeDatabase(String) ChangeDatabase(String) ChangeDatabase(String) ChangeDatabase(String)

Осуществляет смену текущей базы данных для открытого соединения SqlConnection.Changes the current database for an open SqlConnection.

ChangePassword(String, SqlCredential, SecureString) ChangePassword(String, SqlCredential, SecureString) ChangePassword(String, SqlCredential, SecureString) ChangePassword(String, SqlCredential, SecureString)

Изменяет пароль SQL Server для пользователя, указанного в объекте SqlCredential.Changes the SQL Server password for the user indicated in the SqlCredential object.

ChangePassword(String, String) ChangePassword(String, String) ChangePassword(String, String) ChangePassword(String, String)

Заменяет пароль SQL Server для пользователя, указанного в строке подключения, заданным новым паролем.Changes the SQL Server password for the user indicated in the connection string to the supplied new password.

ClearAllPools() ClearAllPools() ClearAllPools() ClearAllPools()

Очищает пул подключений.Empties the connection pool.

ClearPool(SqlConnection) ClearPool(SqlConnection) ClearPool(SqlConnection) ClearPool(SqlConnection)

Очищает пул подключений, связанный с заданным подключением.Empties the connection pool associated with the specified connection.

Close() Close() Close() Close()

Закрывает соединение с базой данных.Closes the connection to the database. Рекомендуется использовать этот метод для закрытия любого открытого подключения.This is the preferred method of closing any open connection.

CreateCommand() CreateCommand() CreateCommand() CreateCommand()

Создает и возвращает объект SqlCommand, связанный с SqlConnection.Creates and returns a SqlCommand object associated with the SqlConnection.

CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type)

Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Inherited from MarshalByRefObject)
Dispose() Dispose() Dispose() Dispose()

Освобождает все ресурсы, занятые модулем Component.Releases all resources used by the Component.

(Inherited from Component)
Dispose(Boolean) Dispose(Boolean) Dispose(Boolean) Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом Component, а при необходимости освобождает также управляемые ресурсы.Releases the unmanaged resources used by the Component and optionally releases the managed resources.

(Inherited from Component)
EnlistDistributedTransaction(ITransaction) EnlistDistributedTransaction(ITransaction) EnlistDistributedTransaction(ITransaction) EnlistDistributedTransaction(ITransaction)

Выполняет присоединение указанной транзакции как распределенной транзакции.Enlists in the specified transaction as a distributed transaction.

EnlistTransaction(Transaction) EnlistTransaction(Transaction) EnlistTransaction(Transaction) EnlistTransaction(Transaction)

Выполняет присоединение указанной транзакции как распределенной транзакции.Enlists in the specified transaction as a distributed transaction.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetLifetimeService() GetLifetimeService() GetLifetimeService() GetLifetimeService()

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
GetSchema() GetSchema() GetSchema() GetSchema()

Возвращает сведения схемы для источника данных этого объекта SqlConnection.Returns schema information for the data source of this SqlConnection. Дополнительные сведения о схеме см. в разделе Коллекции схемы SQL Server.For more information about scheme, see SQL Server Schema Collections.

GetSchema(String) GetSchema(String) GetSchema(String) GetSchema(String)

Возвращает сведения о схеме для источника данных этого объекта SqlConnection, используя указанную строку в качестве имени схемы.Returns schema information for the data source of this SqlConnection using the specified string for the schema name.

GetSchema(String, String[]) GetSchema(String, String[]) GetSchema(String, String[]) GetSchema(String, String[])

Возвращает сведения о схеме для источника данных этого объекта SqlConnection, используя указанную строку в качестве имени схемы и указанный массив строк для значений ограничений.Returns schema information for the data source of this SqlConnection using the specified string for the schema name and the specified string array for the restriction values.

GetService(Type) GetService(Type) GetService(Type) GetService(Type)

Возвращает объект, представляющий службу, обеспечиваемую компонентом Component или его контейнером Container.Returns an object that represents a service provided by the Component or by its Container.

(Inherited from Component)
GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService()

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.Obtains a lifetime service object to control the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean)

Создает неполную копию текущего объекта MarshalByRefObject.Creates a shallow copy of the current MarshalByRefObject object.

(Inherited from MarshalByRefObject)
Open() Open() Open() Open()

Открывает подключение к базе данных со значениями свойств, определяемыми объектом ConnectionString.Opens a database connection with the property settings specified by the ConnectionString.

OpenAsync(CancellationToken) OpenAsync(CancellationToken) OpenAsync(CancellationToken) OpenAsync(CancellationToken)

Асинхронная версия Open(), которая открывает соединение с базой данных с параметрами свойства, указанными в строке ConnectionString.An asynchronous version of Open(), which opens a database connection with the property settings specified by the ConnectionString. Чтобы запросить отмену операции до истечения времени ожидания соединения, можно использовать токен отмены.The cancellation token can be used to request that the operation be abandoned before the connection timeout elapses. Исключения будут распространяться с помощью возвращаемой задачи.Exceptions will be propagated via the returned Task. Если время ожидания соединения истекло без успешного подключения, возвращаемая задача будет помечена как сбойная с исключением.If the connection timeout time elapses without successfully connecting, the returned Task will be marked as faulted with an Exception. Реализация возвращает задачу без блокировки вызывающего потока как для соединений, помещенных в пул, так и соединений вне пула.The implementation returns a Task without blocking the calling thread for both pooled and non-pooled connections.

RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>)

Регистрирует поставщиков хранилища ключей шифрования столбцов.Registers the column encryption key store providers.

ResetStatistics() ResetStatistics() ResetStatistics() ResetStatistics()

Если сбор статистики разрешен, все значения сбрасываются в нуль.If statistics gathering is enabled, all values are reset to zero.

RetrieveStatistics() RetrieveStatistics() RetrieveStatistics() RetrieveStatistics()

Возвращает коллекцию пар имя-значение статистических данных на момент вызова метода.Returns a name value pair collection of statistics at the point in time the method is called.

ToString() ToString() ToString() ToString()

Возвращает объект String, содержащий имя Component, если оно есть.Returns a String containing the name of the Component, if any. Этот метод не следует переопределять.This method should not be overridden.

(Inherited from Component)

События

Disposed Disposed Disposed Disposed

Происходит при удалении компонента вызовом метода Dispose().Occurs when the component is disposed by a call to the Dispose() method.

(Inherited from Component)
InfoMessage InfoMessage InfoMessage InfoMessage

Возникает, когда SQL Server возвращает предупреждение или информационное сообщение.Occurs when SQL Server returns a warning or informational message.

StateChange StateChange StateChange StateChange

Возникает при изменении состояния подключения.Occurs when the state of the connection changes.

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

ICloneable.Clone() ICloneable.Clone() ICloneable.Clone() ICloneable.Clone()

Создает новый объект, являющийся копией текущего экземпляра.Creates a new object that is a copy of the current instance.

IDbConnection.BeginTransaction() IDbConnection.BeginTransaction() IDbConnection.BeginTransaction() IDbConnection.BeginTransaction()

Начинает транзакцию базы данных.Begins a database transaction.

IDbConnection.BeginTransaction(IsolationLevel) IDbConnection.BeginTransaction(IsolationLevel) IDbConnection.BeginTransaction(IsolationLevel) IDbConnection.BeginTransaction(IsolationLevel)

Начинает транзакцию базы данных с указанным значением IsolationLevel.Begins a database transaction with the specified IsolationLevel value.

IDbConnection.CreateCommand() IDbConnection.CreateCommand() IDbConnection.CreateCommand() IDbConnection.CreateCommand()

Создает и возвращает объект Command, связанный с подключением.Creates and returns a Command object that is associated with the connection.

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

Дополнительно