{"id":27516,"date":"2023-08-02T06:30:00","date_gmt":"2023-08-02T04:30:00","guid":{"rendered":"https:\/\/expert-only.com\/?p=27516"},"modified":"2023-10-10T18:06:10","modified_gmt":"2023-10-10T16:06:10","slug":"tables-temporelles-sql-server","status":"publish","type":"post","link":"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/","title":{"rendered":"Comment utiliser les tables temporelles SQL Server ?"},"content":{"rendered":"\n<h4 class=\"wp-block-heading\" id=\"h-introduction-aux-tables-temporelles-sql-server-avec-versions-gerees-par-le-systeme-pour-suivre-de-maniere-automatique-les-version-des-donnees\"><strong><em>Introduction aux tables temporelles SQL Server avec versions g\u00e9r\u00e9es par le syst\u00e8me pour suivre de mani\u00e8re automatique les version des donn\u00e9es.<\/em><\/strong><\/h4>\n\n\n\n<p>Les tables temporelles dans SQL Server, \u00e9galement connues sous le nom de tables versionn\u00e9es par le syst\u00e8me, sont une fonctionnalit\u00e9 introduite dans MS SQL Server 2016. Elles offrent un support int\u00e9gr\u00e9 pour stocker les donn\u00e9es historiques li\u00e9es aux modifications apport\u00e9es aux donn\u00e9es d&rsquo;une table. Cette fonctionnalit\u00e9 est b\u00e9n\u00e9fique pour les besoins d&rsquo;audit ou d&rsquo;analyse des donn\u00e9es commerciales, o\u00f9 il est crucial de comprendre l&rsquo;\u00e9tat des donn\u00e9es \u00e0 un moment donn\u00e9. Et aussi pour toutes les entreprises soumises \u00e0 des rapports r\u00e9glementaires r\u00e9guliers avec des obligations de transparence l\u00e9gale.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-fonctionnement-de-base-des-tables-temporelles-ms-sql\">Fonctionnement de base des tables temporelles MS SQL<\/h2>\n\n\n\n<p>Commen\u00e7ons par cr\u00e9er une table temporelle de base en Transact-SQL. Ainsi, le code T-SQL ci-dessous <strong>cr\u00e9e une table nomm\u00e9e Employee avec un versionnement syst\u00e8me<\/strong>. Les colonnes <em>SysStartTime<\/em> et <em>SysEndTime<\/em> sont utilis\u00e9es pour enregistrer la p\u00e9riode de chaque ligne. Pour faire un petit r\u00e9capitulatif, 3 \u00e9l\u00e9ments suppl\u00e9mentaires sont n\u00e9cessaires pour cr\u00e9er et g\u00e9rer une table temporelle SQL Server :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><em>SysStartTime<\/em><\/strong> colonne syst\u00e8me pour marquer le d\u00e9but de la p\u00e9riode, prend en charge uniquement le type de donn\u00e9es DATETIME2.<\/li>\n\n\n\n<li><strong><em>SysEndTime<\/em><\/strong> pour marquer la fin, prend en charge uniquement le type de donn\u00e9es DATETIME2.<\/li>\n\n\n\n<li>Une table d&rsquo;historique syst\u00e8me, ici nomm\u00e9e <strong><em>dbo.EmployeeHistory<\/em><\/strong>, avec la m\u00eame structure, sauf les cl\u00e9s.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-l-instruction-de-creation-de-table-est-specifique\">L&rsquo;instruction de cr\u00e9ation de table est sp\u00e9cifique<\/h3>\n\n\n\n<p>La d\u00e9finition de la table est sp\u00e9ciale, cependant, et c&rsquo;est le but, ins\u00e9rer des donn\u00e9es dans une table versionn\u00e9e par le syst\u00e8me est similaire \u00e0 ins\u00e9rer des donn\u00e9es dans n&rsquo;importe quelle autre table SQL Server. En effet, <strong>les tables versionn\u00e9es par le syst\u00e8me, c&rsquo;est-\u00e0-dire les tables temporelles, sont con\u00e7ues pour g\u00e9rer automatiquement le versionnement des donn\u00e9es<\/strong>, particuli\u00e8rement utile pour g\u00e9rer les dimensions et les dimensions \u00e0 \u00e9volution lente, appel\u00e9es <a href=\"https:\/\/www.oracle.com\/webfolder\/technetwork\/tutorials\/obe\/db\/10g\/r2\/owb\/owb10gr2_gs\/owb\/lesson3\/slowlychangingdimensions.htm\" target=\"_blank\" rel=\"noreferrer noopener\">SCD<\/a>.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mssql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">CREATE TABLE [Expert-Only].dbo.Employee\n(\n   EmployeeId INT PRIMARY KEY,\n   EmployeeName NVARCHAR(100),\n   Position NVARCHAR(100),\n   Salary DECIMAL(18, 2),\n   SysStartTime  DATETIME2 GENERATED ALWAYS AS ROW START,\n   SysEndTime    DATETIME2 GENERATED ALWAYS AS ROW END,\n   PERIOD FOR SYSTEM_TIME (SysStartTime, SysEndTime)\n)\nWITH (SYSTEM_VERSIONING = ON (\n   HISTORY_TABLE = dbo.EmployeeHistory)\n);<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-inserer-des-donnees-dans-la-table-temporelle\">Ins\u00e9rer des donn\u00e9es dans la table temporelle<\/h3>\n\n\n\n<p>Cette instruction <a href=\"https:\/\/expert-only.com\/en\/t-sql\/sql-server-insert-into-from-a-select\/\"><strong>T-SQL INSERT de base<\/strong><\/a> ins\u00e9rera une nouvelle ligne dans la table Employee, et elle mettra \u00e0 jour la table d&rsquo;historique associ\u00e9e lorsque les donn\u00e9es changeront.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mssql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">INSERT INTO [Expert-Only].dbo.Employee (EmployeeId, EmployeeName, Position, Salary)\nVALUES (1, 'John Doe', 'Developer', 80000);<\/pre>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"540\" src=\"https:\/\/expert-only.com\/wp-content\/uploads\/2023\/10\/create-sql-server-temporal-table.jpg\" alt=\"Cr\u00e9er une table temporelle versionn\u00e9e par le syst\u00e8me SQL Server et ins\u00e9rer des donn\u00e9es\" class=\"wp-image-27467\" srcset=\"https:\/\/expert-only.com\/wp-content\/uploads\/2023\/10\/create-sql-server-temporal-table.jpg 800w, https:\/\/expert-only.com\/wp-content\/uploads\/2023\/10\/create-sql-server-temporal-table-300x203.jpg 300w, https:\/\/expert-only.com\/wp-content\/uploads\/2023\/10\/create-sql-server-temporal-table-768x518.jpg 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption class=\"wp-element-caption\"><em>Cr\u00e9er une table temporelle versionn\u00e9e par le syst\u00e8me SQL Server et ins\u00e9rer des donn\u00e9es<\/em><\/figcaption><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-structure-de-la-table-temporelle-geree-et-de-la-table-d-historique\">Structure de la table temporelle g\u00e9r\u00e9e et de la table d&rsquo;historique<\/h3>\n\n\n\n<p>Comme vous pouvez le voir dans la capture d&rsquo;\u00e9cran ci-dessous, la table <strong><em>Employee<\/em><\/strong> est maintenant versionn\u00e9e par le syst\u00e8me et la table <strong><em>EmployeeHistory<\/em><\/strong> se trouve juste derri\u00e8re elle dans l&rsquo;explorateur SSMS. <strong>Les deux tables ont la m\u00eame structure, sauf bien s\u00fbr les cl\u00e9s primaires<\/strong>, car la table d&rsquo;historique doit stocker plusieurs versions de lignes avec les m\u00eames ID.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/expert-only.com\/wp-content\/uploads\/2023\/10\/sql-server-System-Versioned-and-history-table-structure.jpg\" alt=\"Table d'historique sous la table versionn\u00e9e par le syst\u00e8me\" class=\"wp-image-27474\" style=\"width:439px;height:678px\" width=\"439\" height=\"678\" srcset=\"https:\/\/expert-only.com\/wp-content\/uploads\/2023\/10\/sql-server-System-Versioned-and-history-table-structure.jpg 440w, https:\/\/expert-only.com\/wp-content\/uploads\/2023\/10\/sql-server-System-Versioned-and-history-table-structure-194x300.jpg 194w\" sizes=\"auto, (max-width: 439px) 100vw, 439px\" \/><figcaption class=\"wp-element-caption\"><em>Table d&rsquo;historique sous la table versionn\u00e9e par le syst\u00e8me<\/em><\/figcaption><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-mettre-a-jour-les-donnees-sql-dans-les-tables-temporelles\">Mettre \u00e0 jour les donn\u00e9es SQL dans les tables temporelles<\/h2>\n\n\n\n<p>Lorsque vous mettez \u00e0 jour un enregistrement dans une table versionn\u00e9e par le syst\u00e8me, SQL Server ins\u00e8re automatiquement une copie de l&rsquo;ancienne ligne dans la table d&rsquo;historique. Ainsi, vous pouvez analyser tout changement pass\u00e9 pour mieux comprendre vos donn\u00e9es. Par cons\u00e9quent, apr\u00e8s l&rsquo;ex\u00e9cution de cette commande SQL, la table <em>EmployeeHistory<\/em> aura un enregistrement avec l&rsquo;ancien salaire. Pour illustrer le concept, la requ\u00eate suivante d\u00e9clenche une insertion avec l&rsquo;ancienne valeur de la ligne, directement dans la table d&rsquo;historique.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mssql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">UPDATE [Expert-Only].dbo.Employee\n   SET Salary = 85000\n   WHERE EmployeeId = 1;\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-supprimer-des-donnees-des-tables-versionnees-par-le-systeme\">Supprimer des donn\u00e9es des tables versionn\u00e9es par le syst\u00e8me<\/h2>\n\n\n\n<p>La suppression d&rsquo;enregistrements dans une table versionn\u00e9e par le syst\u00e8me ne supprime pas compl\u00e8tement les donn\u00e9es. Les enregistrements supprim\u00e9s seront d\u00e9plac\u00e9s vers la table d&rsquo;historique. Apr\u00e8s l&rsquo;ex\u00e9cution de la commande T-SQL ci-dessous, la table <strong><em>EmployeeHistory<\/em><\/strong> aura l&rsquo;enregistrement supprim\u00e9.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mssql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">DELETE FROM Employee\n   WHERE EmployeeId = 1;\n<\/pre>\n\n\n\n<p>Il faut donc bien s\u00fbr \u00eatre conscient de la fr\u00e9quence des changements de donn\u00e9es et aussi des volumes de donn\u00e9es pour \u00e9viter de se retrouver avec d&rsquo;\u00e9normes bases de donn\u00e9es et sauvegardes. Vous pouvez le voir comme le m\u00eame principe que la <strong><a href=\"https:\/\/expert-only.com\/en\/ms-dos\/delete-windows-file-using-cmd\/\">corbeille Windows<\/a><\/strong>, en effet, vous pouvez avoir plusieurs versions du m\u00eame fichier, supprim\u00e9es mais toujours dans la corbeille, jusqu&rsquo;\u00e0 ce que vous la vidiez.<\/p>\n\n\n\n<p><strong><em>Une solution \u00e0 cela est de mettre en place un syst\u00e8me de purge qui supprime p\u00e9riodiquement les anciens enregistrements de la table d&rsquo;historique.<\/em><\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-requete-t-sql-pour-verifier-les-donnees-des-tables-temporelles\">Requ\u00eate T-SQL pour v\u00e9rifier les donn\u00e9es des tables temporelles<\/h2>\n\n\n\n<p><strong>SQL Server fournit la clause FOR SYSTEM_TIME pour interroger les donn\u00e9es d&rsquo;une table versionn\u00e9e par le syst\u00e8me.<\/strong> Cette commande SQL renverra les donn\u00e9es telles qu&rsquo;elles \u00e9taient au moment sp\u00e9cifi\u00e9. Vous pouvez utiliser plus de d\u00e9tails bien s\u00fbr pour \u00eatre plus pr\u00e9cis. Vous pouvez aller jusqu&rsquo;\u00e0<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mssql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">SELECT *\n  FROM Employee\n  FOR SYSTEM_TIME AS OF '2023-10-10';\n\nSELECT *\n  FROM Employee\n  FOR SYSTEM_TIME AS OF '2023-10-10 15:30:45.1234567';\n\n<\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-tester-une-table-historisee-geree-pour-mieux-comprendre\">Tester une table historis\u00e9e g\u00e9r\u00e9e pour mieux comprendre<\/h2>\n\n\n\n<p>Pour effectuer un test plus approfondi, r\u00e9capitulons toutes les actions effectu\u00e9es, et ajoutons-en une, dans cet ordre pour voir si la table suit correctement nos modifications. Entre chaque \u00e9tape, attendez quelques minutes pour une meilleure visibilit\u00e9 dans la table d&rsquo;historique.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Ins\u00e9rer la premi\u00e8re ligne avec un salaire de <em>80&rsquo;000<\/em> dollars (r\u00e9alis\u00e9 dans la deuxi\u00e8me section du tutoriel)<\/li>\n\n\n\n<li>Mettre \u00e0 jour le salaire \u00e0 <em>85&rsquo;000<\/em> dollars<\/li>\n\n\n\n<li>Supprimer l&#8217;employ\u00e9 de la table.<\/li>\n\n\n\n<li>Ins\u00e9rer \u00e0 nouveau le m\u00eame employ\u00e9, mais cette fois avec un salaire de <em>90&rsquo;000<\/em> $ et un r\u00f4le de <strong><em>Developer Senior<\/em><\/strong>.<\/li>\n\n\n\n<li>Supprimer \u00e0 nouveau l&#8217;employ\u00e9 de la table. <strong><em>Non visible sur la capture d&rsquo;\u00e9cran<\/em><\/strong> mais disponible dans le code T-SQL ci-dessous.<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mssql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">UPDATE [Expert-Only].dbo.Employee\n   SET Salary = 85000\n   WHERE EmployeeId = 1;\n\n-- *** Attendre quelques minutes *** -- \nDELETE FROM [Expert-Only].dbo.Employee\n   WHERE EmployeeId = 1;\n\n-- *** Attendre quelques minutes *** -- \nINSERT INTO [Expert-Only].dbo.Employee\n   (EmployeeId, EmployeeName, Position, Salary)\nVALUES (1, 'John Doe', 'Developer Senior', 90000);\n\n-- *** Attendre quelques minutes *** -- \nDELETE FROM [Expert-Only].dbo.Employee\n   WHERE EmployeeId = 1;\n\nSELECT * FROM dbo.EmployeeHistory;\n\n-- Premier insert\nSELECT * FROM [Expert-Only].dbo.Employee\n  FOR SYSTEM_TIME AS OF '2023-10-10 10:56:00';\n\n-- Mise \u00e0 jour \u00e0 85000 $\nSELECT * FROM [Expert-Only].dbo.Employee\n  FOR SYSTEM_TIME AS OF '2023-10-10 11:03:00';\n\n-- Deuxi\u00e8me insertion en tant que Developper Senior\nSELECT * FROM [Expert-Only].dbo.Employee\n  FOR SYSTEM_TIME AS OF '2023-10-10 11:06:00';\n<\/pre>\n\n\n\n<p>Ensuite, v\u00e9rifiez le r\u00e9sultat en utilisant SSMS pour s\u00e9lectionner le contenu de la table d&rsquo;historique et aussi la table Employee \u00e0 des points tr\u00e8s sp\u00e9cifiques dans le temps. En cons\u00e9quence, la table Employee est maintenant vide. Les trois lignes archiv\u00e9es de la table <em>EmployeeHistory<\/em> sont disponibles en utilisant une instruction SELECT sur la table Employee elle-m\u00eame \u00e0 3 moments diff\u00e9rents.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/expert-only.com\/wp-content\/uploads\/2023\/10\/test-sql-server-temporal-table-with-history-check.jpg\" alt=\"Les donn\u00e9es de la table historique sont visible dans la table versionn\u00e9e.\"\/><figcaption class=\"wp-element-caption\">Les donn\u00e9es de la table historique sont visible dans la table versionn\u00e9e.<\/figcaption><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-modifier-une-table-temporelle-avec-version-geree-par-le-systeme\">Modifier une table temporelle avec version g\u00e9r\u00e9e par le syst\u00e8me<\/h2>\n\n\n\n<p>Bien s\u00fbr, comme les mod\u00e8les de donn\u00e9es \u00e9voluent dans la base de donn\u00e9es au fil du temps, vous devez maintenir la table d&rsquo;historique lorsque la table versionn\u00e9e change. Pour modifier le sch\u00e9ma d&rsquo;une table versionn\u00e9e par le syst\u00e8me, par exemple pour ajouter une nouvelle colonne \u00e0 la table Employ\u00e9, suivez ces 3 \u00e9tapes, dans cet ordre:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>D\u00e9sactivez d&rsquo;abord la gestion des versions par le syst\u00e8me sur la table.<\/li>\n\n\n\n<li>Apportez les modifications \u00e0 la table temporelle.<\/li>\n\n\n\n<li>Puis r\u00e9activez la gestion des versions par le syst\u00e8me.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-supprimer-une-table-temporelle-sans-erreur\">Supprimer une table temporelle sans erreur<\/h2>\n\n\n\n<p>Comme il s&rsquo;agit d&rsquo;un type de table sp\u00e9cifique, pour la supprimer, vous devez \u00e9galement dans ce cas arr\u00eater manuellement la version avant de supprimer la table. <strong>Pour supprimer une table avec version syst\u00e8me sans erreur, utilisez l&rsquo;option de g\u00e9n\u00e9ration de script de SSMS pour g\u00e9n\u00e9rer l&rsquo;instruction compl\u00e8te.<\/strong> Comme vous pouvez le voir ci-dessous, il effectue 3 op\u00e9rations:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Arr\u00eatez la version.<\/li>\n\n\n\n<li>Supprimez la table versionn\u00e9e par le syst\u00e8me.<\/li>\n\n\n\n<li>Supprimez la table temporelle contenant l&rsquo;historique.<\/li>\n<\/ol>\n\n\n\n<p>Si vous essayez de supprimer la table sans arr\u00eater la version, le syst\u00e8me renvoie cette erreur:<\/p>\n\n\n\n<p>Msg 13552, Niveau 16, \u00c9tat 1, Ligne 1 <em>La suppression de la table a \u00e9chou\u00e9 sur la table &lsquo;Expert-Only.dbo.Employee&rsquo; car ce n&rsquo;est pas une op\u00e9ration prise en charge sur les tables temporelles versionn\u00e9es par le syst\u00e8me.<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-conclusion-sur-la-configuration-des-tables-temporelles-sql-server\">Conclusion sur la configuration des tables temporelles SQL Server<\/h3>\n\n\n\n<p>En conclusion, les Tables Temporelles SQL Server offrent une solution int\u00e9gr\u00e9e pour suivre les modifications des donn\u00e9es au fil du temps. Elles peuvent \u00eatre pr\u00e9cieuses dans des situations o\u00f9 un audit ou une analyse des donn\u00e9es est n\u00e9cessaire. Pour des sc\u00e9narios r\u00e9els en entreprise, lorsque vous deviez effectuer toutes les \u00e9tapes d&rsquo;archivage avec du code personnalis\u00e9 ou SCD, c&rsquo;\u00e9tait complexe et lourd \u00e0 maintenir. Utiliser cette fonctionnalit\u00e9 de table versionn\u00e9e par le syst\u00e8me la rend beaucoup plus simple \u00e0 mettre en \u0153uvre.<\/p>\n\n\n\n<p>En comprenant comment cr\u00e9er, ins\u00e9rer, mettre \u00e0 jour, supprimer et interroger des donn\u00e9es \u00e0 partir de ces tables, on peut tirer parti de cette puissante fonctionnalit\u00e9 dans MS SQL Server. Pour aller plus loin et d\u00e9couvrir d&rsquo;autres cas d&rsquo;utilisation pour les tables temporelles, un exemple typique et concret est de <a href=\"https:\/\/expert-only.com\/fr\/ssis\/importer-un-fichier-texte-avec-ssis\/\"><strong>charger une table de dimension d&rsquo;entrep\u00f4t de donn\u00e9es en utilisant un package SSIS<\/strong><\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-embed aligncenter is-type-wp-embed is-provider-tutoriels-sql-et-it wp-block-embed-tutoriels-sql-et-it\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"SG2VnDvtVi\"><a href=\"https:\/\/expert-only.com\/fr\/ssis\/importer-un-fichier-texte-avec-ssis\/\">Importer un Fichier CSV dans une Table avec SSIS<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u00ab\u00a0Importer un Fichier CSV dans une Table avec SSIS\u00a0\u00bb &#8212; Tutoriels SQL et IT\" src=\"https:\/\/expert-only.com\/fr\/ssis\/importer-un-fichier-texte-avec-ssis\/embed\/#?secret=CwDvV8PigD#?secret=SG2VnDvtVi\" data-secret=\"SG2VnDvtVi\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>Pour plus d&rsquo;informations d\u00e9taill\u00e9es sur le travail avec les Tables Temporelles dans SQL Server, consultez la documentation officielle de <strong>Microsoft<\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>Introduction aux tables temporelles SQL Server avec versions g\u00e9r\u00e9es par le syst\u00e8me pour suivre de mani\u00e8re automatique les version des donn\u00e9es. Les tables temporelles dans SQL Server, \u00e9galement connues sous le nom de tables versionn\u00e9es par le syst\u00e8me, sont <a class=\"mh-excerpt-more\" href=\"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/\" title=\"Comment utiliser les tables temporelles SQL Server ?\">&#8230;<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":10617,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":{"0":"post-27516","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-t-sql"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.7 (Yoast SEO v26.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Comment utiliser les tables temporelles SQL Server ?<\/title>\n<meta name=\"description\" content=\"Les tables temporelles SQL Server permettent de g\u00e9rer automatiquement les versions et suivre les suppressions, mises \u00e0 jour et insertions.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Comment utiliser les tables temporelles SQL Server ?\" \/>\n<meta property=\"og:description\" content=\"Les tables temporelles SQL Server permettent de g\u00e9rer automatiquement les versions et suivre les suppressions, mises \u00e0 jour et insertions.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/\" \/>\n<meta property=\"og:site_name\" content=\"Tutoriels SQL et IT\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ExpertOnlyCom\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-02T04:30:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-10-10T16:06:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/expert-only.com\/wp-content\/uploads\/2022\/09\/digitization-FD44BBF7CF9_1920x1080.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Expert-Only\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@expert_only\" \/>\n<meta name=\"twitter:site\" content=\"@expert_only\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Expert-Only\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/\"},\"author\":{\"name\":\"Expert-Only\",\"@id\":\"https:\/\/expert-only.com\/fr\/#\/schema\/person\/406a9576b52944f018739a42046873ef\"},\"headline\":\"Comment utiliser les tables temporelles SQL Server ?\",\"datePublished\":\"2023-08-02T04:30:00+00:00\",\"dateModified\":\"2023-10-10T16:06:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/\"},\"wordCount\":1521,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/expert-only.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/expert-only.com\/wp-content\/uploads\/2022\/09\/digitization-FD44BBF7CF9_1920x1080.jpg\",\"articleSection\":[\"T-SQL\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/\",\"url\":\"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/\",\"name\":\"Comment utiliser les tables temporelles SQL Server ?\",\"isPartOf\":{\"@id\":\"https:\/\/expert-only.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/expert-only.com\/wp-content\/uploads\/2022\/09\/digitization-FD44BBF7CF9_1920x1080.jpg\",\"datePublished\":\"2023-08-02T04:30:00+00:00\",\"dateModified\":\"2023-10-10T16:06:10+00:00\",\"description\":\"Les tables temporelles SQL Server permettent de g\u00e9rer automatiquement les versions et suivre les suppressions, mises \u00e0 jour et insertions.\",\"breadcrumb\":{\"@id\":\"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/#primaryimage\",\"url\":\"https:\/\/expert-only.com\/wp-content\/uploads\/2022\/09\/digitization-FD44BBF7CF9_1920x1080.jpg\",\"contentUrl\":\"https:\/\/expert-only.com\/wp-content\/uploads\/2022\/09\/digitization-FD44BBF7CF9_1920x1080.jpg\",\"width\":1920,\"height\":1080},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/expert-only.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Comment utiliser les tables temporelles SQL Server ?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/expert-only.com\/fr\/#website\",\"url\":\"https:\/\/expert-only.com\/fr\/\",\"name\":\"Tutoriels SQL et IT\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/expert-only.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/expert-only.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/expert-only.com\/fr\/#organization\",\"name\":\"Expert-Only\",\"url\":\"https:\/\/expert-only.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/expert-only.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/expert-only.com\/wp-content\/uploads\/2017\/09\/cropped-logo_Expert-Only.jpg\",\"contentUrl\":\"https:\/\/expert-only.com\/wp-content\/uploads\/2017\/09\/cropped-logo_Expert-Only.jpg\",\"width\":381,\"height\":174,\"caption\":\"Expert-Only\"},\"image\":{\"@id\":\"https:\/\/expert-only.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/ExpertOnlyCom\/\",\"https:\/\/x.com\/expert_only\",\"https:\/\/www.youtube.com\/channel\/UCMS5sR_FwAetB0FmciNvUaA\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/expert-only.com\/fr\/#\/schema\/person\/406a9576b52944f018739a42046873ef\",\"name\":\"Expert-Only\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/expert-only.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/084b15660763ff5b13bb60b2f52f97bb?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/084b15660763ff5b13bb60b2f52f97bb?s=96&d=identicon&r=g\",\"caption\":\"Expert-Only\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Comment utiliser les tables temporelles SQL Server ?","description":"Les tables temporelles SQL Server permettent de g\u00e9rer automatiquement les versions et suivre les suppressions, mises \u00e0 jour et insertions.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/","og_locale":"fr_FR","og_type":"article","og_title":"Comment utiliser les tables temporelles SQL Server ?","og_description":"Les tables temporelles SQL Server permettent de g\u00e9rer automatiquement les versions et suivre les suppressions, mises \u00e0 jour et insertions.","og_url":"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/","og_site_name":"Tutoriels SQL et IT","article_publisher":"https:\/\/www.facebook.com\/ExpertOnlyCom\/","article_published_time":"2023-08-02T04:30:00+00:00","article_modified_time":"2023-10-10T16:06:10+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/expert-only.com\/wp-content\/uploads\/2022\/09\/digitization-FD44BBF7CF9_1920x1080.jpg","type":"image\/jpeg"}],"author":"Expert-Only","twitter_card":"summary_large_image","twitter_creator":"@expert_only","twitter_site":"@expert_only","twitter_misc":{"\u00c9crit par":"Expert-Only","Dur\u00e9e de lecture estim\u00e9e":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/#article","isPartOf":{"@id":"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/"},"author":{"name":"Expert-Only","@id":"https:\/\/expert-only.com\/fr\/#\/schema\/person\/406a9576b52944f018739a42046873ef"},"headline":"Comment utiliser les tables temporelles SQL Server ?","datePublished":"2023-08-02T04:30:00+00:00","dateModified":"2023-10-10T16:06:10+00:00","mainEntityOfPage":{"@id":"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/"},"wordCount":1521,"commentCount":0,"publisher":{"@id":"https:\/\/expert-only.com\/fr\/#organization"},"image":{"@id":"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/#primaryimage"},"thumbnailUrl":"https:\/\/expert-only.com\/wp-content\/uploads\/2022\/09\/digitization-FD44BBF7CF9_1920x1080.jpg","articleSection":["T-SQL"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/","url":"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/","name":"Comment utiliser les tables temporelles SQL Server ?","isPartOf":{"@id":"https:\/\/expert-only.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/#primaryimage"},"image":{"@id":"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/#primaryimage"},"thumbnailUrl":"https:\/\/expert-only.com\/wp-content\/uploads\/2022\/09\/digitization-FD44BBF7CF9_1920x1080.jpg","datePublished":"2023-08-02T04:30:00+00:00","dateModified":"2023-10-10T16:06:10+00:00","description":"Les tables temporelles SQL Server permettent de g\u00e9rer automatiquement les versions et suivre les suppressions, mises \u00e0 jour et insertions.","breadcrumb":{"@id":"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/#primaryimage","url":"https:\/\/expert-only.com\/wp-content\/uploads\/2022\/09\/digitization-FD44BBF7CF9_1920x1080.jpg","contentUrl":"https:\/\/expert-only.com\/wp-content\/uploads\/2022\/09\/digitization-FD44BBF7CF9_1920x1080.jpg","width":1920,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/expert-only.com\/fr\/t-sql\/tables-temporelles-sql-server\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/expert-only.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Comment utiliser les tables temporelles SQL Server ?"}]},{"@type":"WebSite","@id":"https:\/\/expert-only.com\/fr\/#website","url":"https:\/\/expert-only.com\/fr\/","name":"Tutoriels SQL et IT","description":"","publisher":{"@id":"https:\/\/expert-only.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/expert-only.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/expert-only.com\/fr\/#organization","name":"Expert-Only","url":"https:\/\/expert-only.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/expert-only.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/expert-only.com\/wp-content\/uploads\/2017\/09\/cropped-logo_Expert-Only.jpg","contentUrl":"https:\/\/expert-only.com\/wp-content\/uploads\/2017\/09\/cropped-logo_Expert-Only.jpg","width":381,"height":174,"caption":"Expert-Only"},"image":{"@id":"https:\/\/expert-only.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ExpertOnlyCom\/","https:\/\/x.com\/expert_only","https:\/\/www.youtube.com\/channel\/UCMS5sR_FwAetB0FmciNvUaA"]},{"@type":"Person","@id":"https:\/\/expert-only.com\/fr\/#\/schema\/person\/406a9576b52944f018739a42046873ef","name":"Expert-Only","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/expert-only.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/084b15660763ff5b13bb60b2f52f97bb?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/084b15660763ff5b13bb60b2f52f97bb?s=96&d=identicon&r=g","caption":"Expert-Only"}}]}},"_links":{"self":[{"href":"https:\/\/expert-only.com\/fr\/wp-json\/wp\/v2\/posts\/27516","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/expert-only.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/expert-only.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/expert-only.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/expert-only.com\/fr\/wp-json\/wp\/v2\/comments?post=27516"}],"version-history":[{"count":7,"href":"https:\/\/expert-only.com\/fr\/wp-json\/wp\/v2\/posts\/27516\/revisions"}],"predecessor-version":[{"id":27526,"href":"https:\/\/expert-only.com\/fr\/wp-json\/wp\/v2\/posts\/27516\/revisions\/27526"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/expert-only.com\/fr\/wp-json\/wp\/v2\/media\/10617"}],"wp:attachment":[{"href":"https:\/\/expert-only.com\/fr\/wp-json\/wp\/v2\/media?parent=27516"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/expert-only.com\/fr\/wp-json\/wp\/v2\/categories?post=27516"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/expert-only.com\/fr\/wp-json\/wp\/v2\/tags?post=27516"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}