Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2022 (16.x) e versões posteriores
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
As tabelas do razão atualizáveis são tabelas com um controle de versão do sistema nas quais os usuários podem executar atualizações e exclusões, fornecendo também funcionalidades de evidência de adulteração. Quando ocorrem atualizações ou exclusões, todas as versões anteriores de uma linha são preservadas em uma tabela secundária, conhecida como a tabela de histórico. A tabela de histórico reflete o esquema da tabela de livro-razão atualizável. Quando uma linha é atualizada, a versão mais recente da linha permanece na tabela de ledger, enquanto sua versão anterior é inserida na tabela de histórico pelo sistema, de forma transparente para a aplicação.
As tabelas do razão e as tabelas temporais atualizáveis são tabelas com controle de versão do sistema, para as quais o mecanismo de banco de dados captura versões de linha históricas em tabelas de histórico secundárias. Qualquer uma dessas tecnologias oferece benefícios exclusivos. As tabelas do razão atualizáveis tornam os dados atuais e históricos evidentes para adulterações. As tabelas temporais dão suporte à consulta dos dados armazenados em qualquer ponto no tempo, em vez de apenas os dados corretos no momento. Você pode usar as duas tecnologias juntas criando tabelas que sejam, ao mesmo tempo, tabelas de ledger atualizáveis e tabelas temporais.
Você pode criar uma tabela do razão atualizável especificando o argumento LEDGER = ON na instrução CREATE DATABASE(Transact-SQL).
Dica
LEDGER = ON é opcional na criação de tabelas ledger atualizáveis em um banco de dados ledger. Por padrão, cada tabela é uma tabela do razão atualizável em um banco de dados do razão.
Para obter informações sobre as opções disponíveis quando você especificar o LEDGER argumento em sua instrução T-SQL, consulte CREATE TABLE (Transact-SQL).
Importante
Depois que uma tabela do razão é criada, ela não pode ser revertida para uma tabela que não seja uma tabela do razão. Assim, um invasor não pode remover temporariamente os recursos de ledger de uma tabela de ledger, fazer alterações e, em seguida, reativar a funcionalidade de ledger.
Esquema da tabela de ledger atualizável
Uma tabela do razão atualizável precisa ter as colunas GENERATED ALWAYS a seguir que contenham metadados indicando quais transações fizeram alterações na tabela e a ordem das operações pelas quais as linhas foram atualizadas pela transação. Esses dados são úteis para fins de análise forense no entendimento de como os dados foram inseridos ao longo do tempo.
Se você não especificar as colunas GENERATED ALWAYS obrigatórias da tabela do razão e da tabela de histórico do razão na instrução CREATE TABLE(Transact-SQL), o sistema adicionará automaticamente as colunas e usará os nomes padrão a seguir. Para obter mais informações, confira os exemplos de Como criar uma tabela do razão atualizável.
| Nome da coluna padrão | Tipo de dados | Descrição |
|---|---|---|
| ledger_start_transaction_id | bigint | A ID da transação que criou uma versão de linha |
| ledger_end_transaction_id | bigint | A ID da transação que excluiu uma versão de linha |
| ledger_start_sequence_number | bigint | O número de sequência de uma operação dentro de uma transação que criou uma versão de linha |
| ledger_end_sequence_number | bigint | O número de sequência de uma operação dentro de uma transação que excluiu uma versão de linha |
Tabela de histórico
A tabela de histórico é criada automaticamente quando uma tabela do razão atualizável é criada. A tabela de histórico armazena os valores históricos das linhas modificadas por operações de atualização e exclusão na tabela de ledger atualizável. O esquema da tabela de histórico é igual ao esquema da tabela de ledger atualizável à qual ela está associada.
Ao criar uma tabela de ledger atualizável, você pode especificar o nome do esquema que conterá a tabela de histórico e o nome da tabela de histórico, ou deixar que o sistema gere o nome da tabela de histórico e a adicione ao mesmo esquema da tabela de ledger. Tabelas de histórico com nomes gerados pelo sistema são chamadas de tabelas de histórico anônimas. A convenção de nomenclatura para uma tabela de histórico anônima é <schema>.<updatableledgertablename>.MSSQL_LedgerHistoryFor_<GUID>.
Exibição do razão
Para cada tabela do razão atualizável, o sistema gera automaticamente uma exibição, chamada de exibição do razão. A exibição do razão é uma junção da tabela do razão atualizável e da respectiva tabela de histórico associada. Ela relata todas as modificações de linha ocorridas na tabela do razão atualizável pela junção dos dados históricos na tabela de histórico. Essa exibição permite que os usuários, os parceiros deles ou os auditores analisem todas as operações históricas e detectem possíveis adulterações. Cada operação em uma linha é acompanhada pelo ID da transação executora, bem como da informação sobre se a operação foi uma DELETE ou uma INSERT. Os usuários podem recuperar mais informações sobre a hora em que a transação foi executada e a identidade do usuário que a executou e correlacioná-la a outras operações executadas por essa transação.
Por exemplo, se você quiser acompanhar o histórico de transações em um cenário bancário, a visualização do livro-razão fornece um registro cronológico das transações ao longo do tempo. Usando o modo de exibição do razão, você não precisa exibir de modo independente as tabelas de histórico e tabela do razão atualizáveis nem criar sua exibição para fazer isso.
Para ver um exemplo de como usar a exibição de ledger, consulte Criar e usar tabelas de ledger atualizáveis.
O esquema da exibição do ledger espelha as colunas definidas no ledger atualizável e na tabela de histórico, mas as colunas GENERATED ALWAYS diferem das do ledger atualizável e da tabela de histórico.
Esquema de exibição do razão
Observação
Os nomes da coluna de exibição do razão podem ser personalizados quando você cria a tabela usando o parâmetro <ledger_view_option> com a instrução CREATE TABLE (Transact-SQL). Para obter mais informações, consulte as opções de exibição do ledger e os exemplos correspondentes em CREATE TABLE (Transact-SQL).
| Nome da coluna padrão | Tipo de dados | Descrição |
|---|---|---|
| ledger_transaction_id | bigint | A ID da transação que criou ou excluiu uma versão de linha. |
| ledger_sequence_number | bigint | O número de sequência de uma operação em nível de linha dentro da transação na tabela. |
| ledger_operation_type | tinyint | Contém 1 (INSERT) ou 2 (DELETE). A inserção de uma linha na tabela do razão produz uma nova linha na exibição do razão contendo 1 nessa coluna. A exclusão de uma linha da tabela do razão produz uma nova linha na exibição do razão contendo 2 nessa coluna. A atualização de uma linha na tabela do razão produz duas novas linhas na exibição do razão. Uma linha contém 2 (DELETE) e a outra linha contém 1 (INSERT) nesta coluna. |
| ledger_operation_type_desc | nvarchar(128) | Contém INSERT ou DELETE. Para saber mais, confira a linha anterior. |