{"id":27527,"date":"2023-08-02T06:30:00","date_gmt":"2023-08-02T04:30:00","guid":{"rendered":"https:\/\/expert-only.com\/?p=27527"},"modified":"2023-10-10T18:17:43","modified_gmt":"2023-10-10T16:17:43","slug":"tablas-temporales-de-sql-server","status":"publish","type":"post","link":"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/","title":{"rendered":"\u00bfC\u00f3mo utilizar las tablas temporales de SQL Server?"},"content":{"rendered":"\n<h4 class=\"wp-block-heading\" id=\"h-introduccion-a-las-tablas-temporales-de-sql-server-para-gestionar-automaticamente-el-versionado-de-datos\"><strong><em>Introducci\u00f3n a las tablas temporales de SQL Server para gestionar autom\u00e1ticamente el versionado de datos.<\/em><\/strong><\/h4>\n\n\n\n<p>Las tablas temporales en SQL Server, tambi\u00e9n conocidas como tablas con control de versiones del sistema, son una caracter\u00edstica introducida en MS SQL Server 2016. Proporcionan soporte integrado para almacenar datos hist\u00f3ricos relacionados con los cambios realizados en los datos de una tabla. Esta caracter\u00edstica es beneficiosa para fines de auditor\u00eda o an\u00e1lisis de datos empresariales, donde es crucial comprender el estado de los datos en cualquier momento dado. Y tambi\u00e9n para todas las empresas sujetas a informes regulatorios regulares con obligaciones de transparencia legal.<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/#sintaxis-basica-de-la-tabla-temporal-de-ms-sql\" >Sintaxis b\u00e1sica de la tabla temporal de MS SQL<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/#actualizar-datos-de-sql-en-tablas-temporales\" >Actualizar datos de SQL en tablas temporales<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/#eliminar-datos-de-tablas-con-control-de-versiones-del-sistema\" >Eliminar datos de tablas con control de versiones del sistema<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/#sintaxis-de-consulta-t-sql-para-verificar-datos-de-tablas-temporales\" >Sintaxis de consulta T-SQL para verificar datos de tablas temporales<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/#prueba-un-dato-temporal-para-ver-como-funciona\" >Prueba un dato temporal para ver c\u00f3mo funciona<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/#modificar-tablas-existentes-con-control-de-versiones-del-sistema\" >Modificar tablas existentes con control de versiones del sistema<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\" id=\"h-sintaxis-basica-de-la-tabla-temporal-de-ms-sql\"><span class=\"ez-toc-section\" id=\"sintaxis-basica-de-la-tabla-temporal-de-ms-sql\"><\/span>Sintaxis b\u00e1sica de la tabla temporal de MS SQL<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Comencemos creando una tabla temporal b\u00e1sica en Transact-SQL. As\u00ed que el siguiente c\u00f3digo T-SQL <strong>crea una tabla llamada Employee con control de versiones del sistema<\/strong>. Las columnas <em>SysStartTime<\/em> y <em>SysEndTime<\/em> se utilizan para registrar el per\u00edodo de cada fila. Para hacer un peque\u00f1o resumen, se necesitan 3 elementos adicionales para crear y gestionar una tabla temporal de SQL Server:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><em>SysStartTime<\/em><\/strong> columna del sistema para marcar el inicio del per\u00edodo, solo admite el tipo de datos DATETIME2.<\/li>\n\n\n\n<li><strong><em>SysEndTime<\/em><\/strong> para marcar el final, solo admite el tipo de datos DATETIME2.<\/li>\n\n\n\n<li>Una tabla de historial del sistema, aqu\u00ed se llama <strong><em>dbo.EmployeeHistory<\/em><\/strong>, con la misma estructura, excepto las claves.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-la-declaracion-de-creacion-de-la-tabla-es-especifica\">La declaraci\u00f3n de creaci\u00f3n de la tabla es espec\u00edfica<\/h3>\n\n\n\n<p>La definici\u00f3n de la tabla es especial, sin embargo, y ese es el objetivo, insertar datos en una tabla con control de versiones del sistema es similar a insertar datos en cualquier otra tabla de SQL Server. De hecho, <strong>las tablas con control de versiones del sistema, es decir, las tablas temporales est\u00e1n dise\u00f1adas para gestionar autom\u00e1ticamente el versionado de datos<\/strong>, especialmente \u00fatil para gestionar dimensiones y dimensiones de cambio lento, llamadas <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-insertar-datos-en-la-tabla-temporal\">Insertar datos en la tabla temporal<\/h3>\n\n\n\n<p>As\u00ed que esta b\u00e1sica <a href=\"https:\/\/expert-only.com\/en\/t-sql\/sql-server-insert-into-from-a-select\/\"><strong>instrucci\u00f3n T-SQL INSERT<\/strong><\/a> insertar\u00e1 una nueva fila en la tabla Employee, y actualizar\u00e1 la tabla de historial asociada cuando cambien los datos.<\/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=\"Crear una tabla temporal con control de versiones del sistema de SQL Server e insertar datos\" 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>Crear una tabla temporal con control de versiones del sistema de SQL Server e insertar datos<\/em><\/figcaption><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-estructura-de-la-tabla-con-control-de-versiones-del-sistema-y-la-tabla-de-historial\">Estructura de la tabla con control de versiones del sistema y la tabla de historial<\/h3>\n\n\n\n<p>Como puede ver en la captura de pantalla a continuaci\u00f3n, la tabla <strong><em>Employee<\/em><\/strong> ahora tiene control de versiones del sistema y la tabla <strong><em>EmployeeHistory<\/em><\/strong> se encuentra justo detr\u00e1s de ella en el explorador de SSMS. <strong>Ambas tablas tienen la misma estructura, excepto las claves primarias<\/strong>, porque la tabla de historial necesita almacenar m\u00faltiples versiones de l\u00edneas con los mismos 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=\"Tabla de historial debajo de la tabla con control de versiones del sistema\" 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>Tabla de historial debajo de la tabla con control de versiones del sistema<\/em><\/figcaption><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-actualizar-datos-de-sql-en-tablas-temporales\"><span class=\"ez-toc-section\" id=\"actualizar-datos-de-sql-en-tablas-temporales\"><\/span>Actualizar datos de SQL en tablas temporales<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Cuando actualiza un registro en una tabla con control de versiones del sistema, SQL Server autom\u00e1ticamente inserta una copia de la fila antigua en la tabla de historial. As\u00ed que puede analizar cualquier cambio pasado para entender mejor sus datos. Como resultado, despu\u00e9s de ejecutar este comando SQL, la tabla <em>EmployeeHistory<\/em> tendr\u00e1 un registro con el salario antiguo. Para ilustrar el concepto, la siguiente consulta activa una inserci\u00f3n con el valor antiguo de la l\u00ednea, directamente dentro de la tabla de historial.<\/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-eliminar-datos-de-tablas-con-control-de-versiones-del-sistema\"><span class=\"ez-toc-section\" id=\"eliminar-datos-de-tablas-con-control-de-versiones-del-sistema\"><\/span>Eliminar datos de tablas con control de versiones del sistema<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Eliminar registros en una tabla con control de versiones del sistema no eliminar\u00e1 los datos por completo. Los registros eliminados se mover\u00e1n a la tabla de historial. Despu\u00e9s de ejecutar el siguiente comando T-SQL, la tabla <strong><em>EmployeeHistory<\/em><\/strong> tendr\u00e1 el registro eliminado.<\/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>Por supuesto, debe tener en cuenta la frecuencia con la que cambian los datos y tambi\u00e9n los vol\u00famenes de datos para evitar terminar con bases de datos y copias de seguridad enormes. Puede verlo como el mismo principio de la <strong><a href=\"https:\/\/expert-only.com\/en\/ms-dos\/delete-windows-file-using-cmd\/\">Windows<\/a><\/strong> Papelera de reciclaje, de hecho, puede tener m\u00faltiples versiones del mismo archivo, eliminadas pero a\u00fan en la papelera, hasta que la vac\u00ede.<\/p>\n\n\n\n<p><strong><em>Una soluci\u00f3n a esto es implementar un sistema de purga que elimine peri\u00f3dicamente los registros antiguos de la tabla de historial.<\/em><\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-sintaxis-de-consulta-t-sql-para-verificar-datos-de-tablas-temporales\"><span class=\"ez-toc-section\" id=\"sintaxis-de-consulta-t-sql-para-verificar-datos-de-tablas-temporales\"><\/span>Sintaxis de consulta T-SQL para verificar datos de tablas temporales<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p><strong>SQL Server proporciona la cl\u00e1usula FOR SYSTEM_TIME para consultar datos de una tabla con control de versiones del sistema.<\/strong> Este comando SQL devolver\u00e1 los datos tal como estaban en el momento especificado. Puede utilizar m\u00e1s detalles, por supuesto, para ser m\u00e1s espec\u00edfico. Puede llegar hasta<\/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<h2 class=\"wp-block-heading\" id=\"h-prueba-un-dato-temporal-para-ver-como-funciona\"><span class=\"ez-toc-section\" id=\"prueba-un-dato-temporal-para-ver-como-funciona\"><\/span>Prueba un dato temporal para ver c\u00f3mo funciona<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Para realizar una prueba m\u00e1s detallada, repasemos todas las acciones realizadas y a\u00f1adamos una, en este orden, para ver si la tabla sigue correctamente nuestros cambios. Entre cada paso, espere unos minutos para una mejor visibilidad en la tabla de historial.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Insertar la primera l\u00ednea con un salario de <em>80&#8217;000<\/em> d\u00f3lares (realizado en la segunda secci\u00f3n del tutorial)<\/li>\n\n\n\n<li>Actualizar el salario a <em>85&#8217;000<\/em> d\u00f3lares<\/li>\n\n\n\n<li>Eliminar el empleado de la tabla.<\/li>\n\n\n\n<li>Insertar nuevamente el mismo empleado, pero esta vez con un salario de <em>90&#8217;000<\/em> d\u00f3lares y un rol de <strong><em>Desarrollador Senior<\/em><\/strong>.<\/li>\n\n\n\n<li>Eliminar nuevamente el empleado de la tabla. <strong><em>No visible en la captura de pantalla<\/em><\/strong> pero disponible en el siguiente c\u00f3digo T-SQL.<\/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-- *** Esperar unos minutos *** -- \nDELETE FROM [Expert-Only].dbo.Employee\n   WHERE EmployeeId = 1;\n\n-- *** Esperar unos minutos *** -- \nINSERT INTO [Expert-Only].dbo.Employee\n   (EmployeeId, EmployeeName, Position, Salary)\nVALUES (1, 'John Doe', 'Developer Senior', 90000);\n\n-- *** Esperar unos minutos *** -- \nDELETE FROM [Expert-Only].dbo.Employee\n   WHERE EmployeeId = 1;\n\nSELECT * FROM dbo.EmployeeHistory;\n\n-- Primer insert\nSELECT * FROM [Expert-Only].dbo.Employee\n  FOR SYSTEM_TIME AS OF '2023-10-10 10:56:00';\n\n-- Actualizaci\u00f3n a 85000 $\nSELECT * FROM [Expert-Only].dbo.Employee\n  FOR SYSTEM_TIME AS OF '2023-10-10 11:03:00';\n\n-- Segundo insert como Desarrollador 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>Luego, verifique el resultado utilizando SSMS para seleccionar el contenido de la tabla de historial y tambi\u00e9n la tabla Employee en puntos muy espec\u00edficos en el tiempo. Como resultado, la tabla Employee ahora est\u00e1 vac\u00eda. Las tres l\u00edneas archivadas de la tabla <em>EmployeeHistory<\/em> est\u00e1n disponibles usando una declaraci\u00f3n SELECT en la propia tabla Employee en 3 puntos diferentes en el tiempo.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"741\" height=\"980\" src=\"https:\/\/expert-only.com\/wp-content\/uploads\/2023\/10\/test-sql-server-temporal-table-with-history-check.jpg\" alt=\"\" class=\"wp-image-27478\" srcset=\"https:\/\/expert-only.com\/wp-content\/uploads\/2023\/10\/test-sql-server-temporal-table-with-history-check.jpg 741w, https:\/\/expert-only.com\/wp-content\/uploads\/2023\/10\/test-sql-server-temporal-table-with-history-check-227x300.jpg 227w\" sizes=\"auto, (max-width: 741px) 100vw, 741px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-modificar-tablas-existentes-con-control-de-versiones-del-sistema\"><span class=\"ez-toc-section\" id=\"modificar-tablas-existentes-con-control-de-versiones-del-sistema\"><\/span>Modificar tablas existentes con control de versiones del sistema<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Por supuesto, a medida que los modelos de datos evolucionan en la base de datos con el tiempo, es necesario mantener la tabla de historial cuando cambia la tabla con versi\u00f3n. Para modificar el esquema de una tabla con versi\u00f3n del sistema, por ejemplo, para a\u00f1adir una nueva columna a la tabla Empleado, sigue estos 3 pasos, en este orden:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Desactiva primero la versi\u00f3n del sistema.<\/li>\n\n\n\n<li>Haz los cambios en la tabla temporal.<\/li>\n\n\n\n<li>Luego reactiva la versi\u00f3n del sistema.<\/li>\n<\/ol>\n\n\n\n<p><strong>Eliminar una tabla con versi\u00f3n del sistema<\/strong><\/p>\n\n\n\n<p>Dado que es un tipo espec\u00edfico de tabla, para eliminarla, tambi\u00e9n necesitas en este caso detener manualmente la versi\u00f3n antes de eliminar la tabla. <strong>Para eliminar una tabla con versi\u00f3n del sistema sin error, usa la opci\u00f3n de generaci\u00f3n de script de SSMS para generar la instrucci\u00f3n completa.<\/strong> Como puedes ver a continuaci\u00f3n, realiza 3 operaciones:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Detener la versi\u00f3n.<\/li>\n\n\n\n<li>Eliminar la tabla con versi\u00f3n del sistema.<\/li>\n\n\n\n<li>Eliminar la tabla temporal que contiene el historial.<\/li>\n<\/ol>\n\n\n\n<p>Si intentas eliminar la tabla sin detener la versi\u00f3n, el sistema devuelve este error:<\/p>\n\n\n\n<p>Msg 13552, Nivel 16, Estado 1, L\u00ednea 1 <em>La operaci\u00f3n de eliminaci\u00f3n de la tabla fall\u00f3 en &#8216;Expert-Only.dbo.Employee&#8217; porque no es una operaci\u00f3n admitida en tablas temporales con versi\u00f3n del sistema.<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>Conclusi\u00f3n sobre la configuraci\u00f3n de tablas temporales en SQL Server<\/strong><\/p>\n\n\n\n<p>En conclusi\u00f3n, las Tablas Temporales de SQL Server ofrecen una soluci\u00f3n integrada para rastrear los cambios de datos a lo largo del tiempo. Pueden ser valiosas en situaciones donde se requiere una auditor\u00eda o an\u00e1lisis de datos. Para escenarios reales de empresa, cuando ten\u00edas que hacer todos los pasos de archivado con c\u00f3digo personalizado o SCD, era complejo y pesado mantenerlo. Usar esta caracter\u00edstica de tabla con versi\u00f3n del sistema hace que sea mucho m\u00e1s sencillo implementarlo.<\/p>\n\n\n\n<p>Al comprender c\u00f3mo crear, insertar, actualizar, eliminar y consultar datos de estas tablas, uno puede aprovechar esta poderosa caracter\u00edstica en MS SQL Server. Para profundizar y descubrir m\u00e1s casos de uso para tablas temporales, un ejemplo t\u00edpico de la vida real es cuando se carga una tabla de dimensi\u00f3n de un almac\u00e9n de datos utilizando un paquete SSIS.<\/p>\n\n\n\n<p>Para obtener informaci\u00f3n m\u00e1s detallada sobre c\u00f3mo trabajar con Tablas Temporales en SQL Server, consulta la documentaci\u00f3n oficial de <strong>Microsoft<\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>Introducci\u00f3n a las tablas temporales de SQL Server para gestionar autom\u00e1ticamente el versionado de datos. Las tablas temporales en SQL Server, tambi\u00e9n conocidas como tablas con control de versiones del sistema, son una caracter\u00edstica introducida en MS SQL Server <a class=\"mh-excerpt-more\" href=\"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/\" title=\"\u00bfC\u00f3mo utilizar las tablas temporales de SQL Server?\">&#8230;<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":10621,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[455],"tags":[],"class_list":{"0":"post-27527","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>\u00bfC\u00f3mo utilizar las tablas temporales de SQL Server?<\/title>\n<meta name=\"description\" content=\"Utilice las tablas temporales de SQL Server para ver versiones de datos con eliminaciones y actualizaciones en un momento espec\u00edfico.\" \/>\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\/es\/t-sql\/tablas-temporales-de-sql-server\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u00bfC\u00f3mo utilizar las tablas temporales de SQL Server?\" \/>\n<meta property=\"og:description\" content=\"Utilice las tablas temporales de SQL Server para ver versiones de datos con eliminaciones y actualizaciones en un momento espec\u00edfico.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/\" \/>\n<meta property=\"og:site_name\" content=\"Tutoriales de SQL y TI\" \/>\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:17:43+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=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Expert-Only\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/\"},\"author\":{\"name\":\"Expert-Only\",\"@id\":\"https:\/\/expert-only.com\/es\/#\/schema\/person\/406a9576b52944f018739a42046873ef\"},\"headline\":\"\u00bfC\u00f3mo utilizar las tablas temporales de SQL Server?\",\"datePublished\":\"2023-08-02T04:30:00+00:00\",\"dateModified\":\"2023-10-10T16:17:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/\"},\"wordCount\":1374,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/expert-only.com\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/expert-only.com\/wp-content\/uploads\/2022\/09\/digitization-FD44BBF7CF9_1920x1080.jpg\",\"articleSection\":[\"T-SQL\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/\",\"url\":\"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/\",\"name\":\"\u00bfC\u00f3mo utilizar las tablas temporales de SQL Server?\",\"isPartOf\":{\"@id\":\"https:\/\/expert-only.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-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:17:43+00:00\",\"description\":\"Utilice las tablas temporales de SQL Server para ver versiones de datos con eliminaciones y actualizaciones en un momento espec\u00edfico.\",\"breadcrumb\":{\"@id\":\"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-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\/es\/t-sql\/tablas-temporales-de-sql-server\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"es\",\"item\":\"https:\/\/expert-only.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u00bfC\u00f3mo utilizar las tablas temporales de SQL Server?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/expert-only.com\/es\/#website\",\"url\":\"https:\/\/expert-only.com\/es\/\",\"name\":\"Tutoriales de SQL y TI\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/expert-only.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/expert-only.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/expert-only.com\/es\/#organization\",\"name\":\"Expert-Only\",\"url\":\"https:\/\/expert-only.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/expert-only.com\/es\/#\/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\/es\/#\/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\/es\/#\/schema\/person\/406a9576b52944f018739a42046873ef\",\"name\":\"Expert-Only\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/expert-only.com\/es\/#\/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":"\u00bfC\u00f3mo utilizar las tablas temporales de SQL Server?","description":"Utilice las tablas temporales de SQL Server para ver versiones de datos con eliminaciones y actualizaciones en un momento espec\u00edfico.","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\/es\/t-sql\/tablas-temporales-de-sql-server\/","og_locale":"es_ES","og_type":"article","og_title":"\u00bfC\u00f3mo utilizar las tablas temporales de SQL Server?","og_description":"Utilice las tablas temporales de SQL Server para ver versiones de datos con eliminaciones y actualizaciones en un momento espec\u00edfico.","og_url":"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/","og_site_name":"Tutoriales de SQL y TI","article_publisher":"https:\/\/www.facebook.com\/ExpertOnlyCom\/","article_published_time":"2023-08-02T04:30:00+00:00","article_modified_time":"2023-10-10T16:17:43+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":{"Escrito por":"Expert-Only","Tiempo de lectura":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/#article","isPartOf":{"@id":"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/"},"author":{"name":"Expert-Only","@id":"https:\/\/expert-only.com\/es\/#\/schema\/person\/406a9576b52944f018739a42046873ef"},"headline":"\u00bfC\u00f3mo utilizar las tablas temporales de SQL Server?","datePublished":"2023-08-02T04:30:00+00:00","dateModified":"2023-10-10T16:17:43+00:00","mainEntityOfPage":{"@id":"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/"},"wordCount":1374,"commentCount":0,"publisher":{"@id":"https:\/\/expert-only.com\/es\/#organization"},"image":{"@id":"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/#primaryimage"},"thumbnailUrl":"https:\/\/expert-only.com\/wp-content\/uploads\/2022\/09\/digitization-FD44BBF7CF9_1920x1080.jpg","articleSection":["T-SQL"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/","url":"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/","name":"\u00bfC\u00f3mo utilizar las tablas temporales de SQL Server?","isPartOf":{"@id":"https:\/\/expert-only.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/#primaryimage"},"image":{"@id":"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-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:17:43+00:00","description":"Utilice las tablas temporales de SQL Server para ver versiones de datos con eliminaciones y actualizaciones en un momento espec\u00edfico.","breadcrumb":{"@id":"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-sql-server\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/expert-only.com\/es\/t-sql\/tablas-temporales-de-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\/es\/t-sql\/tablas-temporales-de-sql-server\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"es","item":"https:\/\/expert-only.com\/es\/"},{"@type":"ListItem","position":2,"name":"\u00bfC\u00f3mo utilizar las tablas temporales de SQL Server?"}]},{"@type":"WebSite","@id":"https:\/\/expert-only.com\/es\/#website","url":"https:\/\/expert-only.com\/es\/","name":"Tutoriales de SQL y TI","description":"","publisher":{"@id":"https:\/\/expert-only.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/expert-only.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/expert-only.com\/es\/#organization","name":"Expert-Only","url":"https:\/\/expert-only.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/expert-only.com\/es\/#\/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\/es\/#\/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\/es\/#\/schema\/person\/406a9576b52944f018739a42046873ef","name":"Expert-Only","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/expert-only.com\/es\/#\/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\/es\/wp-json\/wp\/v2\/posts\/27527","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/expert-only.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/expert-only.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/expert-only.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/expert-only.com\/es\/wp-json\/wp\/v2\/comments?post=27527"}],"version-history":[{"count":2,"href":"https:\/\/expert-only.com\/es\/wp-json\/wp\/v2\/posts\/27527\/revisions"}],"predecessor-version":[{"id":27529,"href":"https:\/\/expert-only.com\/es\/wp-json\/wp\/v2\/posts\/27527\/revisions\/27529"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/expert-only.com\/es\/wp-json\/wp\/v2\/media\/10621"}],"wp:attachment":[{"href":"https:\/\/expert-only.com\/es\/wp-json\/wp\/v2\/media?parent=27527"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/expert-only.com\/es\/wp-json\/wp\/v2\/categories?post=27527"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/expert-only.com\/es\/wp-json\/wp\/v2\/tags?post=27527"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}