{"id":424,"date":"2017-09-18T20:40:43","date_gmt":"2017-09-18T20:40:43","guid":{"rendered":"http:\/\/www.manualsqlserver.com\/?p=424"},"modified":"2020-05-20T17:47:48","modified_gmt":"2020-05-20T17:47:48","slug":"tablas-temporales","status":"publish","type":"post","link":"https:\/\/manualsqlserver.com\/?p=424","title":{"rendered":"Tablas Temporales en SQL Server"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"200\" height=\"209\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TablasTemporalesD.png\" alt=\"\" class=\"wp-image-1308\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Tablas Temporales<\/strong><\/h2>\n\n\n\n<p>Las tablas temporales en SQL Server son utilizadas para almacenar&nbsp;c\u00e1lculos intermedios en transacciones que requieren de grandes cantidades de datos para ser manejados mas eficientemente que con variables. Las tablas temporales se almacenan en la base de datos Tempdb.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p><strong>Las tablas temporales son de dos tipos:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Temporales locales:<\/strong> Las tablas temporales locales incluyen en el nombre el s\u00edmbolo # como primer car\u00e1cter. Se crean por cada usuario conectado y la tabla se elimina autom\u00e1ticamente cuando el usuario termina la sesi\u00f3n.<\/li><li><strong>Temporales globales:<\/strong> Las tablas temporales globales inician con dos s\u00edmbolos ## en el nombre y son visibles por todos los usuarios conectados al servidor. &nbsp;Al desconectarse todos los usuarios, la tabla temporal global se elimina autom\u00e1ticamente.<\/li><\/ul>\n\n\n\n<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2636008503986218\"\n     data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p>Para informaci\u00f3n de crear tablas ver <a href=\"http:\/\/www.manualsqlserver.com\/?p=117\">Tablas<\/a><\/p>\n\n\n\n<p><strong>Consideraciones para el trabajo con tablas temporales:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>No se pueden usar Foreign key<\/li><li>Las tablas temporales se almacenan en la base de datos del sistema Tempdb<\/li><li>Una tabla temporal creada en un SP s\u00f3lo est\u00e1 presente cuando se completa las transacciones del procedimiento almacenado<\/li><li>Las tablas temporales locales se pueden crear con el mismo nombre para diferentes inicios de sesi\u00f3n (<a href=\"https:\/\/manualsqlserver.com\/?p=540\">Ver Logins<\/a>), SQL Server le incluye un sufijo para diferenciarlas.<\/li><li>Los dos tipos de tablas se pueden quitar usando Drop Table.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Ejercicios<\/strong><\/h3>\n\n\n\n<p><strong>1. Para ver las tablas temporales por cada usuario, vamos a crear los inicios de sesi\u00f3n Gerente y Vendedor. M\u00e1s informaci\u00f3n <a href=\"http:\/\/www.manualsqlserver.com\/?p=540\">Ver Inicios de sesi\u00f3n<\/a>&nbsp;<\/strong><\/p>\n\n\n\n<p>Use master<br>go<br>Create login Gerente WITH PASSWORD=&#8217;123&#8242;<br>go<\/p>\n\n\n\n<p><strong>Agregarlo a sysadmin (no hacer esto en ambiente de producci\u00f3n)<\/strong><\/p>\n\n\n\n<p>Alter server role sysadmin Add member Gerente<br>go<\/p>\n\n\n\n<p><strong>&#8212; Vendedor<\/strong><\/p>\n\n\n\n<p>Create login Vendedor WITH PASSWORD=&#8217;123&#8242;<br>go<\/p>\n\n\n\n<p><strong>&#8212; Agregarlo a sysadmin<\/strong><\/p>\n\n\n\n<p>Alter server role sysadmin Add member Vendedor<br>go<\/p>\n\n\n\n<p><strong>2. Iniciar sesi\u00f3n con Gerente y crear una tabla temporal Prueba<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TablasTemporales01.png\" alt=\"\" class=\"wp-image-1302\" width=\"600\" height=\"452\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TablasTemporales01.png 426w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TablasTemporales01-300x226.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/figure><\/div>\n\n\n\n<p><strong>El siguiente c\u00f3digo se escribir\u00e1 estando conectado como Gerente.<\/strong> Debe abrir una nueva consulta, se recomienda para hacer las pruebas volver a cargar SQL Server Management Studio.<\/p>\n\n\n\n<p><strong>Usando Northwind<\/strong><\/p>\n\n\n\n<p>Use Northwind<br>go<\/p>\n\n\n\n<p>Create table #Prueba<br>(Codigo nchar(4), Descripcion nvarchar(20),<br>constraint PruebaPK primary key (Codigo))<br>go<br><strong>&#8212; Insertar registros<\/strong><br>insert into #Prueba values (&#8216;9867&#8242;,&#8217;Tablas Gerente&#8217;),<br>(&#8216;7499&#8242;,&#8217;Datos Gerente&#8217;),(&#8216;7684&#8242;,&#8217;Medios Gerente&#8217;)<br>go<br><strong>&#8212; Visualizar los datos.<\/strong><br>select * from #Prueba<br>go<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TablasTemporales03.png\" alt=\"\" class=\"wp-image-1304\" width=\"673\" height=\"271\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TablasTemporales03.png 403w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TablasTemporales03-300x121.png 300w\" sizes=\"auto, (max-width: 673px) 100vw, 673px\" \/><\/figure><\/div>\n\n\n\n<p><strong>3. Iniciar sesi\u00f3n con Vendedor y crear una tabla temporal Prueba<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TablasTemporales02.png\" alt=\"\" class=\"wp-image-1303\" width=\"629\" height=\"474\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TablasTemporales02.png 426w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TablasTemporales02-300x226.png 300w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/figure><\/div>\n\n\n\n<p><strong>El siguiente c\u00f3digo se escribir\u00e1 estando conectado como Vendedor<\/strong><\/p>\n\n\n\n<p><strong>Usando Northwind<\/strong><\/p>\n\n\n\n<p>Use Northwind<br>go<\/p>\n\n\n\n<p>Create table #Prueba<br>(Codigo nchar(4), Descripcion nvarchar(20),<br>constraint PruebaPKV primary key (Codigo))<br>go<br><strong>&#8212; Insertar registros<\/strong><br>insert into #Prueba values (&#8216;4578&#8242;,&#8217;Vendedor Dato1&#8217;),<br>(&#8216;5892&#8242;,&#8217;Vendedor Ingreso&#8217;),(&#8216;7900&#8242;,&#8217;Ultimo de Vendedor&#8217;)<br>go<br><strong>&#8212; Visualizar los datos.<\/strong><br>select * from #Prueba<br>go<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TablasTemporales04.png\" alt=\"\" class=\"wp-image-1305\" width=\"676\" height=\"267\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TablasTemporales04.png 420w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TablasTemporales04-300x119.png 300w\" sizes=\"auto, (max-width: 676px) 100vw, 676px\" \/><\/figure><\/div>\n\n\n\n<p><strong>Se puede comprobar que existen dos tablas #Prueba, la imagen siguiente las muestra.<\/strong> En el explorador de objetos de Microsoft SQL Server Management Studio despliegue las bases del sistema y luego el nodo Tablas temporales de la base de datos Tempdb.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TablasTemporales05.png\" alt=\"\" class=\"wp-image-1306\" width=\"850\" height=\"300\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TablasTemporales05.png 850w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TablasTemporales05-300x106.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TablasTemporales05-768x271.png 768w\" sizes=\"auto, (max-width: 850px) 100vw, 850px\" \/><\/figure><\/div>\n\n\n\n<p><strong>SQL Server les incluye un sufijo para cada usuario.<\/strong><\/p>\n\n\n\n<p><strong>4. Crear una tabla temporal Global, esta la puede crear cualquier inicio que tenga permisos.<\/strong><\/p>\n\n\n\n<p>Create table ##DatosEmpresa<br>(EmpresaCodigo nchar(3), EmpresaNombre nvarchar(100),<br>EmpresaDireccion nvarchar(100))<br>go<br><strong>Insertar registro<\/strong><br>insert into ##DatosEmpresa values (&#8216;298&#8242;,&#8217;Trainer SQL Team&#8217;,&#8217;Av. Trainer 4996&#8242;)<br>go<br><strong>&#8212; Compruebe que todos los usuarios conectados tienen acceso a los registros de esta tabla.<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TablasTemporales06.png\" alt=\"\" class=\"wp-image-1307\" width=\"844\" height=\"163\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TablasTemporales06.png 685w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TablasTemporales06-300x58.png 300w\" sizes=\"auto, (max-width: 844px) 100vw, 844px\" \/><\/figure>\n\n\n\n<p><strong>Ejecute la siguiente instrucci\u00f3n en todas las conexiones.<\/strong><\/p>\n\n\n\n<p>select * from ##DatosEmpresa<br>go<\/p>\n\n\n\n<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2636008503986218\"\n     data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Crear una tabla temporal usando la cl\u00e1usula Into de la instrucci\u00f3n Select.<\/strong><\/h3>\n\n\n\n<p>use Northwind<br>go<\/p>\n\n\n\n<p><strong>5. Crear una lista de productos<\/strong><\/p>\n\n\n\n<p>Select P.ProductID, P.ProductName, P.UnitPrice, P.UnitsInStock<br>into #ListaDePrecios<br>from Products As P&nbsp; &nbsp;where P.Discontinued = 0&nbsp; order by P.ProductName<br>go<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tablas Temporales Las tablas temporales en SQL Server son utilizadas para almacenar&nbsp;c\u00e1lculos intermedios en transacciones que requieren de grandes cantidades de datos para ser manejados mas eficientemente que con variables. Las tablas temporales se almacenan en la base de datos Tempdb.<\/p><p><a class=\"more-link btn\" href=\"https:\/\/manualsqlserver.com\/?p=424\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":1308,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[20,28,46,47,57,58],"class_list":["post-424","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-esquemastablas","tag-create-table","tag-esquemas","tag-particion","tag-permisos","tag-tablas","tag-tempdb","nodate","item-wrap"],"_links":{"self":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/424","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=424"}],"version-history":[{"count":1,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/424\/revisions"}],"predecessor-version":[{"id":1310,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/424\/revisions\/1310"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/media\/1308"}],"wp:attachment":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=424"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=424"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=424"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}