Vistas de página en total

viernes, 3 de febrero de 2012

7. Vistas, Procedimientos y Trigger

7.  Vistas, Procedimientos y Triggers

VISTAS
Una vista es una consulta, que refleja el contenido de una o más tablas, desde la que se puede acceder a los datos como si fuera una tabla.

Dos son las principales razones por las que podemos crear vistas.


•     Seguridad, nos pueden interesar que los usuarios tengan acceso a una parte de la información que hay en una tabla, pero no a toda la tabla.
•     Comodidad, como hemos dicho el modelo relacional no es el más comodo para  visualizar  los datos, lo que nos puede llevar a tener que escribir complejas sentencias SQL, tener una vista nos simplifica esta tarea.

Las vistas no tienen una copia física de los datos, son consultas a los datos que hay en las  tablas, por lo que si actualizamos los datos de una vista, estamos actualizando realmente la  tabla, y si actualizamos la tabla estos cambios serán visibles desde la vista.

Nota: No siempre podremos actualizar los datos de una vista, dependerá de la complejidad de la misma (dependerá de si el conjunto de resultados tiene acceso a la clave principal de la tabla o no), y del gestor de base de datos. No todos los gestores de bases de datos permiten actualizar vistas, ORACLE, por ejemplo, no lo permite, mientras que SQL Server sí.

7.1 Creación de vistas.

Para    crear    una    vista    debemos    utilizar    la    sentencia    CREATE    VIEW, debiendo proporcionar un nombre a la vista y una sentencia SQL SELECT válida.

CREATE VIEW <nombre_vista>

AS

(<sentencia_select>);
 Ejemplo: Crear una vista sobre nuestra tabla alquileres, en la que se nos muestre el nombre y apellidos del cliente en lugar de su código.



CREATE VIEW    vAlquileres

AS

(

SELECT    nombre, apellidos,
matricula

FROM    tAlquileres, tClientes
WHERE    (    tAlquileres.codigo_cliente    =    tClientes.codigo    )

)



Si queremos, modificar la definición de nuestra vista podemos utilizar la sentencia ALTER VIEW, de forma muy parecida a como lo haciamos con las tablas. En este caso queremos añadir los campos fx_alquiler y fx_devolucion a la vista.

ALTER    VIEW    vAlquileres

AS

(
SELECT    nombre, apellidos,
matricula, fx_alquiler, fx_devolucion
FROM    tAlquileres, tClientes
WHERE    (    tAlquileres.codigo_cliente    =    tClientes.codigo    )
)

Por último podemos eliminar la vista a través de la sentencia DROP VIEW. Para eliminar la vista que hemos creado anteriormente se uitlizaría:

DROP VIEW vAlquileres;

Una vista se consulta como si fuera una tabla. Ejemplo:

USE NORTHWIND GO
--CREACION DE VISTA PROVEEDORES Y SUS PEDIDOS

CREATE VIEW VIEW_SUPPLIER_PRODUCS

AS

SELECT S.SUPPLIERID,S.COMPANYNAME,S.CONTACTNAME

,P.PRODUCTID,P.PRODUCTNAME, P.UNITPRICE FROM SUPPLIERS AS S INNER JOIN PRODUCTS AS P ON
S.SUPPLIERID=P.SUPPLIERID GO
--CREACION DE UNA VISTA CON INSTRUCCION GROUP

CREATE VIEW VIEW_SUBTOTALES(CODIGO_ORDEN,SUB_TOTAL)

AS

SELECT OD.ORDERID,SUM(CONVERT(MONEY,(OD.UNITPRICE* QUANTITY*(1-DISCOUNT)/100))*100)
FROM [ORDER DETAILS] OD GROUP BY OD.ORDERID
GO

--LLAMAR A LA CONSULTA ANTERIOR SELECT * FROM VIEW_SUBTOTALES
--VER VISTAS

SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='VIEW'
--BORRAR UNA VISTA

DROP VIEW VIEW_SUBTOTALES

--ALTERAR UNA VISTA

ALTER VIEW  VIEW_SUPPLIER_PRODUCS AS

7.2 PROCEDIMIENTOS

Que son procedimientos Almacenados: Es un conjunto de código puro del lenguaje que utilizamos dentro de las bases de datos como por ejemplo: create table, insert into, Select from. Que se almacena físicamente en la base de datos y de la misma forma se exportan cuando creamos una copia de seguridad de nuestra base de datos.

Como funcionan: Los procedimientos almacenados se basan en una estructura definida por SQL SERVER.
Iniciamos con:

•     CREATE PROCEDURE nombre_del_procedimiento @variables tipo(longitud) }
•     AS
•     BEGIN
•     Todo el codigo puro de base de datos
•     END
Como probamos: Esto es lo más fácil de realizar solo necesitamos lo siguiente: Escribimos EXEC nombre_del_procedimiento ' variables',12,' variables'

Nota: Cabe destacar que no necesariamente se deben definir variables en el caso de un Select * From solo pondremos EXEC y nombre del procedimiento

Vamos a realizar un ejemplo

•     Creemos una base de datos con el nombre que decidamos
•     Creemos la siguiente tabla.

 Ahora definimos el procedimiento almacenado para insertar un nuevo registro(Recordemos que todo lo que está dentro del Begin puede ser cualquier sentencia de código puro de SQL SERVER: Insert into, Delete From, Update set, etc) .
 •     Ejecutamos el cogido y ahora probamos con los siguientes datos:

Codigo: 001 ; Nombre: Patricia ; Apellido: Colimba ; Edad: 21; Universidad: UTN

•     Ejecutamos el procedimiento almacenado con los datos anteriores tomando en consideración que: los campos tipo int se envían sin comilla el resto dentro de comilla.
•     Para ejecutar el procedimiento almacenado escribimos EXEC + el nombre del procedimiento + las variables si fuera el caso y clic en ejecutar


 •     Ahora revisamos en nuestra tabla y tenemos lo siguiente:


•     Como podemos ver funciona sin ningún problema
Nota: Todas las sentencias de SQL SERVER se pueden enviar dentro de un procedimiento almacenado, inclusive inner joins, busquedas &like entre otras.


7.3 TRIGGERS
Un    trigger(    o    desencadenador)    es    una    clase    especial    de    procedimiento almacenado que se ejecuta automáticamente cuando se produce un evento en el servidor de bases de datos.


La estructura de un trigger es:



Create Trigger pr_usuarios_Trigger1

On dbo.pr_usuarios
For /* Insert, Update, Delete */ As



Los triggers pueden incluir cualquier número y clase de instrucción de Transact- SQL.
Desde el Trigger podremos obtener los datos de la fila que se ha modificado o añadido utilizando inserted o deleted:


Select * from deleted



Limitaciones de los triggers.

- Solo se pueden aplicar a una tabla específica, es decir, un trigger no sirve para dos o más tablas
- El trigger se crea en la base de datos que de trabajo pero desde un trigger puedes hacer referencia a otras bases de datos.
- Un Trigger devuelve resultados al programa que lo desencadena de la misma forma que un Stored Procedure aunque no es lo mas idoneo, para impedir que una instrucción de asignación devuelva un resultado se puede utilizar la sentencia SET NOCOUNT al principio del Trigger.
- Las siguientes instrucciones no se pueden utilizar en los triggers :



ALTER DATABASE CREATE DATABASE DISK INIT DISK RESIZE
DROP DATABASE LOAD DATABASE


LOAD LOG RECONFIGURE

RESTORE DATABASE RESTORE LOG



SQL Server proporciona los siguientes tipos de triggers:



Trigger DML, se ejecutan cuando un usuario intenta modificar datos mediante un evento  de  lenguaje  de  manipulación  de  datos  (DML).  Los  eventos  DML  son instrucciones INSERT, UPDATE o DELETE de una tabla o vista.
Trigger DDL, se ejecutan en respuesta a una variedad de eventos de lenguaje de definición    de   datos   (DDL).    Estos    eventos    corresponden  principalmente    a instrucciones  CREATE,  ALTER  y  DROP  de  Transact-SQL,  y  a  determinados procedimientos almacenados del sistema que ejecutan operaciones de tipo DDL. Trigger DML, se ejecutan cuando un usuario intenta modificar datos mediante un evento  de  lenguaje  de  manipulación  de  datos  (DML).  Los  eventos  DML  son instrucciones INSERT, UPDATE o DELETE de una tabla o vista.


Ejemplo 1:

Como ejemplo crearemos un Trigger que avise al webmaster con un mail cuando un usuario se  da de alta en nuestro web, para crear el trigger solo se han de seguir los pasos arriba indicados, como muestran las imágenes y el código es el siguiente, haciendo Copy & Paste funciona.


El funcionamiento del trigger es muy sencillo, declaramos dos variables, una para el mensaje que se enviará en el mail y otra para obtener el ID del registro recién insertado  y  luego  este  ID  lo  concatenamos  al  mensaje  para  enviárselo  al webmaster.


Alter Trigger Trigger_Aviso_al_Webmaster

On dbo.pr_usuarios

For Insert

As



– Declaramos las variables del mensaje y del ID del nuevo usuario

Declare @Mensaje varchar(200)

Declare @ID numeric



– Obtenemos el id del usuario recien insertado

Select @ID = (Select IDUsuario From Inserted )

Select @Mensaje = „Nuevo Usuarios en el web : „ + Convert(varchar(10), @ID)



Exec master.dbo.xp_sendmail

@recipients = „webmaster@dominio.com‟,

@subject = „Nuevo usuario‟,

@message = @Mensaje



EJEMPLO 2:

Para indicar los triggers en esta base hacemos lo siguiente:

Podemos hacer dentro de nuestra base o creamos una Nueva Consulta, donde llamamos a nuestra base:
use Biblioteca

y comenzamos realizando nuestros triggers asi:

--Trigger que inserta una fila historico cuando se borra un prestamo

/*4.  Siempre  que  se  borra  una  fila  de  la  tabla  PRESTAMO,  se  inserta  en HISTORICO la fila con los datos correspondientes al prestamo que se borra*/ create trigger tr_delete_prestamo2
on PRESTAMO

after delete as declare

@a char(3),

@b smallint,

@c datetime,

@d smallint,

@e int,

@f datetime select
@a=DELETED.isbn,

@b=DELETED.copiaNro,

@c=DELETED.fechaPrestamo,

@d=DELETED.tituloNro,

@e=DELETED.usuarioNro,

@f=DELETED.fechaDebeDevolver from DELETED
insert into HISTORICO values(@a,@b,@c,@d,@e,@f,null,null,null)

Para ver el resultado tenemos que insertar a la tabla histórico lo siguiente:

insert into HISTORICO values(@a,@b,@c,@d,@e,@f,null,null,null) Luego llamamos a la tabla histórico y prestamo
select * from historico select * from prestamo
Ejecutamos el triggers.
INTRODUCCION A SQL SERVER 2008

Microsoft SQL Server 2008 Express es un sistema de administración de datos eficaz y confiable que ofrece un variado conjunto de características, protección de datos y rendimiento para clientes  de aplicaciones incrustadas, aplicaciones web ligeras y almacenes de datos locales. SQL Server 2008 Express, que está diseñado para una implementación sencilla y una creación de prototipos rápida, está disponible de forma gratuita y su redistribución con aplicaciones también es gratuita. Está diseñado para integrarse a la perfección con otras inversiones de infraestructura de servidor. Para obtener más información acerca de SQL Server Express, incluidas otras versiones y componentes para descargar ya disponibles, vea Microsoft SQL Server Express.


3.1 Requisitos del sistema

3.3.1  Sistemas operativos compatibles: Windows Server 2003 Service Pack 2; Windows Server 2008; Windows Vista; Windows XP Service Pack 2 ; Windows 7
3.3.2  Sistemas de 32 bits y 64 bits o Equipo con procesador Intel o compatible a 1 GHz o superior (se recomienda 2 GHz o superior. Sólo se admite un único procesador.) o 256 MB de RAM como mínimo (se recomienda 1 GB o más).
3.3.3  Sistemas de 64 bits o Procesador a 1,4 GHz o superior (se recomienda 2 GHz o superior. Sólo se admite un único procesador.) o 256 MB de RAM como mínimo (se recomienda 1GB o más). # SQL Server 2008 Express está disponible para sistemas x86 y x64. SQL Server 2008 Express no es compatible con sistemas IA64.


3.2. Instrucciones

Paso 1: descargar e instalar Microsoft .Net Framework 3.5 SP1. Paso 2: descargar e instalar Windows Installer 4.5.
Paso 3: descargue SQL Server 2008 Express haciendo clic en el vínculo apropiado más adelante en esta página. Para iniciar la instalación inmediatamente, haga clic en Ejecutar. Para instalar SQL Server Express más adelante, haga clic en Guardar.



INICIAR  LA INSTALACION  DE  SQL  SERVER 2008

Link de Descarga para AQL Server 2008 Express www.microsoft.com/downloads/details.aspx?FamilyID=58ce885d-508b-45c8-9fd3-118edd8e6fff&DisplayLang=es

4.1  Ejecutar  el  asistente  de  Instalación,  el  cual  va  a  instalar  Microsoft  .NET Framework antes de SQL:
4.2 Leer y Aceptar el Contrato de Licencia, presionar Instalar

4.3 El Asistente de Instalación procederá con la Instalación de Microsoft .NET Framework 3.5 SP1:
4.4 El asistente mostrará éxito en la instalación, presione Salir

4.5 Luego de esta instalación  aparece una ventana de actualización de Windows;

presionamos Aceptar y nos pedirá reiniciar el equipo:



 4.6    Al    reiniciarse    el    equipo    aparece    una    ventana    para    completar    los complementos:




 4.7  Ejecutar el setup de instalación de SQL Server:

 4.8  Aparecerá la ventana de Instalación:

 4.9    Presionar    la    ficha    instalación    y    luego    la    opción    “Nueva    instalación independiente de SQL Server…”


4.10 Aparecerá una ventana que identifica problemas que pudieran surgir durante la instalación.  El  instalador ejecutará primeramente una revisión para identificar problemas que podrían ocurrir  durante la instalación o limitaciones que podrían ocasionar que no podamos instalar SQL Server 2008.

 4.11 Especificar la edición de SQL Server 2008 y presionar Siguiente. Debemos seleccionar la edición que deseamos instalar o ingresar el product key del SQL Server 2008. (En este caso voy a instalar la edición Enterprise de prueba)
 4.12 Leer y Aceptar los términos de licencia; presionar Siguiente:

 4.13 Haga clic en instalar para instalar archivos auxiliares del programa de instalación:
 4.14  Aparece  una  pantalla  que  nos  indica  si  hay  algún  problema  para  la instalación, dar clic en Siguiente
 4.15 Seleccionar las características de SQL que desee instalar:
 4.16 Especificar el nombre y el ID de la instancia de SQL. En este caso no tenemos  ninguna  instancia  de  SQL  Server  y  vamos  a  instalar  en  el  Default instance:
 4.17 Revise el resumen de espacio en disco para las características de SQL Server que ha seleccionado:
 4.18 Especificar las opciones de configuración: Usar la misma cuenta para todos los servicios de SQL. Configurar las cuentas con la que se iniciará cada servicio de SQL Server 2008
 Se debe especificar el nombre de usuario “Administrador” de la cuenta de inicio
de sesión en Windows Server 2008 así como su contraseña.

 4.19 En la configuración del motor de base de datos; determinar el modo de autenticación como modo mixto y poner una contraseña para el usuario “sa” de SQL Server. En este paso deberán seleccionar el modo de autenticación de SQL Server y agregar las cuentas que serán administradores de la instancia.
 4.20 Habilitar FILESTREAM para el Acceso TRANSACT-SQL:
 4.21 Especificar los usuarios que tendrán permisos administrativos para Analisis Services. Hacer clic en agregar usuario actual:

 4.22 Instalar la configuración predeterminada de modo nativo. En la configuración de Reporting Services seleccionar el tipo por defecto

 4.23 El programa de instalación ejecuta reglas para determinar si se bloqueará el proceso de instalación
 4.24 Listo para Instalar, presione Instalar:
 4.25 Progreso de la Instalación:
 4.26 Operación Completada:
 Iniciar SQL Server:

 Ahora el programa está instalado y listo para utilizarlo
6.  Creación de BD e Ingreso de Datos y Consultas
6.1 DDL y DML

Lenguaje de definición de datos (DDL: Data Definition Language): Es un sencillo lenguaje artificial para definir y describir los objetos de la base de datos, su estructura, relaciones y restricciones. En la práctica puede consistir en un subconjunto de instrucciones de otro lenguaje informático. Posee dos subconjuntos de instrucciones:
6.1.1 Lenguaje de definición del almacenamiento de los datos (DSDL: Data Storage Definition Language): permite especificar características físicas de la base de datos (volúmenes y archivos donde van a ser almacenados los datos, etc).

6.1.2  Lenguaje de control de datos (DCL: Data Control Language): encargado del control y seguridad de los datos (privilegios y modos de acceso, etc).

Lenguaje de manipulación de datos (DML: Data Manipulation Language): Lenguaje artificial de cierta complejidad que permite el manejo y procesamiento del contenido de la base de datos. En la práctica puede consistir en un subconjunto de instrucciones de otro lenguaje informático. Las aplicaciones que trabajan sobre la base de datos se programan en un lenguaje de programación (C, Cobol,...) insertando en el código fuente sentencias del DML. Al utilizar un DML se deben especificar los datos que serán afectados por las sentencias del lenguaje. Un DML puede tener o no procedimientos, según sea necesario especificar además cómo deben obtenerse esos datos. Los DML con
procedimientos tienen sentencias de control de flujo como bucles o condicionales. Los DML sin procedimientos son conocidos también como declarativos.

Comandos del DDL y del DML

Comandos DLL


Comando    Descripción

CREATE    Utilizado para crear nuevas tablas, stored procedures e índices

DROP    Empleado para eliminar tablas, stored procedures e índices

ALTER    Utilizado para modificar las tablas agregando campos o cambiando la definición de los campos

Comandos DML

Comando    Descripción

SELECT    Utilizado para consultar registros de la base de datos que satisfagan un criterio determinado.

INSERT    Utilizado para cargar lotes de datos en la base de datos en una única operación.

DELETE    Utilizado para modificar los valores de los campos y registros especificados.

UPDATE    Utilizado para eliminar registros de una tabla de una base de datos.

 6.2  COMO CARGAR DATOS DESDE CONSOLA A NUESTRA BASE DE DATOS EN SQL SERVER 2008

BDACADEMICO

Primero debemos tener listo nuestro script de la base de datos .sql. Luego Clic en Inicio/cmd/Ejecutar
Cuando se abre una ventana del símbolo del sistema, sólo hay una línea similar a: C:\> _
Esto significa que la carpeta C:\ es la carpeta actual y, si se especifica un nombre de archivo, Windows buscará ese archivo en esa carpeta.

Escribimos sqlcmd para conectarse a la instancia predeterminada de SQL Server en el equipo local, y el contenido de la ventana del símbolo del sistema será:

C:\>sqlcmd
1> _

Esto significa que se ha conectado a una instancia de SQL Server y sqlcmd está listo para aceptar instrucciones Transact-SQL y comandos de sqlcmd. El carácter de subrayado intermitente después de 1> es el símbolo del sistema sqlcmd, que marca la ubicación donde  se  mostrarán las instrucciones y comandos que se escriban.

Para conectarnos con nuestra base de datos en este caso con BDACADEMICO

ponemos lo siguiente:

1>sqlcmd –i c:\sc\script.sql –o c:\sc\MyOutput.txt

Una vez conectada podemos realizar cualquier consulta.

Un ejemplo de consulta con nuestra base de datos BDACADEMICO

Realizar una consulta que nos permita mostrar el nombre del estudiante con sus materias y sus notas en su respectivo periodo.
5.  PASOS PARA CONFIGURAR SQL SERVER 2008 PARA ADMITIR CONEXIONES REMOTAS
Las nuevas políticas de Seguridad de Microsoft incorporan restricciones a la hora de  comenzar   a   usar  SQL  Server  2008.  Los  Servicios  que  antes  estaban habilitados  por  defecto,  ahora  no  lo  están,  y  es  función  del  Administrador  ir habilitándolos según las necesidades de uso del mismo.


Una de las cuestiones más importantes es la de Admitir Conexiones Remotas en nuestro  Servidor. A fin de habilitarlas y asegurarnos que se pueden conectar desde otros ordenadores debemos seguir unos sencillos pasos:

5.1  Abriremos  SQL  Server  Management  Studio,  nos  situamos  encima  de  la instancia    de    nuestro    Servidor    y    pulsamos    botón    derecho,    Propiedades, seleccionamos Conexiones, nos mostrara la siguiente pantalla:
 Ahora marcamos el checkbox: “Permitir conexiones remotas con este servidor” y pulsamos aceptar.

5.2  Vamos  al  Menú  de  Inicio  >  Programas  >  Microsoft  SQL  Server  2008  > Herramientas de Configuración > Administrador de Configuración de SQL Server, aparece la siguiente ventana:

 Seleccionamos la Configuración de red de SQL Server y luego Protocolos de MSSQLSERVER. Como podemos observar, por defecto solo tiene habilitado el protocolo de Memoria compartida, el resto están deshabilitados. Básicamente es el tipo de protocolo que se usa, cuando nos conectamos a SQL Server desde el mismo Servidor.

Lo que debemos hacer es habilitar los protocolos: “Canalizaciones con nombre” y “TCP/IP”. Para  lo cual, pulsamos con el botón derecho del ratón encima de los mismos y pulsamos Habilitar.  En las dos ocasiones nos mostrara un mensaje informándonos,  que  para  que  la  nueva  configuración  surta  efecto  abra  que reiniciar el Servicio de SQL Server.

Ahora nos quedará así:

 5.3 Vamos al Menú de Inicio > Ejecutar y escribimos services.msc y le damos aceptar.    De esta  forma nos abrirá la Consola de Administración de Servicios. Nos desplazamos hasta el Servicio con nombre “SQL Server (MSSQLSERVER)”, nos situamos encima y pulsamos el botón  derecho  del ratón, seleccionando; reiniciar. Con esto aplicaremos los cambios efectuados en el paso anterior.
 5.4 SI estamos utilizando SQL Server con nombre de instancia y sin emplear un número concreto de puerto TCP/IP, debemos habilitar el servicio SQL Server Browser, que se encuentra en la misma ventana de Servicios con el nombre de “SQL Server Browser”. Nos situamos encima y con el botón derecho del ratón pulsamos en Propiedades, o bien podemos hacer doble click, es lo mismo.
 En el Tipo de Inicio, seleccionamos Automático y pulsamos Iniciar para que el

Servicio arranque. Aceptar para cerrar la pantalla.

Este Servicio comporta ciertos riesgos de seguridad que deben ser considerados, pues  existen  otras  alternativas  a  utilizar  como  configurar  el  Cliente  de  SQL Servidor con el Alias del Servidor, o utilizar la conexión incorporando el puerto de TCP/IP a usar, por defecto en SQL Server es el 1433.

5.4 Y por último, en caso de tener habilitado el Firewall de Windows, cosa que deberíamos tener por Seguridad, deberemos configurarlo para que los Servicios de SQL Server y SQL Browser puedan comunicarse con el exterior. Vamos a Menú de Inicio , hacemos clic en Ejecutar , escribimos firewall.cpl y pulsamos

Aceptar. Nos muestra esta ventana:


Pulsamos  en  “Permitir  un  programa  a  través  del  Firewall  de  Windows”  nos muestra:

 Pulsamos en Agregar programa nos muestra la ventana:
Pulsamos en Examinar e introducimos la carpeta donde se encuentra el Servicio de SQL Server: “C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn” en la misma seleccionamos el programa: “sqlservr.exe” y pulsamos Aceptar. Repetimos la operación para añadir el SQL Server Browser que se encuentra en la carpeta: “C:\Program Files\Microsoft SQL Server\90\Shared”. Seleccionamos el programa: “sqlbrowser.exe” y pulsamos Aceptar. Veremos que ambas excepciones nos aparecen en la pantalla de Configuración del Firewall.

Y con esto ya tenemos configurado nuestro Servidor SQL 2008 para permitir
Conexiones desde cualquier ordenador de nuestra red.

lunes, 5 de diciembre de 2011

ADMINISTRADOR DE USUARIOS

 ADMINISTRADOR DE USUARIOS 
Abrimos  Microsoft SQL Server Management Studio y nos conectamos como administrador


Nos aparece con nuestra base de datos (DBACADEMICO) con la que vamos a trabajar y nos aparece de la siguiente manera


Nos vamos a Seguridad > click derecho en Inicios de Sesión > Nuevo inicio de Sesión


Donde ingresamos  el nombre de nuestro usuario, hacemos clic en Autenticación de SQL Server e ingresamos la contraseña con la que queremos entrar a nuestro usuario que estamos creando y escogemos la base de datos (DBACADEMICO) 


  
Nos dirigimos a Asignación de usuario donde escogemos nuestra base de datos (DBACADEMICO) y Aceptar

  
Antes de Autenticarnos con SQL Server, hacemos click derecho en PATY-PC/SQLEXPRESS…. >PROPIEDADES > SEGURIDAD , donde tiene que estar Modo de Autenticación de Windows y SQL Server, este nos da permiso de autenticarnos con SQL Server  y Aceptar


 Nos desconectamos y nos volvemos a conectar como Usuario, donde ingresamos el nombre del usuario que creamos y su contraseña


  
Una vez que estamos como usuario, nos vamos a la base de datos (DBACADEMICO)  pero no podemos ver las tablas porque no hemos dado permiso de leer y escribir, sino solo modificar

Vamos a dar a continuación los permisos respectivos 
Nos desconectamos y nos conectamos como Administrador y hacemos lo siguiente:Seguridad > Inicios de Sesión > doble click en Practica > Asignación de Usuarios > Escogemos nuestra base de datos y en la parte de abajo seleccionamos db_datareader y db_datawriter (permiten leer y escribir los datos de nuestra base de datos) y Aceptar

  
Probamos si ya podemos leer los datos

 
Podemos observar que ya podemos mirar sus tablas 
Realizamos una consulta para ver si podemos ver los datos.

  
Vamos a denegar el permiso  de select a la tabla estudiantes
Nos desconectamos y nos conectamos como Administrador en donde y hacemos lo siguiente:
Base de Datos > DBACADEMICO > Seguridad > Usuarios y doble click en Practica > Elementos que pueden protegerse > Buscar > Todos los objetos de los tipos > Aceptar

  
Escogemos el objeto > Tablas y Aceptar
 
 Nos muestra lo siguiente:

  
Donde vamos a denegar el select estudiante

  
También podemos denegar por columnas, en este caso vamos a denegar la columna id_estudiante de estudiantes:
Permisos de Columna y denegamos al id_estudiante > Aceptar > Aceptar

  
Nos desconectamos y nos volvemos a conecta como Usuario (Practica)
Probamos  en una consulta e ingresamos select * from estudiantes donde tiene que aparecernos todos los datos de esa tabla, Pero al nosotros haber denegado nos aparece el error que nos muestra en la imagen

  
Pero si seleccionamos una columna que no está denegada como es nombres, si nos va a coger porque esta no está denegada, o cualquier columna que no hayamos denegado

  
Por Ultimo vamos a quitar todos los permisos de una tabla completa
Nos desconectamosy nos volvemos a conectar como Administrador
Base de datos > Seguridad > Usuarios > doble click en practica > Elementos que puedan protegerse > Buscar > Todos los objetos de los tipos > Aceptar > Tablas > Aceptar 

Escogemos la tabla que deseamos denegar todos los permisos (vamos a denegar docentes)
Escogemos la tabla docentes y en la parte de abajo escogemos toda esa columna y denegamos > Aceptar

  
Nos desconectamos y nos volvemos a conectar como Usuario (Practica) nos dirigimos a base de datos > DBACADEMICO > Tablas. Como podemos observar  que la tabla docentes ya no nos aparece debido a que denegamos el permiso para poder ver esta tabla


VIDEO