Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : SQL Server 2022 (16.x) et versions
ultérieures d’Azure SQL Database
Azure SQL Managed Instance
Les tables de registre en ajout seul autorisent seulement les opérations INSERT sur vos tables, qui garantissent que les utilisateurs privilégiés, par exemple les administrateurs de base de données, ne peuvent pas modifier les données à l’aide d’opérations de langage de manipulation de données traditionnelles. Les tables de registre en ajout seul sont idéales pour les systèmes qui ne mettent pas à jour ou ne suppriment pas les enregistrements, par exemple les systèmes d’informations de sécurité et gestion d’événements ou les systèmes blockchain dans lesquels les données doivent être répliquées à partir du blockchain sur une base de données. Comme aucune opération UPDATE ou DELETE n’est effectuée sur une table en ajout seul, vous n’avez pas besoin de la table d’historique correspondante, contrairement aux tables de registre pouvant être mises à jour.
Vous pouvez créer une table de registre d’ajout uniquement en spécifiant l’argument LEDGER = ON dans votre CREATE TABLE instruction (Transact-SQL) et en spécifiant l’option APPEND_ONLY = ON .
Important
Une fois qu’une table a été créée comme table de registre, elle ne peut pas être redéfinie comme table sans fonctionnalités de registre. En conséquence, un attaquant ne pourra pas temporairement supprimer les fonctionnalités de registre, effectuer des changements, puis réactiver les fonctionnalités de registre.
Schéma de la table de registre d’ajout uniquement
Une table d’ajout uniquement doit avoir les colonnes GENERATED ALWAYS suivantes qui contiennent des métadonnées indiquant les transactions qui ont modifié la table et l’ordre des opérations par lesquelles les lignes ont été mises à jour par la transaction. Lorsque vous créez une table de registre à ajout seul, des colonnes GENERATED ALWAYS seront créées dans votre table de registre. Ces données sont utiles pour comprendre comment les données ont été insérées au fil du temps.
Si vous ne spécifiez pas les définitions des GENERATED ALWAYS colonnes dans l’instruction CREATE TABLE , le système les ajoute automatiquement à l’aide des noms par défaut suivants.
| Nom de colonne par défaut | Type de données | Description |
|---|---|---|
| ledger_start_transaction_id | bigint | ID de la transaction qui a créé une version de ligne |
| grand_livre_numéro_de_séquence_de_début | bigint | Numéro de séquence d’une opération dans une transaction qui a créé une version de ligne |
Vue de registre
Pour chaque table de registre en ajout seul, le système génère automatiquement une vue, appelée la vue de registre. La vue de registre indique toutes les insertions de ligne qui se sont produites sur la table. La vue de registre est principalement utile pour les tables de registre pouvant être mises à jour, plutôt que pour les tables de registre en ajout seul, car ces dernières n’ont pas de fonctionnalités UPDATE ou DELETE. La vue du registre pour les tables du registre en ajout seul est disponible afin d’assurer la cohérence entre les tables du registre pouvant être mises à jour et celles en ajout seul.
Schéma de vue du registre
Remarque
Les noms des colonnes d’affichage du registre peuvent être personnalisés lorsque vous créez la table à l’aide du <ledger_view_option> paramètre avec l’instruction CREATE TABLE (Transact-SQL). Pour plus d’informations, consultez les options d’affichage du registre et les exemples correspondants dans CREATE TABLE (Transact-SQL).
| Nom de colonne par défaut | Type de données | Description |
|---|---|---|
| ledger_transaction_id | bigint | ID de la transaction qui a créé ou supprimé une version de ligne. |
| numéro de séquence du grand livre | bigint | Numéro de séquence d’une opération au niveau d’une ligne au sein de la transaction sur la table. |
| ledger_operation_type | tinyint | Contient 1 (INSERT) ou 2 (DELETE). L’insertion d’une ligne dans la table de registre produit une nouvelle ligne dans la vue de registre qui contient 1 dans cette colonne. La suppression d’une ligne de la table de registre produit une nouvelle ligne dans la vue de registre qui contient 2 dans cette colonne. La mise à jour d’une ligne dans la table de registre produit deux nouvelles lignes dans la vue de registre. Une ligne contient 2 (DELETE) et l’autre ligne contient 1 (INSERT) dans cette colonne. Un DELETE ne doit pas se produire sur une table de registre d’ajout uniquement. |
| ledger_operation_type_desc | nvarchar(128) | Contient INSERT ou DELETE. Pour plus d’informations, consultez la ligne précédente. |