{"id":547,"date":"2017-06-28T17:50:43","date_gmt":"2017-06-28T17:50:43","guid":{"rendered":"http:\/\/www.manualsqlserver.com\/?p=547"},"modified":"2021-03-20T20:18:34","modified_gmt":"2021-03-20T20:18:34","slug":"funciones-de-base-de-datos","status":"publish","type":"post","link":"https:\/\/manualsqlserver.com\/?p=547","title":{"rendered":"Funciones de base de datos en SQL Server"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"220\" height=\"256\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_RolesBD_D.png\" alt=\"\" class=\"wp-image-1356\"\/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>Funciones de Base de datos (Roles de Base de Datos)<\/strong><\/h1>\n\n\n\n<p>Permiten administrar los permisos sobre los objetos de la base de datos<br>La administraci\u00f3n de los permisos sobre los asegurables a nivel de base de datos es mas sencilla usando funciones de base de datos.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Existen dos tipos de funciones de base de datos<\/p>\n\n\n\n<p><strong>1. Funciones fijas de base de datos<\/strong>, las que se encuentran definidas &nbsp;en todas las bases de datos.<br><strong>2. Funciones de base de datos<\/strong>, llamadas tambi\u00e9n funciones flexibles que son los tipos de funciones de base de datos que se pueden crear.<\/p>\n\n\n\n<script async=\"\" src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-2636008503986218\" data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Funciones fijas de base de datos.<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Funci\u00f3n de Base de datos<\/strong><\/td><td><strong>Descripci\u00f3n<\/strong><\/td><\/tr><tr><td><strong>db_owner<\/strong><\/td><td>Pueden realizar todas las actividades de configuraci\u00f3n y mantenimiento en la base de datos y tambi\u00e9n pueden quitar la base de datos.<\/td><\/tr><tr><td><strong>db_backupoperator<\/strong><\/td><td>Pueden crear copias de seguridad de la base de datos.<\/td><\/tr><tr><td><strong>db_ddladmin<\/strong><\/td><td>Pueden ejecutar cualquier comando del lenguaje de definici\u00f3n de datos (DDL) en una base de datos.<\/td><\/tr><tr><td><strong>db_denydatawriter<\/strong><\/td><td>No pueden agregar, modificar ni eliminar datos de tablas de usuario de una base de datos.<\/td><\/tr><tr><td><strong>db_denydatareader<\/strong><\/td><td>No pueden leer datos de las tablas de usuario dentro de una base de datos.<\/td><\/tr><tr><td><strong>db_datawriter<\/strong><\/td><td>Pueden agregar, eliminar o cambiar datos en todas las tablas de usuario.<\/td><\/tr><tr><td><strong>db_datareader<\/strong><\/td><td>Pueden leer todos los datos de todas las tablas de usuario.<\/td><\/tr><tr><td><strong>db_securityadmin<\/strong><\/td><td>Pueden modificar la pertenencia a roles y administrar permisos. Si se agregan entidades de seguridad a este rol, podr\u00eda habilitarse un aumento de privilegios no deseado.<\/td><\/tr><tr><td><strong>db_accessadmin<\/strong><\/td><td>Pueden agregar o quitar el acceso a la base de datos para inicios de sesi\u00f3n de Windows, grupos de Windows e inicios de sesi\u00f3n de SQL Server.<\/td><\/tr><\/tbody><\/table><figcaption>Tabla de las funciones fijas de base de datos en SQL Server<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Crear funciones de base de datos<\/strong><\/h2>\n\n\n\n<p><strong>Instrucci\u00f3n: Create Role<\/strong><br>Permite crear un rol de base de datos.<\/p>\n\n\n\n<p><strong>Sintaxis: <\/strong><\/p>\n\n\n\n<p>Crear: Create role NombreRol [Authorization Usuario]<\/p>\n\n\n\n<p>Donde:<br><strong>NombreRol<\/strong>: es el nombre del rol de base de datos a crear.<br><strong>Authorization Usuario<\/strong>: Usuario de base de datos o rol que es el due\u00f1o del rol creado. &nbsp;Si no se especifica el due\u00f1o es el usuario que lo crea.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Modificar las funciones de base de datos<\/h2>\n\n\n\n<p><strong>Instrucci\u00f3n: Alter Role<\/strong><br>Permite modificar un rol de base de datos.<\/p>\n\n\n\n<p><strong>Sintaxis: <\/strong><\/p>\n\n\n\n<p>Alter role NombreRol<br>[ ADD MEMBER Principal ]<br>| [ DROP MEMBER Principal ]<br>| [ WITH NAME = NuevoNombre ]<\/p>\n\n\n\n<p>Donde:<br><strong>NombreRol:<\/strong> es el nombre del rol a modificar.<br><strong>ADD MEMBER Usuario:<\/strong> especifica el usuario o rol creado por el usuario que se incluye como miembro.<br><strong>DROP MEMBER Usuario<\/strong>: especifica el usuario o rol creado por el usuario que se elimina del rol.<br><strong>WITH NAME = NuevoNombre:<\/strong> especifica el nuevo nombre del rol de base de datos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Procedimientos almacenados sp_addrolemember y sp_droprolemember<\/strong><\/h2>\n\n\n\n<p>Permiten agregar o eliminar los miembros de una funci\u00f3n de base de datos.<\/p>\n\n\n\n<p><strong>Agregar un usuario a un Rol o funci\u00f3n de base de datos.<\/strong><br>sp_addrolemember RolBaseDatos, UsuarioBaseDatos<\/p>\n\n\n\n<p><strong>Quitar un usuario de un Rol o funci\u00f3n de base de datos.<\/strong><br>sp_droprolemember RolBaseDatos, UsuarioBaseDatos <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Procedimiento almacenado sp_helprolemember<\/strong><\/h2>\n\n\n\n<p>Permite visualizar los miembros de un rol de servidor<br>Sintaxis<br>sp_helprolemember RolDeBaseDatos<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Eliminar un rol de base de datos<\/strong><\/h2>\n\n\n\n<p>Instrucci\u00f3n: Drop role NombreRol<br>Permite eliminar el rol de base de datos creado por el usuario.<br>Sintaxis:<\/p>\n\n\n\n<p>Drop role NombreRol<\/p>\n\n\n\n<p>Nota: El rol debe ser un rol flexible y no debe tener miembros<\/p>\n\n\n\n<p><strong>Para listar los roles de servidor:<\/strong><br>select * from sys.database_principals where type = &#8216;R&#8217;<br>go<\/p>\n\n\n\n<p><strong>Los roles fijos se pueden listad con el procedimiento almacenado sp_helprole<\/strong><br>sp_helprole<br>go<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ejercicios<\/h2>\n\n\n\n<p>Usando la base de datos Northwind<br>use northwind<br>go<\/p>\n\n\n\n<p><strong>Ejercicio 1<\/strong><br><strong>Crear un rol de base de datos llamado Reportes<\/strong><\/p>\n\n\n\n<p>Create role Reportes<br>go<\/p>\n\n\n\n<p><strong>Ejercicio 2<\/strong><br><strong>Crear un rol de base de datos llamado Gestion autorizando a Reportes como su propietario<\/strong><\/p>\n\n\n\n<p>Create role Gestion authorization Reportes<br>go<\/p>\n\n\n\n<p><strong>Ejercicio 3<\/strong><br><strong>Listar los roles de base de datos<\/strong><\/p>\n\n\n\n<p>select name, type, type_desc, is_fixed_role &nbsp;from sys.database_principals where type = &#8216;R&#8217;<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_RolesBD_01.png\" alt=\"\" class=\"wp-image-1354\" width=\"771\" height=\"519\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_RolesBD_01.png 775w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_RolesBD_01-300x202.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_RolesBD_01-768x517.png 768w\" sizes=\"auto, (max-width: 771px) 100vw, 771px\" \/><\/figure><\/div>\n\n\n\n<p><strong>Ejercicio 4<\/strong><br><strong>Listar los roles fijos de base de datos<\/strong><\/p>\n\n\n\n<p>select * from sys.database_principals where type = &#8216;R&#8217; and is_fixed_role = 1<br>go<\/p>\n\n\n\n<p><strong>Ejercicio 5<\/strong><br><strong>Ver los miembros del rol db_Owner<\/strong><\/p>\n\n\n\n<p>sp_helprolemember db_Owner<br>go<\/p>\n\n\n\n<p><strong>Ejercicio 6<\/strong><br><strong>Crear un inicio de sesi\u00f3n llamado Jefe, crear un usuario en Northwind llamado TrainerSQL (Ver Usuarios de Base de datos) &nbsp;en base al inicio de sesi\u00f3n Jefe y hacerlo miembro de db_securityadmin<\/strong><\/p>\n\n\n\n<p>use master<br>go<br>Create login Jefe with password = &#8216;sinpass&#8217;<br>go<br>use Northwind<br>go<br>create user TrainerSQL from login Jefe<br>go<br>Alter role db_securityadmin add member TrainerSQL<br>go<\/p>\n\n\n\n<p><strong>Ejercicio 7<\/strong><br><strong>Ver los miembros del rol de base de datos db_securityadmin<\/strong><\/p>\n\n\n\n<p>sp_helprolemember db_securityadmin<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_RolesBD_02.png\" alt=\"\" class=\"wp-image-1355\" width=\"809\" height=\"187\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_RolesBD_02.png 785w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_RolesBD_02-300x70.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_RolesBD_02-768x178.png 768w\" sizes=\"auto, (max-width: 809px) 100vw, 809px\" \/><\/figure><\/div>\n\n\n\n<p><strong>Ejercicio 8<\/strong><br><strong>Cambiar de nombre el rol de base de datos llamado Gestion por Administracion<\/strong><\/p>\n\n\n\n<p>Alter role Gestion with name = Administracion<br>go<\/p>\n\n\n\n<script async=\"\" src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-2636008503986218\" data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p><strong>Ejercicio 9<\/strong><br><strong>Crear el rol de base de datos llamado ServicioVenta, considere si el rol existe.<\/strong><\/p>\n\n\n\n<p>if not exists (select * from sys.database_principals where type = &#8216;R&#8217; and name = &#8216;ServiciosVenta&#8217;)<br>Begin<br>Create role ServiciosVenta<br>End<br>go<br>Nota: el c\u00f3digo para crear el rol de base de datos llamado ServicioVenta no reporta error<br>si el rol existe, lo que puede ocurrir con las instruccciones anteriores si el rol a crear existe.<\/p>\n\n\n\n<p><strong>Ejercicio 10<\/strong><br><strong>Eliminar el rol de base de datos llamado Administracion<\/strong><\/p>\n\n\n\n<p>Drop role Administracion<br>go<\/p>\n\n\n\n<p><strong>Ejercicio 11<\/strong><br><strong>Quitar el usuario TrainerSQL del rol de base de datos db_securityadmin<\/strong><\/p>\n\n\n\n<p>Alter role db_securityadmin drop member TrainerSQL<br>go<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Funciones de Base de datos (Roles de Base de Datos) Permiten administrar los permisos sobre los objetos de la base de datosLa administraci\u00f3n de los permisos sobre los asegurables a nivel de base de datos es mas sencilla usando funciones de base de datos.<\/p><p><a class=\"more-link btn\" href=\"https:\/\/manualsqlserver.com\/?p=547\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":1356,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,10],"tags":[11,19,31,50,53],"class_list":["post-547","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programacion","category-seguridad","tag-alter-role","tag-create-role","tag-funciones-de-base-de-datos","tag-roles-de-base-de-datos","tag-sqlserver","nodate","item-wrap"],"_links":{"self":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/547","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=547"}],"version-history":[{"count":2,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/547\/revisions"}],"predecessor-version":[{"id":2539,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/547\/revisions\/2539"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/media\/1356"}],"wp:attachment":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=547"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=547"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=547"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}