что такое dbcc opentran

Русские Блоги

Транзакция запроса SQL Server

Умышленно или неумышленно, если транзакция остается открытой в базе данных, она блокирует другие процессы от работы с измененными данными (функция ACID). Точно так же длительные транзакции могут также привести к заполнению журнала. Длительные транзакции могут сохранять журнал транзакций активным из файла виртуального журнала, содержащего первую запись журнала транзакций, а открытые транзакции будут приводить к увеличению журнала (или даже к достижению физического предела), пока транзакция не будет зафиксирована Или откат.

(1) Запрос транзакций через DBCC OPENTRAN

1.1 Введение в DBCC OPENTRAN

С помощью оператора DBCC OPENTRAN вы можете идентифицировать идентификатор пользователя владельца транзакции, поэтому вы можете неявно отслеживать источник транзакции, чтобы получить более упорядоченное завершение (зафиксируйте его вместо отката). Эта команда также возвращает самую раннюю активную транзакцию и самые ранние распределенные и нераспределенные реплицированные транзакции в указанной базе данных. Если нет активных транзакций, вместо данных уровня сеанса отображается информационное сообщение.
DBCC OPENTRAN очень полезен для потерянных соединений (открытых в базе данных, но отключенных от приложения или клиента), и может помочь нам найти отсутствующий COMMIT Или ROLLBACK транзакция.

1.2 Пример использования DBCC OPENTRAN

DBCC OPENTRAN синтаксис

Пример использования

A. Returning the oldest active transaction

【Результаты】
В результате отображается соответствующая информация из самого раннего журнала активности, включая идентификатор процесса сервера (SPID), идентификатор пользователя (UID) и время начала транзакции. Ключом является SPID и время начала.

что такое dbcc opentran. Смотреть фото что такое dbcc opentran. Смотреть картинку что такое dbcc opentran. Картинка про что такое dbcc opentran. Фото что такое dbcc opentran

B. Specifying the WITH TABLERESULTS option
The following example loads the results of the DBCC OPENTRAN command into a temporary table.

(2) Запрос транзакций через DMV (представление динамического управления)

1. sys.dm_tran_session_transactions: предоставляет информацию, связанную с представлением, и содержит информацию о конкретном сеансе.

что такое dbcc opentran. Смотреть фото что такое dbcc opentran. Смотреть картинку что такое dbcc opentran. Картинка про что такое dbcc opentran. Фото что такое dbcc opentran

2. sys.dm_tran_active_transactions: возвращает информацию о транзакциях, которые активны на уровне экземпляра.
3. sys.dm_tran_database_transactions: возвращает информацию о транзакции на уровне базы данных.

Для длительных транзакций наиболее важные столбцы, на которые следует обратить внимание, включают: время первой записи журнала, текущее состояние транзакции (database_transaction_state) и порядковый номер журнала (LSN), который начал запись в журнале транзакций.

Экземпляр, база данных и сеанс

пример

Это незафиксированная транзакция, выполненная в другом окне запроса следующим образом:

Источник

DBCC OPENTRAN (Transact-SQL)

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

DBCC OPENTRAN не поддерживается для издателей, отличных от издателей SQL Server.

что такое dbcc opentran. Смотреть фото что такое dbcc opentran. Смотреть картинку что такое dbcc opentran. Картинка про что такое dbcc opentran. Фото что такое dbcc opentranСинтаксические обозначения в Transact-SQL

Синтаксис

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

database_name | database_id| 0
Имя или идентификатор базы данных, для которой необходимо отобразить сведения о самой давней транзакции. Если значение не указано или указано значение 0, используется текущая база данных. Имена баз данных должны соответствовать правилам идентификаторов.

TABLERESULTS
Указывает, что результаты должны выводиться в табличном формате, чтобы их можно было загрузить в таблицу. Используйте этот параметр для создания таблицы результатов, которые могут быть вставлены в таблицу для сравнений. Если этот аргумент не указан, результаты форматируются так, чтобы они были более удобочитаемыми.

NO_INFOMSGS
Подавляет вывод всех информационных сообщений.

Remarks

Используйте инструкцию DBCC OPENTRAN, чтобы определить, существует ли открытая транзакция в журнале транзакций. При выполнении инструкции BACKUP LOG только неактивная часть журнала может быть усечена; открытая транзакция может помешать полному усечению журнала транзакций. Для определения открытой транзакции получите идентификатор системного процесса, выполнив инструкцию sp_who.

Результирующие наборы

Инструкция DBCC OPENTRAN возвращает следующий результирующий набор, если нет открытых транзакций:

Разрешения

Примеры

A. Возвращение самой старой активной транзакции

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

Результат «UID (идентификатор пользователя)» не имеет смысла и будет удален в следующих версиях SQL Server.

Б. Указание параметра WITH TABLERESULTS

В следующем примере результаты команды DBCC OPENTRAN загружаются во временную таблицу.

Источник

DBCC (Transact-SQL)

Язык Transact-SQL предоставляет инструкции DBCC, которые выступают в качестве консольных команд базы данных для SQL Server.

Инструкции консольных команд базы данных группируются по следующим категориям.

Категория командыВыполнение
ОбслуживаниеОбслуживание задач в базе данных, индексе или в файловой группе.
РазноеВспомогательные задачи, например установка флага трассировки или удаление из памяти библиотеки DLL.
InformationalЗадачи, собирающие и отображающие разные типы сведений.
ПроверкаПроверочные операции в базе данных, таблице, индексе, каталоге, в файловой группе или распределение страниц базы данных.

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

Использование внутреннего моментального снимка базы данных в командах DBCC

Следующие команды DBCC выполняют операции с внутренним моментальным снимком базы данных, предназначенным только для чтения, который создает компонент Компонент Database Engine. Тем самым предотвращаются проблемы блокировки и параллелизма при выполнении этих команд. Дополнительные сведения см. в разделе Моментальные снимки базы данных (SQL Server).

При выполнении одной из этих команд DBCC компонент Компонент Database Engine создает моментальный снимок базы данных и приводит ее в согласованное состояние на уровне транзакций. Затем команда DBCC выполняет проверку этого моментального снимка. После завершения команды DBCC этот моментальный снимок удаляется.

Иногда внутренний моментальный снимок базы данных не требуется или его невозможно создать. В этом случае команда DBCC выполняется в отношении реальной базы данных. Если база данных находится в режиме в сети, команда DBCC использует блокировку таблиц для обеспечения согласованности проверяемых объектов. Это поведение то же самое, как если бы был указан параметр WITH TABLOCK.

Внутренний моментальный снимок базы данных не создается, если команда DBCC выполняется:

Команды DBCC используют блокировки таблиц, а не внутренние моментальные снимки базы данных, если выполняются:

Для запуска команды DBCC CHECKALLOC или эквивалентной части DBCC CHECKDB с параметром WITH TABLOCK требуется X-блокировка базы данных. Такую блокировку нельзя устанавливать для базы данных tempdb или master: это может привести к ошибкам во всех остальных базах данных.

Команда DBCC CHECKDB вызывает ошибку при выполнении в базе данных master, если невозможно создать внутренний моментальный снимок базы данных.

Формирование отчета о состоянии команд DBCC

В представлении каталога sys.dm_exec_requests содержатся сведения о ходе выполнения и текущем этапе выполнения команд DBCC CHECKDB, CHECKFILEGROUP и CHECKTABLE. В столбце percent_complete указывается процент выполнения команды, а в столбце command отображается текущий этап ее выполнения.

Определение единицы хода выполнения зависит от текущего этапа выполнения команды DBCC. Иногда отчет о состоянии формируется на уровне гранулярности страницы базы данных, на других этапах — на уровне гранулярности одной базы данных или исправления распределения пространства. В следующей таблице представлены все этапы выполнения и уровень гранулярности, на котором команда формирует отчет о состоянии.

Этап выполненияОписаниеУровень гранулярности отчетов о состоянии
DBCC TABLE CHECKВо время этого этапа проверяется логическая и физическая согласованность объектов в базе данных.Отчет о состоянии сформирован на уровне страниц базы данных.

Значение отчета о состоянии обновляется через каждые 1000 проверенных страниц базы данных.

DBCC TABLE REPAIRВо время этого этапа выполняются исправления базы данных, если указывается параметр REPAIR_FAST, REPAIR_REBUILD или REPAIR_ALLOW_DATA_LOSS и имеются ошибки на уровне объектов.Отчет о состоянии сформирован на уровне отдельных исправлений.

Счетчик обновляется для каждой завершенной операции исправления.

DBCC ALLOC CHECKВо время этого этапа проверяются структуры распределения.

Примечание. Те же проверки выполняет команда DBCC CHECKALLOC.

О состоянии не сообщается
DBCC ALLOC REPAIRВо время этого этапа выполняются исправления базы данных, если указывается параметр REPAIR_FAST, REPAIR_REBUILD или REPAIR_ALLOW_DATA_LOSS и имеются ошибки на уровне распределения пространства.О состоянии не сообщается.
DBCC SYS CHECKВо время этого этапа проверяются системные таблицы базы данных.Отчет о состоянии сформирован на уровне страниц базы данных.

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

DBCC SYS REPAIRВо время этого этапа выполняются исправления базы данных, если указывается параметр REPAIR_FAST, REPAIR_REBUILD или REPAIR_ALLOW_DATA_LOSS и имеются ошибки на уровне системных таблиц.Отчет о состоянии сформирован на уровне отдельных исправлений.

Счетчик обновляется для каждой завершенной операции исправления.

DBCC SSB CHECKВо время этого этапа проверяются объекты компонента SQL Server Service Broker.

Примечание. Этот этап не выполняется при выполнении инструкции DBCC CHECKTABLE.

О состоянии не сообщается.
DBCC CHECKCATALOGВо время этого этапа проверяется согласованность каталогов базы данных.

Примечание. Этот этап не выполняется при выполнении инструкции DBCC CHECKTABLE.

О состоянии не сообщается.
DBCC IVIEW CHECKВо время этого этапа проверяется логическая согласованность всех индексированных представлений базы данных.Отчет о состоянии сформирован на уровне отдельных представлений баз данных.

Информационные инструкции

Инструкции проверки

Инструкции обслуживания

Вспомогательные инструкции

Источник

DBCC OPENTRAN (Transact-SQL)

DBCC OPENTRAN helps to identify active transactions that may be preventing log truncation. DBCC OPENTRAN displays information about the oldest active transaction and the oldest distributed and nondistributed replicated transactions, if any, within the transaction log of the specified database. Results are displayed only if there is an active transaction that exists in the log or if the database contains replication information. An informational message is displayed if there are no active transactions in the log.

DBCC OPENTRAN is not supported for non- SQL Server Publishers.

что такое dbcc opentran. Смотреть фото что такое dbcc opentran. Смотреть картинку что такое dbcc opentran. Картинка про что такое dbcc opentran. Фото что такое dbcc opentranTransact-SQL Syntax Conventions

Syntax

To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

Arguments

database_name | database_id| 0
Is the name or ID of the database for which to display the oldest transaction information. If not specified, or if 0 is specified, the current database is used. Database names must comply with the rules for identifiers.

TABLERESULTS
Specifies the results in a tabular format that can be loaded into a table. Use this option to create a table of results that can be inserted into a table for comparisons. When this option is not specified, results are formatted for readability.

NO_INFOMSGS
Suppresses all informational messages.

Remarks

Use DBCC OPENTRAN to determine whether an open transaction exists within the transaction log. When you use the BACKUP LOG statement, only the inactive part of the log can be truncated; an open transaction can prevent the log from truncating completely. To identify an open transaction, use sp_who to obtain the system process ID.

Result Sets

DBCC OPENTRAN returns the following result set when there are no open transactions:

Permissions

Requires membership in the sysadmin fixed server role or the db_owner fixed database role.

Examples

A. Returning the oldest active transaction

The following example obtains transaction information for the current database. Results may vary.

Here is the result set.

The «UID (user ID)» result is meaningless and will be removed in a future version of SQL Server.

B. Specifying the WITH TABLERESULTS option

The following example loads the results of the DBCC OPENTRAN command into a temporary table.

Источник

DBCC (Transact-SQL)

The Transact-SQL programming language provides DBCC statements that act as Database Console Commands for SQL Server.

Database Console Command statements are grouped into the following categories.

Command categoryPerform
MaintenanceMaintenance tasks on a database, index, or filegroup.
MiscellaneousMiscellaneous tasks such as enabling trace flags or removing a DLL from memory.
InformationalTasks that gather and display various types of information.
ValidationValidation operations on a database, table, index, catalog, filegroup, or allocation of database pages.

DBCC commands take input parameters and return values. All DBCC command parameters can accept both Unicode and DBCS literals.

DBCC Internal Database Snapshot Usage

The following DBCC commands operate on an internal read-only database snapshot that the Database Engine creates. This prevents blocking and concurrency problems when these commands are executed. For more information, see Database Snapshots (SQL Server).

When you execute one of these DBCC commands, the Database Engine creates a database snapshot and brings it to a transactionally consistent state. The DBCC command then runs the checks against this snapshot. After the DBCC command is completed, this snapshot is dropped.

Sometimes an internal database snapshot is not required or cannot be created. When this occurs, the DBCC command executes against the actual database. If the database is online, the DBCC command uses table-locking to ensure the consistency of the objects that it is checking. This behavior is the same as if the WITH TABLOCK option were specified.

An internal database snapshot is not created when a DBCC command is executed:

The DBCC commands use table locks instead of the internal database snapshots when the command is executed against the following:

Trying to run DBCC CHECKALLOC, or the equivalent part of DBCC CHECKDB, by using the WITH TABLOCK option requires a database X lock. This database lock cannot be set on tempdb or master and will probably fail on all other databases.

DBCC CHECKDB fails when it is run against master if an internal database snapshot cannot be created.

Progress Reporting for DBCC Commands

The sys.dm_exec_requests catalog view contains information about the progress and the current phase of execution of the DBCC CHECKDB, CHECKFILEGROUP, and CHECKTABLE commands. The percent_complete column indicates the percentage complete of the command, and the command column reports the current phase of the execution of the command.

The definition of a unit of progress depends on the current phase of execution of the DBCC command. Sometimes progress is reported at the granularity of a database page, in other phases it is reported at the granularity of a single database or allocation repair. The following table describes each phase of execution, and the granularity at which the command reports progress.

Execution phaseDescriptionProgress reporting granularity
DBCC TABLE CHECKThe logical and physical consistency of the objects in the database is checked during this phase.Progress reported at the database page level.

The progress reporting value is updated for each 1000 database pages that are checked.

DBCC TABLE REPAIRDatabase repairs are performed during this phase if REPAIR_FAST, REPAIR_REBUILD, or REPAIR_ALLOW_DATA_LOSS is specified, and there are object errors that must be repaired.Progress reported at the individual repair level.

The counter is updated for each repair that is completed.

DBCC ALLOC CHECKAllocation structures in the database are checked during this phase.

Note: DBCC CHECKALLOC performs the same checks.

Progress is not reported
DBCC ALLOC REPAIRDatabase repairs are performed during this phase if REPAIR_FAST, REPAIR_REBUILD, or REPAIR_ALLOW_DATA_LOSS is specified, and there are allocation errors that must be repaired.Progress is not reported.
DBCC SYS CHECKDatabase system tables are checked during this phase.Progress reported at the database page level.

The progress reporting value is updated for every 1000 database pages that are checked.

DBCC SYS REPAIRDatabase repairs are performed during this phase if REPAIR_FAST, REPAIR_REBUILD, or REPAIR_ALLOW_DATA_LOSS is specified, and there are system table errors that must be repaired.Progress reported at the individual repair level.

The counter is updated for each repair that is completed.

DBCC SSB CHECKSQL Server Service Broker objects are checked during this phase.

Note: This phase is not executed when DBCC CHECKTABLE is executed.

Progress is not reported.
DBCC CHECKCATALOGThe consistency of database catalogs are checked during this phase.

Note: This phase is not executed when DBCC CHECKTABLE is executed.

Progress is not reported.
DBCC IVIEW CHECKThe logical consistency of any indexed views present in the database is checked during this phase.Progress reported at the level of the individual database view that is being checked.

Informational Statements

Validation Statements

Maintenance Statements

Miscellaneous Statements

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *