Sei sulla pagina 1di 12

INVESTIGACION INDIVIDUAL: PAGINA 55 Estados en que puede encontrarse una transaccin.

Una transaccin debe estar en uno de los siguientes estados: Activa (estado inicial): la transaccin permanece en este estado durante su ejecucin Parcialmente Comprometida: la transaccin pasa a este estado cuando acaba de realizar la ltima instruccin Fallida: la transaccin pasa a este estado tras descubrir que no puede continuar la ejecucin normal Abortada: la transaccin pasa a este estado despus de haber restablecido la base de datos a su estado anterior Comprometida: la transaccin pasa a este estado tras completarse con xito

Isolation Level en el manejo de Bloqueos Controla el comportamiento del bloqueo. El nivel de aislamiento en las que una instruccin de Transact-SQL se ejecuta determina su cierre y el comportamiento de versiones de filas. Un nivel de aislamiento tiene una conexin en todo el mbito de aplicacin, y una vez establecida una conexin con la instruccin SET TRANSACTION ISOLATION LEVEL, permanece en efecto hasta que la conexin est cerrada o en otro nivel de aislamiento se establece. Sin embargo, las consultas individuales emitidas dentro de una conexin pueden contener sugerencias de bloqueo que modifican el aislamiento de una sola sentencia o transaccin, pero no afectan el nivel de aislamiento de la conexin. Hay cuatro niveles de aislamiento definidos en el estndar SQL-92 que se han apoyado en las versiones anteriores de SQL Server: READ UNCOMMITTED es el nivel de aislamiento menos restrictivo, ya que hace caso omiso de las cerraduras colocadas por otras transacciones. Las operaciones de ejecucin en READ UNCOMMITTED puede leer los valores de datos modificados que an no han sido confirmados por otras transacciones, los cuales se les llama "sucio". READ COMMITTED es el nivel de aislamiento predeterminado de SQL Server. Impide lecturas sucias, indicando que las declaraciones no pueden leer los valores de datos que han sido modificados, pero an no ha confirmado por otras transacciones. Otras operaciones todava se pueden modificar, insertar o eliminar datos entre las ejecuciones de sentencias individuales dentro de la transaccin actual, dando como resultado lecturas no repetibles o datos "fantasma". REPEATABLE READ es un nivel de aislamiento ms restrictivo que lectura confirmada. Abarca READ COMMITTED y, adems, especifica que ninguna otra transaccin puede modificar o borrar los datos que han sido ledos por la transaccin actual hasta que la transaccin actual comete.

SERIALIZABLE es el nivel de aislamiento ms restrictivo, porque bloquea intervalos de claves completos y mantiene los bloqueos hasta que se complete la transaccin. Abarca REPEATABLE READ y agrega la restriccin de que otras transacciones no pueden insertar nuevas filas en los rangos que han sido ledos por la transaccin hasta que la transaccin se ha completado.

SNAPSHOT de Aislamiento. Ya habamos hablado ac sobre este nivel de lockeo. Una transaccin bajo este nivel de aislamiento, trabaja sobre una copia o snapshot de la base de datos. Cuando finaliza la transaccin, hace un margen entre la copia y la base de datos. Ventajas: Mayor nivel de consistencia incluso que un repetable red, con mayor nivel de concurrencia, ya que no realiza lockeos. Contras: Mayor overhead para mantener las distintas versiones de un conjunto de datos, lo que impacta en la performance. Uso Habitual: Cuando se necesita obtener informacin muy consistente y en entornos de alta concurrencia. Recordemos que para activar especificar el nivel de aislamiento, se debe ejecutar SET TRANSACTION ISOLATION LEVEL INVESTIGACION INDIVIDUAL: PAGINA 56 Crear y administrar usuarios Para crear un usuario de base de datos mediante SQL Server Management Studio: En SQL Server Management Studio, abra el Explorador de objetos y expanda la carpeta Bases de datos. Expanda la base de datos en la que se va a crear el usuario de la misma. Haga clic con el botn secundario en la carpeta Seguridad, seleccione Nuevo y, a continuacin, haga clic en Usuario. En la pgina General, escriba un nombre para el usuario en el cuadro Nombre de usuario. En el cuadro Nombre de inicio de sesin, escriba el nombre de un inicio de sesin de SQL Server para asignarlo al usuario de la base de datos. Haga clic en Aceptar}

Permisos Todas las acciones que se pueden realizar en una instancia de Motor de base de datos se controlan mediante los permisos concedidos a las credenciales de autenticacin usadas para conectarse a la instancia. De forma predeterminada, el proveedor y los cmdlets de SQL Server usa la cuenta de Windows de ejecucin para establecer una conexin de autenticacin de Windows con Motor de base de datos. Para establecer una conexin de autenticacin de SQL Server debe proporcionar un identificador de inicio de sesin y contrasea de autenticacin de SQL Server. Al usar el proveedor SQL Server, debe asociar las credenciales de inicio de sesin de SQL Server a una unidad virtual y, a continuacin, usar el comando de cambio de directorio (cd) para conectarse a esa unidad de disco. En Windows PowerShell, las credenciales de seguridad solo se pueden asociar con unidades virtuales. Los permisos se pueden manipular con las conocidas consultas GRANT, DENY y REVOKE de Transact-SQL. La informacin sobre los permisos est visible en las vistas de catlogo sys.server_permissions y sys.database_permissions. Tambin hay informacin sobre la compatibilidad con permisos para consultas mediante el uso de las funciones integradas. Una de las features ms solicitadas por los desarrolladores y DBA es la posibilidad de que el motor de base de datos pueda cifrar datos y as no tener que disponer de herramientas de terceros o codificar los mtodos de cifrado. Tcnicas de cifrado En muchas aplicaciones es necesario cifrar datos, pero Qu buscamos, bsicamente, cuando deseamos implementar una solucin de ste tipo? El cifrado de datos tiene por objetivo poder mantener los datos (no deben ser todos los datos) asegurados, y no permitir la lectura directa de los mismos, por ejemplo: si existe una tabla donde se almacenan las tarjetas de crdito, la informacin de dicha tabla se podra considerar confidencial, con lo cual no sera nada bueno que algn usuario pueda acceder a dicha informacin de forma directa; el cifrado nos garantizar que por ms que se tenga permisos para leer los datos, stos no sern legibles si no se tiene la manera de descifrarlos. La determinacin de qu datos se deben cifrar depender del negocio en s; no recomiendo cifrar todo sino solamente lo necesario, ya que las operaciones de cifrado/descifrado perjudican el rendimiento global, con lo cual se debera poner a un lado de la balanza la seguridad, y la performance al otro. SQL Server ofrece 4 alternativas para realizar el cifrado de datos: Passphrase Asymmetric Key Symmetric Key Certificate Key

Autenticacin De forma predeterminada, los componentes PowerShell de SQL Server usan la autenticacin de Windows para conectarse a una instancia de Motor de base de datos. Puede usar la autenticacin de SQL Server definiendo una unidad virtual de PowerShell o especificando los parmetros de Username y de Password para Invoke-Sqlcmd. Para crear una unidad virtual asociada con el inicio de sesin de autenticacin de SQL Server Crear una funcin que: Tiene parmetros para que el nombre proporcione la unidad virtual, el identificador de inicio de sesin y la ruta de acceso del proveedor para asociarla a la unidad virtual. Usa read-host para solicitar la contrasea al usuario. Usa new-object para crear un objeto de credenciales. Usa new-psdrive para crear una unidad virtual con las credenciales proporcionadas.

Invocar la funcin para crear una unidad virtual con las credenciales proporcionadas. Use el parmetro de Username para especificar un identificador de inicio de sesin y el parmetro de Password para especificar la contrasea asociada. Schemas SQL 2005 y 2008 Para los que siempre hemos confiado en la maquinaria que es el motor de base de datos SQL Server 2000 para manejar grandes bases de datos solamente de almacenamiento de datos (no incluye generacin de Cubos, Anlisis de datos, Reportes) nos encontrbamos muchas veces con un pequeo inconveniente de seguridad con los usuarios. Muchas veces, tenamos algn usuario del que tenamos procedimientos, tablas, vistas y funciones atada al usuario y cuando desebamos eliminar el usuario, simplemente no podamos porque estaba atada al usuario. Para evitar esos inconvenientes en el Motor SQL Server 2005, Microsoft ha presentado los "schemes" que te permiten crear una especie de plantilla a la que se le asigna un /unos usuarios y que tienen sus propios permisos para tablas, procedimientos y vistas. Para crear un Schema lo primero que debemos hacer es seleccionar una base de datos: Baseballen nuestro caso. Luego de seleccionar la base de datos donde queremos crear nuestros schemas, hacemos clic en Security --> Schema y hacemos clic derecho y seleccionamos New Schema. Luego de seleccionar New Schema, colocamos el nombre del Schema y el (los) usuario(s) que tienen acceso al mismo. Despus de seleccionar los usuarios, se le deben asignar los distintos permisos que debe tener, execute, select, insert, alter, update, entre otros.

Ahora solo se debe asignar el schema propietario de las tablas o procedimientos que van a ejecutar alguna tarea en nuestra base de dato que por defecto siempre ser [dbo]. En las pantallas de ejemplo pueden ver algunos schemas que vienen por defecto y otros creados por quien le escribe, como son security y system que son personalizados.

Crea un esquema en la base de datos actual. La transaccin CREATE SCHEMA tambin puede crear tablas y vistas dentro del nuevo esquema, as como establecer la concesin, denegacin o revocacin (GRANT, DENY o REVOKE) de permisos en esos objetos.

CREATE SCHEMA schema_name_clause [ <schema_element> [ ...n ] ] <schema_name_clause> ::= { schema_name | AUTHORIZATION owner_name | schema_name AUTHORIZATION owner_name } <schema_element> ::= { table_definition | view_definition | grant_statement | revoke_statement | deny_statement } schema_name: Es el nombre por el que se identifica al esquema en esta base de datos. AUTHORIZATION owner_name: Especifica el nombre de la entidad de seguridad de la base de datos que poseer el esquema. Es posible que esta entidad de seguridad posea otros esquemas y no utilice el esquema actual como predeterminado. table_definition: Especifica una instruccin CREATE TABLE que crea una tabla en el esquema. La entidad de seguridad que ejecuta esta instruccin debe tener el permiso CREATE TABLE en la base de datos actual. view_definition: Especifica una instruccin CREATE VIEW que crea una vista en el esquema. La entidad de seguridad que ejecuta esta instruccin debe tener el permiso CREATE VIEW en la base de datos actual. grant_statement: Especifica una instruccin GRANT que otorga permisos sobre cualquier elemento protegible, excepto el esquema nuevo. revoke_statement: Especifica una instruccin REVOKE que revoca permisos sobre cualquier elemento protegible, excepto el esquema nuevo. deny_statement: Especifica una instruccin DENY que deniega permisos sobre cualquier elemento protegible, excepto el esquema nuevo.

Requiere el permiso CREATE SCHEMA en la base de datos. Para crear un objeto especificado dentro de la instruccin CREATE SCHEMA, el usuario debe tener el permiso CREATE correspondiente. Para especificar otro usuario como el propietario del esquema que se est creando, el autor de la llamada debe tener el permiso IMPERSONATE sobre ese usuario. Si se especifica un rol de base de datos como propietario, el autor de la llamada debe pertenecer al rol o debe tener el permiso ALTER para el rol. Tipos de datos en Transact SQL Cuando definimos una tabla, variable o constante debemos asignar un tipo de dato que indica los posibles valores. El tipo de datos define el formato de almacenamiento, espacio que de discomemoria que va a ocupar un campo o variable, restricciones y rango de valores validos. Transact SQL proporciona una variedad predefinida de tipos de datos. Casi todos los tipos de datos manejados por Transact SQL son similares a los soportados por SQL. Todos los tipos de datos enteros pueden marcarse con la propiedad identity para hacerlos autonumricos.

tipo de datos

Dato Bit

Numericos

TIPOS DE DATOS DE SQL SERVER Descripcion Una columna o variable de tipo bit puede almacenar el rango Una columna o variable de tipo tinyint puede almacenar el rango de Tinyint valores de 0 a 255. Una columna o variable de tipo smallint puede almacenar el rango SmallInt de valores -32768 a 32767. Una columna o variable de tipo int puede almacenar el rango Int de valores -231 a 231-1 . Una columna o variable de tipo bigint puede almacenar el BigInt rango de valores -263 a 263-1 . Una columna de tipo decimal puede almacenar datos nmericos Decimal(p,s).decimales sin redondear. Donde p es la precision (nmero total del dgitos) y s la escala (nmero de valores decimales) Una columna de datos float puede almacenar el rango de valores Float 1,79x-10308 a 1,79x-10308, , si la definimos con el valor mxmo de precisin. La precisin puede variar entre 1 y 53. Sinnimo de float(24). Puede almacenar el rango de valores Real 3,4x-1038 a 3,4x-1038, Almacena valores nmericos monetarios de -2 63 a 263-1, con una precisin de hasta diexz milesimas de la unidad monetaria. Almacena valores nmericos monetarios de -214.748,3647 a SmallMoney 214.748,3647, con una precisin de hasta diez milesimas de la unidad monetaria. Almacena n caracteres en formato ASCII, un byte por cada letra. Cuando almacenamos datos en el tipo char, siempre se utilizan los n caracteres indicados, incluso si la entrada de datos es inferior. Por ejemplo, si en un char(5), guardamos el valor 'A', se almacena 'A ', ocupando los cinco bytes. Char(n) Almacena n caracteres en formato ASCII, un byte por cada letra. Cuando almacenamos datos en el tipo varchar, unicamente se utilizan los caracteres necesarios,Por ejemplo, si en un varchar(255), guardamos el valor 'A', se almacena 'A', Varchar(n). ocupando solo un byte bytes. Igual que varchar, pero al declararse como max puede Varchar(max). almacenar 231-1 bytes Almacena n caracteres en formato UNICODE, dos bytes por cada letra. Es recomendable utilizar este tipo de datos cuando los valores que vayamos a almacenar puedan pertenecer a Nchar(n). diferente idomas. Almacena n caracteres en formato UNICODE, dos bytes por cada letra. Es recomendable utilizar este tipo de datos cuando los valores que vayamos a almacenar puedan pertenecer a Nvarchar(n). diferente idomas. Igual que varchar, pero al declararse como max puede Nvarchar(max). almacenar 231-1 bytes. Almacena fechas con una precision de milisegundo. Debe Datetime. usarse para fechas muy especificas. Almacena fechas con una precision de minuto, por lo que ocupa la mitad de espacio de que el tipo datetime, para tablas que puedan llegar a tener muchos datos es un factor a tener muy en SmallDatetime cuenta. Se utiliza para marcar un registro con la fecha de insercin actualizacin. El tipo timestamp se actualiza automticamente TimeStamp cada vez que insertamos o modificamos los datos. Money.

Carcter

Fecha

Binarios

XML

Se utiliza para almacenar datos binarios de longitud fija, con una longitud mxima de 8000 bytes. Binary Se utiliza para almacenar datos binarios de longitud variable, con una longitud mxima de 8000 bytes..Es muy similar a binary, Varbinary salvo que varbinary utiliza menos espacio en disco. Varbinary(max) que varbinary, pero puede almacenar 231-1 bytes Igual Una de las grandes mejoras que incorpora SQL Server 2005 es el soporte nativo para XML. Como podemos deducir, este tipo de datos se utiliza para almacenar XML. XML

CONSTRAINT Se utiliza la clusula CONSTRAINT en las instrucciones ALTER TABLE y CREATE TABLE para crear o eliminar ndices. Existen dos sintaxis para esta clusula dependiendo si desea Crear Eliminar un ndice de un nico campo o si se trata de un campo multindice. Si se utiliza el motor de datos de Microsoft, slo podr utilizar esta clusula con las bases de datos propias de dicho motor. Para los ndices de campos nicos: CONSTRAINT nombre {PRIMARY KEY | UNIQUE | REFERENCES tabla externa [(campo externo1, campo externo2)]} Para los ndices de campos mltiples: CONSTRAINT nombre {PRIMARY KEY (primario1[, primario2 [,...]]) | UNIQUE (nico1[, nico2 [, ...]]) | FOREIGN KEY (ref1[, ref2 [,...]]) REFERENCES tabla externa [(campo externo1 ,campo externo2 [,...])]} Si se desea crear un ndice para un campo cuando se esta utilizando las instrucciones ALTER TABLE o CREATE TABLE la clusula CONSTRAINT debe aparecer inmediatamente despus de la especificacin del campo indexado. Si se desea crear un ndice con mltiples campos cuando se est utilizando las instrucciones ALTER TABLE o CREATE TABLE la clusula CONSTRAINT debe aparecer fuera de la clusula de creacin de tabla. UNIQUE Previene la duplicacin de las llaves alternas y se asegura que un ndice se crea para que mejore el rendimiento. Se permiten valores nulos. Define que ms de una fila no puede tener el mismo valor en una columna. Permite nulo.

Ejemplo: ALTER TABLE tema ADD CONSTRAINT u_descripcion UNIQUE NONCLUSTERED(tem_des) Establece que la columna tem_des de la tabla tema no puede tener descripciones iguales. Crea un indice unico de nombre u_descripcion. Las restricciones de integridad referencial en cascada permiten definir las acciones que SQL Server lleva a cabo cuando un usuario intenta eliminar o actualizar una clave a la que apuntan las claves externas existentes. Las clusulas REFERENCES de las instrucciones CREATE TABLE y ALTER TABLE admiten las clusulas ON DELETE y ON UPDATE. Las acciones en cascada tambin se puede definir mediante el cuadro de dilogo Relaciones de clave externa. NO ACTION Es el valor predeterminado si no se especifica ON DELETE u ON UPDATE. Produce un error indicando que un DELETE UPDATE crear una violacin de la clave fornea definida. ON DELETE NO ACTION Especifica que si se intenta eliminar una fila con una clave a la que hacen referencia las claves externas de las filas existentes en otras tablas, se produce un error y se revierte la instruccin DELETE. ON UPDATE NO ACTION Especifica que si se intenta actualizar un valor de clave en una fila a cuya clave hacen referencia las claves externas de filas existentes en otras tablas, se produce un error y se revierte la instruccin UPDATE. CASCADE, SET NULL y SET DEFAULT Ppermiten la eliminacin o actualizacin de valores de clave de modo que se pueda realizar un seguimiento de las tablas definidas para tener relaciones de clave externa en la tabla en la que se realizan las modificaciones. Si las acciones referenciales en cascada se han definido tambin en las tablas de destino, las acciones en cascada especificadas se aplican para las filas eliminadas o actualizadas. No se puede especificar CASCADE para ninguna de las claves externas o principales que tengan una columna timestamp.

CASCADE Borra actualiza automticamente todas las referencias activas ON DELETE CASCADE Especifica que si se intenta eliminar una fila con una clave a la que hacen referencia claves externas de filas existentes en otras tablas, todas las filas que contienen dichas claves externas tambin se eliminan. ON UPDATE CASCADE Especifica que si se intenta actualizar un valor de clave de una fila a cuyo valor de clave externas de filas existentes en otras tablas, tambin se actualizan todos los valores que conforman la clave externa al nuevo valor especificado para la clave. SET NULL Define las referencias activas como NULL ON DELETE SET NULL Especifica que si se intenta eliminar una fila con una clave a la que hacen referencia las claves externas de las filas existentes de otras tablas, todos los valores que conforman la clave externa de las filas a las que se hace referencia se establecen en NULL. Todas las columnas de clave externa de la tabla de destino deben aceptar valores NULL para que esta restriccin se ejecute. ON UPDATE SET NULL Especifica que si se intenta actualizar una fila con una clave a la que hacen referencia las claves externas de las filas existentes de otras tablas, todos los valores que conforman la clave externa de las filas a las que se hace referencia se establecen en NULL. Todas las columnas de clave externa de la tabla de destino deben aceptar valores NULL para que esta restriccin se ejecute. SET DEFAULT Define las referencias activas como el valor por defecto (si est definido) de las mismas ON DELETE SET DEFAULT Especifica que si se intenta eliminar una fila con una clave a la que hacen referencia las claves externas de las filas existentes de otras tablas, todos los valores que conforman la clave externa de las filas a las que se hace referencia se establecen como predeterminados. Todas las columnas de clave externa de la tabla de destino deben tener una definicin predeterminada para que esta restriccin se ejecute. Si una columna acepta

valores NULL y no se ha establecido ningn valor predeterminado explcito, NULL se convierte en el valor predeterminado implcito de la columna. Todos los valores distintos de NULL que se establecen debido a ON DELETE SET DEFAULT deben tener unos valores correspondientes en la tabla principal para mantener la validez de la restriccin de la clave externa. ON UPDATE SET DEFAULT Especifica que si se intenta actualizar una fila con una clave a la que hacen referencia las claves externas de las filas existentes de otras tablas, todos los valores que conforman la clave externa de la fila a los que se hace referencia se establecen en sus valores predeterminados. Todas las columnas externas de la tabla de destino deben tener una definicin predeterminada para que esta restriccin se ejecute. Si una columna se convierte en NULL, y no hay establecido ningn valor predeterminado explcito, NULL deviene el valor predeterminado implcito de la columna. Todos los valores no NULL que se establecen debido a ON UPDATE SET DEFAULT deben tener unos valores correspondientes en la tabla principal para mantener la validez de la restriccin de clave externa. RESTRICT Produce un error indicando que un DELETE UPDATE crear una violacin de la clave fornea definida.

Potrebbero piacerti anche