Работа с изоляцией моментальных снимков в собственном клиенте SQL Server
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)
Внимание
SQL Server Native Client (SNAC) не поставляется с:
- SQL Server 2022 (16.x) и более поздних версий
- SQL Server Management Studio 19 и более поздних версий
Собственный клиент SQL Server (SQLNCLI или SQLNCLI11) и устаревший поставщик Microsoft OLE DB для SQL Server (SQLOLEDB) не рекомендуется для разработки новых приложений.
Для новых проектов используйте один из следующих драйверов:
Сведения о SQLNCLI, которые поставляется в качестве компонента SQL Server ядро СУБД (версии 2012–2019), см. в этом исключении жизненного цикла поддержки.
SQL Server 2005 (9.x) представил новый уровень изоляции моментального снимка, предназначенный для повышения параллелизма для приложений обработки транзакций (OLTP). В более ранних версиях SQL Server параллелизм основан исключительно на блокировке, что может вызвать проблемы блокировки и взаимоблокировки для некоторых приложений. Изоляция моментального снимка зависит от расширений управления версиями строк и предназначена для улучшения производительности путем исключения сценариев блокировки модулей чтения или записи.
Транзакции, запускаемые в режиме изоляции моментальных снимков, читают моментальный снимок базы данных на момент запуска транзакции. Один из результатов состоит в том, что поведение набора ключей, динамических и статических серверных курсоров, открываемых в контексте транзакции моментальных снимков, более походит на статические курсоры, открытые в сериализуемых транзакциях. Однако, когда курсоры открыты на уровне изоляции моментальных снимков, блокировки не применяются, что может снизить блокирование на сервере.
Поставщик OLE DB для собственного клиента SQL Server
Поставщик OLE DB собственного клиента SQL Server имеет улучшения, которые используют изоляцию моментальных снимков, представленную в SQL Server 2005 (9.x). Среди этих улучшений изменения наборов свойств DBPROPSET_DATASOURCEINFO и DBPROPSET_SESSION.
DBPROPSET_DATASOURCEINFO
Набор свойств DBPROPSET_DATASOURCEINFO изменен и указывает на поддержку уровня изоляции моментальных снимков благодаря добавлению значения DBPROPVAL_TI_SNAPSHOT, используемого в свойстве DBPROP_SUPPORTEDTXNISOLEVELS. Это новое значение указывает, что уровень изоляции моментального снимка поддерживается независимо от того, включено ли в базе данных управление версиями. Ниже приведен список значений DBPROP_SUPPORTEDTXNISOLEVELS.
Идентификатор свойства | Description |
---|---|
DBPROP_SUPPORTEDTXNISOLEVELS | Тип: VT_I4 R/W: только для чтения Описание: битовая маска, указывающая поддерживаемые уровни изоляции транзакции. Сочетание может включать нуль или несколько следующих значений: DBPROPVAL_TI_CHAOS DBPROPVAL_TI_READUNCOMMITTED DBPROPVAL_TI_BROWSE DBPROPVAL_TI_CURSORSTABILITY DBPROPVAL_TI_READCOMMITTED DBPROPVAL_TI_REPEATABLEREAD DBPROPVAL_TI_SERIALIZABLE DBPROPVAL_TI_ISOLATED DBPROPVAL_TI_SNAPSHOT |
Набор свойств DBPROPSET_SESSION
Набор свойств DBPROPSET_SESSION изменен и указывает на поддержку уровня изоляции моментальных снимков благодаря добавлению значения DBPROPVAL_TI_SNAPSHOT, используемого в свойстве DBPROP_SESS_AUTOCOMMITISOLEVELS. Это новое значение указывает, что уровень изоляции моментального снимка поддерживается независимо от того, включено ли в базе данных управление версиями. Ниже приведен список значений DBPROP_SESS_AUTOCOMMITISOLEVELS.
Идентификатор свойства | Description |
---|---|
DBPROP_SESS_AUTOCOMMITISOLEVELS | Тип: VT_I4 R/W: только для чтения Описание: задает битовую маску, которая указывает уровень изоляции транзакции в режиме автоматической фиксации. Значения, которые можно установить в этой битовой маске, такие же, как устанавливаемые для DBPROP_SUPPORTEDTXNISOLEVELS. |
Примечание.
Ошибки DB_S_ERRORSOCCURRED или DB_E_ERRORSOCCURRED возникают, если DBPROPVAL_TI_SNAPSHOT заданы при использовании версий SQL Server ранее, чем SQL Server 2005 (9.x).
Сведения о поддержке изоляции моментального снимка в транзакциях см. в статье Поддержка локальных транзакций.
Драйвер ODBC для собственного клиента SQL Server
Драйвер ODBC собственного клиента SQL Server обеспечивает поддержку изоляции моментальных снимков, хотя усовершенствования, внесенные в функции SQLSetConnectAttr и SQLGetInfo .
SQLSetConnectAttr
Функция SQLSetConnectAttr теперь поддерживает использование атрибута SQL_COPT_SS_TXN_ISOLATION. Задание SQL_COPT_SS_TXN_ISOLATION значения SQL_TXN_SS_SNAPSHOT указывает, что транзакция произойдет на уровне изоляции моментального снимка.
SQLGetInfo
Функция SQLGetInfo теперь поддерживает значение SQL_TXN_SS_SNAPSHOT, добавленное в тип сведений SQL_TXN_ISOLATION_OPTION.
Сведения о том, как изоляция моментальных снимков поддерживается в транзакциях, см . на уровне изоляции транзакций курсора.
См. также
Компоненты собственного клиента SQL Server
Свойства и поведение наборов строк