{"id":113,"date":"2017-09-18T23:00:22","date_gmt":"2017-09-18T23:00:22","guid":{"rendered":"http:\/\/www.manualsqlserver.com\/?p=113"},"modified":"2020-05-19T15:29:05","modified_gmt":"2020-05-19T15:29:05","slug":"esquemas-crear-modificar-eliminar","status":"publish","type":"post","link":"https:\/\/manualsqlserver.com\/?p=113","title":{"rendered":"Esquemas SQL Server"},"content":{"rendered":"\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_Esquemas00.png\" alt=\"\" class=\"wp-image-1104\" width=\"260\" height=\"156\"\/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>Esquemas en SQL Server<\/strong><\/h1>\n\n\n\n<p>Los esquemas en SQL Server permiten organizar los elementos asegurables como tablas, vistas, procedimientos almacenados, etc\u00a0y poder administrar mejor los permisos sobre estos. <\/p>\n\n\n\n<p>Es posible crear esquemas para incluir las tablas de diferentes m\u00f3dulos en una empresa y poder separarlos al asignarles permisos a diferentes usuarios de base de datos. Para mayor informaci\u00f3n ver: <a href=\"https:\/\/manualsqlserver.com\/?p=561\">Usuarios de base de datos<\/a>,  <a href=\"https:\/\/manualsqlserver.com\/?p=540\">Inicios de sesi\u00f3n<\/a>, <a href=\"https:\/\/manualsqlserver.com\/?p=617\">Permisos con Grant<\/a>.<span id=\"more-55\"><\/span><\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Crear un esquema<\/strong><\/h2>\n\n\n\n<p>La instrucci\u00f3n para crear un esquema tiene la siguiente sintaxis:<\/p>\n\n\n\n<p><strong>Create schema NombreEsquema [authorization Usuario]<\/strong><\/p>\n\n\n\n<p><strong>Notas: <\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Create schema debe ser la \u00fanica instrucci\u00f3n del lote.<\/li><li>El esquema por defecto donde se crean los objetos como tablas, vistas, procedimientos almacenados, etc es el esquema dbo (DataBase Owner).<\/li><li>Si se utilizar instrucciones para crear tablas o vistas dentro del mismo bloque de la instrucci\u00f3n Create Schema, estos se crean dentro del esquema.<\/li><li>Se pueden usar Grant y Deny para asignar o quitar los permisos sobre los asegurables en un esquema.<\/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<h2 class=\"wp-block-heading\">Ejercicios<\/h2>\n\n\n\n<p>Primero crear una base de datos. Se supone que existen las unidades C:, D. y E: para que funcione el ejercicio.  (<a href=\"http:\/\/www.manualsqlserver.com\/?p=82\">Ver Crear Base de datos<\/a>)<\/p>\n\n\n\n<p>xp_create_subdir &#8216;C:\\Bases&#8217;<br>go<br>xp_create_subdir &#8216;D:\\Bases&#8217;<br>go<br>xp_create_subdir &#8216;E:\\Bases&#8217;<br>go<br>Create database Olimpiadas<br>on Primary<br>(Name=&#8217;Olimpiadas01&#8242;, Filename=&#8217;C:\\Bases\\Olimpiadas01.mdf&#8217;),<br>Filegroup VENTAS<br>(Name=&#8217;Olimpiadas02&#8242;, Filename=&#8217;D:\\Bases\\Olimpiadas02.ndf&#8217;)<br>log on<br>(Name=&#8217;Olimpiadas03&#8242;, Filename=&#8217;E:\\Bases\\Olimpiadas03.ldf&#8217;)<br>go<br>use Olimpiadas<br>go<\/p>\n\n\n\n<p><strong>1. &#8212; Crear esquemas: VENTAS, BANCOS, RRHH.<\/strong><\/p>\n\n\n\n<p>Create schema VENTAS<br>go<br>Create schema BANCOS<br>go<br>Create schema RRHH<br>go<\/p>\n\n\n\n<p><strong>2.&#8211;&nbsp; Listar los esquemas<\/strong><\/p>\n\n\n\n<p>select * from sys.schemas<br>go<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><a href=\"http:\/\/www.manualsqlserver.com\/wp-content\/uploads\/2017\/05\/ManualSQL_Esquemas01.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_Esquemas01.png\" alt=\"\" class=\"wp-image-1105\" width=\"583\" height=\"446\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_Esquemas01.png 434w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_Esquemas01-300x229.png 300w\" sizes=\"auto, (max-width: 583px) 100vw, 583px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Aparecen tambi\u00e9n los esquemas propios de una base de datos.<\/p>\n\n\n\n<p><strong>3. &#8212; Crear esquema PLANEAMIEMTO, evitar error si existe<\/strong><\/p>\n\n\n\n<p>if not exists (select * from sys.schemas where name = &#8216;PLANEAMIEMTO&#8217;)<br>Begin<br>Execute(&#8216;Create schema PLANEAMIEMTO&#8217;)<br>End<br>go<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Modificar un esquema<\/strong><\/h2>\n\n\n\n<p>El modificar un esquema permite transferir asegurables de un esquema a otro.<\/p>\n\n\n\n<p><strong>Alter schema EsquemaDestino transfer EsquemaOrigen.Asegurable<\/strong><\/p>\n\n\n\n<p>El asegurable del esquema EsquemaOrigen se transfiere al EsquemaDestino<\/p>\n\n\n\n<p>Los ejercicios respecto de este tema se incluyen en la creaci\u00f3n de tablas, vistas y procedimientos almacenados.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Eliminar un esquema<\/strong><\/h2>\n\n\n\n<p>Para eliminar un esquema se utiliza la instrucci\u00f3n<\/p>\n\n\n\n<p><strong>Drop schema NombreEsquema<\/strong><\/p>\n\n\n\n<p>Para eliminar el esquema debe estar vac\u00edo, es decir, sin asegurables.<\/p>\n\n\n\n<p>I<strong>mportante:<\/strong> Planificar los asegurables en esquemas debe ser al inicio de la creaci\u00f3n de la BD, los cambios de esquemas de los asegurables no actualizan en los scripts en los que se hacen referencia a estos objetos.<\/p>\n\n\n\n<p>Por ejemplo, si en un script se hace un listado de la tabla Empleados que se encuentra en el esquema RRHH debemos escribir:<\/p>\n\n\n\n<p>select * from RRHH.Empleados<br>go<\/p>\n\n\n\n<p>Si se cambia a otro esquema la tabla empleados y no se actualiza el script, este dejar\u00e1 de funcionar correctamente.<\/p>\n\n\n\n<p><strong>4. &#8212; Crear tabla Tiendas en el esquema Pruebas<\/strong><\/p>\n\n\n\n<p>Create schema Pruebas<br>Create table Tiendas<br>(<br>TiendasCodigo nchar(4),<br>TiendasDescripcion nvarchar(200) not null,<br>TiendasEstado nchar(1) constraint TiendasEstadoDF Default &#8216;A&#8217;,<br>constraint TiendasPK primary key (TiendasCodigo)<br>)<br>go<\/p>\n\n\n\n<p class=\"has-background has-very-light-gray-background-color\"><strong>Note que despu\u00e9s de la instrucci\u00f3n de crear el esquema no existe la instrucci\u00f3n Go y al crear la tabla Tiendas, aparentemente se crea en el esquema dbo, en este caso se crear\u00e1 en el esquema Pruebas.<\/strong><\/p>\n\n\n\n<p><strong>Para crear otra tabla en el esquema Pruebas<\/strong><br>Create table Pruebas.Otra<br>(<br>OtraCodigo nchar(4),<br>OtraDescripcion nvarchar(200) not null,<br>OtraEstado nchar(1) constraint OtraEstadoDF Default &#8216;A&#8217;,<br>constraint OtraPK primary key (OtraCodigo)<br>)<br>go<\/p>\n\n\n\n<p class=\"has-background has-very-light-gray-background-color\"><strong>Note que la tabla Tiendas se ha creado en el mismo bloque de c\u00f3digo del esquema, la tabla Otra para crearla en el esquema debemos escribir primero el nombre del esquema y luego el nombre de la tabla separadas por punto.<br><\/strong><script async=\"\" src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><br><ins class=\"adsbygoogle\" style=\"display: block; text-align: center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-8212748961777604\" data-ad-slot=\"5919795031\"><br><script>&lt;br \/>      (adsbygoogle = window.adsbygoogle || []).push({});&lt;br \/> <\/script><\/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","protected":false},"excerpt":{"rendered":"<p>Esquemas en SQL Server Los esquemas en SQL Server permiten organizar los elementos asegurables como tablas, vistas, procedimientos almacenados, etc\u00a0y poder administrar mejor los permisos sobre estos. Es posible crear esquemas para incluir las tablas de diferentes m\u00f3dulos en una empresa y poder separarlos al asignarles permisos a diferentes usuarios de base de datos. Para &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/manualsqlserver.com\/?p=113\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":1104,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[28,46,47,53,57],"class_list":["post-113","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-esquemastablas","tag-esquemas","tag-particion","tag-permisos","tag-sqlserver","tag-tablas","nodate","item-wrap"],"_links":{"self":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/113","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=113"}],"version-history":[{"count":1,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/113\/revisions"}],"predecessor-version":[{"id":1107,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/113\/revisions\/1107"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/media\/1104"}],"wp:attachment":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=113"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=113"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}