Documente Academic
Documente Profesional
Documente Cultură
El administrador de la base de datos puede crear o borrar nuevos espacios lógicos de objetos, añadir
o eliminar archivos físicos de soporte, utilizarlos como espacio temporal de trabajo, definir
parámetros de almacenamiento para objetos destinados a ese espacio de datos.
En sql server nuestras estructuras lógicas de almacenamiento serian nuestras bases de datos y
nuestras estructuras físicas de almacenamiento serían los archivos .mdf, .ldf; en el caso de Oracle,
las estructuras de almacenamiento lógicas serían los tablespaces y las estructuras físicas de
almacenamiento serían los datafiles.
En la creación de una nueva base de datos es muy necesaria la configuración de las estructuras de
almacenamiento, recordemos que la arquitectura de almacenamiento de SQL Server distribuye la
información de la base de datos en diversos archivos de datos y de registro de transacciones, todos
los datos y objetos de la base de datos, como tablas, procedimientos almacenados, vistas y triggers
(disparadores), se almacenan en estos archivos, estos archivos son:
En cuanto al espacio ocupado por la base de datos, hay que tener presente que los datos se
almacenan en paginas (bloques de 8Kb de espacio contiguo) lo que implica un almacenamiento de
128 páginas por Megabyte.
El administrador puede crear grupos de archivos, para mejorar el rendimiento de la base de datos
la permitir crear la base de datos en diferentes discos. En este contexto un grupo de archivos
existente, excepto el principal, puede marcarse como de solo lectura, entonces para evitar
actualizaciones accidentales es conveniente colocar las tablas que no deban modificarse en uno o
varios grupos de archivos y marcarlos como de solo lectura.
En el archivo de transacciones se registra el inicio de cada transacción y los cambios de los datos,
facilitando con esto poder deshacer los cambios en la base de datos.
Dentro de este archivo (.ldf), cada cierto volumen de información registrada en el mismo, el
manejador graba un punto de comprobación (checkpoint). En dicho punto de comprobación el
SGBD, se asegura de que todos los registros del log de transacciones y las páginas de la base de
datos modificadas se escriban en el disco, por lo tanto este punto representa el aseguramiento de
la integridad de la información y es hasta donde se deberá hacer la recuperación de la información.
Para aumentar al máximo el rendimiento, cree archivos o grupos de archivos en tantos discos físicos
como estén disponibles y distribuya en grupos de archivos en tantos discos físicos como estén
disponibles, esto para que el rendimiento aumente debido a las operaciones de E/S en paralelo que
se realizan si los archivos se encuentran en discos físicos distintos.
[ LOG ON
NAME = nombreArchivoLógico [ ,...n ],
FILENAME = 'nombreArchivoSO',
SIZE = tamaño [ KB | MB | GB | TB ],
MAXSIZE = { tamañoMáximo [ KB | MB | GB | TB ] | UNLIMITED },
FILEGROWTH = growth_increment [ KB | MB | GB | TB | % ] ]
NombreBaseDatos
Es el nombre de la nueva base de datos, deben ser únicos en un servidor y pueden tener hasta 128
caracteres, a menos que no se especifique ningún nombre lógico para el registro. Si no se especifica
ningún nombre lógico de archivo de registro, SQL Server genera un nombre lógico al anexar un sufijo
a NombreBaseDatos.
ON
Especifica que los archivos de disco utilizados para almacenar la parte de datos (archivos de datos)
se han definido explícitamente. La palabra clave va seguida de una lista delimitada por comas de
elementos que definen los archivos de datos del grupo de archivos principal.
PRIMARY
Especifica que la lista de archivos está asociada al grupo principal. Este grupo contiene todas las
tablas del sistema de base de datos. También contiene todos los objetos no asignados a los grupos
de archivos de usuario. El primer archivo especificado pasa a ser el archivo principal, el cual contiene
el inicio lógico de la base de datos y de las tablas del sistema. Una base de datos sólo puede tener
un archivo principal. Si no se especifica PRIMARY, el primer archivo enumerado en la instrucción
CREATE DATABASE se convierte en el archivo principal.
CONSIDERACIONES
sp_helpdb northwind
Para obtener un informe acerca del espacio utilizado en una base de datos, emplee
sp_spaceused.
Para obtener un informe de los grupos de archivos de una base de datos, utilice
sp_helpfilegroup, y utilice sp_helpfile para obtener el informe de los archivos de la base de
datos.
sp_helpfilegroup
sp_helpfile
¿Quiénes pueden crear bases de datos?
En forma predeterminada podrán hacerlos los usuarios que pertenecen al rol sysadmin y dbcreator.
Los miembros de las funciones fijas de servidor sysadmin y SecurityAdmin pueden conceder
permisos CREATE DATABASE a otros inicios de sesión. Los miembros de las funciones fijas de
servidor sysadmin y dbcreator pueden agregar otros inicios de sesión a la función dbcreator. El
permiso CREATE DATABASE debe concederse explícitamente; no se concede mediante la instrucción
GRANT ALL.
EJEMPLO 1:
sp_helpdb prueba1
EJEMPLO 2:
sp_helpdb Prueba2
EJEMPLO 3
Crear la base de datos Prueba3 especificando un archivo de datos con un tamaño inicial de 15Mb,
un tamaño máximo de 30Mb y un crecimiento de 5Mb., el archivo de registro debe tener un tamaño
inicial de 5MB y uno máximo de 10MB, el crecimiento debe ser de 1MB.
sp_helpdb Prueba3
BITACORAS
Cada base de datos en SQL Server tiene un Transaction Log asociado con ella. El transaction log (en
español bitácora de transacciones) es un componente esencial de SQL Server, el cual la utiliza para
registrar un historial de cada modificación que sufre la base de datos como resultado de las
transacciones. Dicho registro es de vital importancia para mantener la integridad de los datos y
poder deshacer los cambios resultantes de transacciones incompletas ya sea por error del sistema
o por la cancelación por parte de los usuarios.
Durante la operación de la base de datos la escritura a la bitácora tiene prioridad, es decir, todos los
cambios primero se escriben a la bitácora y luego se aplican a la base de datos.
Qué tan frecuentemente cambian los datos almacenados en la base de datos y qué tan sensible
es la organización a la pérdida de información.
Por ejemplo, si la base de datos almacena datos clínicos y la tasa de cambios es bastante alta, es
decir, se agrega y se cambia información constantemente, entonces los respaldos tendrán que
ocurrir con mayor frecuencia que cuando se trata de una base de datos que casi no cambia o cuya
información no es crítica para el negocio. Entre más frecuentes sean los respaldos, mayor protegidos
estaremos contra la pérdida de datos.
Una bitácora puede registrar mucha información acerca de eventos relacionados con el sistema que
la genera los cuales pueden ser:
Fecha y hora.
Host origen.
Usuario.
Actividad realizada.
PARTICIONES:
Investigar:
Ventajas y desventajas de Particionar Tablas e Indices
Como se realizan las particiones en SQL Server
Instrucciones SQL
PARTICIONES (http://msdn.microsoft.com/es-es/library/ms188730.aspx)
Los datos en tablas e índices con particiones se dividen horizontalmente en unidades que pueden
propagarse por más de un grupo de archivos de la base de datos. Las particiones pueden hacer
que las tablas y los índices grandes sean más escalables y fáciles de administrar.
La creación de una tabla o índice con particiones tiene lugar normalmente en cuatro partes:
1. Crear un grupo o grupos de archivos y los archivos correspondientes que contendrán las
particiones especificadas por el esquema de partición.
2. Crear una función de partición que asigna las filas de una tabla o un índice a particiones
según los valores de una columna especificada.
3. Crear un esquema de partición que asigna las particiones de una tabla o índice con
particiones a los nuevos grupos de archivos.
4. Crear o modificar una tabla o un índice y especificar el esquema de partición como
ubicación de almacenamiento.
PERMISOS
La creación de una tabla con particiones requiere el permiso CREATE TABLE en la base de datos y el
permiso ALTER en el esquema en el que se crea la tabla. Crear un índice con particiones requiere el
permiso ALTER en la tabla o vista donde se crea el índice. Crear una tabla o índice con particiones
requiere alguno de los permisos adicionales siguientes:
Permiso ALTER ANY DATASPACE. Este permiso se concede de manera predeterminada a los
miembros del rol fijo de servidor sysadmin y a los roles fijos de base de
datos db_owner y db_ddladmin.
Permiso CONTROL o ALTER en la base de datos en la que se está creando la función de partición y
el esquema de partición.
Permiso CONTROL SERVER o ALTER ANY DATABASE en el servidor de la base de datos en la que se
está creando la función de partición y el esquema de partición.
FUNCION DE PARTICION
Crea una función en la base de datos actual que asigna las filas de una tabla o un índice a particiones
según los valores de una columna especificada. El uso de CREATE PARTITION FUNCTION constituye
el primer paso para la creación de una tabla o un índice con particiones.
partition_function_name
Es el nombre de la función de partición. Los nombres de las funciones de partición deben ser únicos
en la base de datos y ajustarse a las reglas para los identificadores.
input_parameter_type
Es el tipo de datos de la columna utilizada para la partición. Todos los tipos de datos,
excepto text, ntext, image, xml, timestamp, varchar(max),nvarchar(max), varbinary(max), los
tipos de datos de alias o los tipos definidos por el usuario CLR, se pueden utilizar como columnas de
partición.
La columna en sí, conocida como columna de partición, se especifica en la instrucción CREATE TABLE
o CREATE INDEX.
LEFT | RIGHT
Especifica el lado de cada intervalo de valores de límite, derecho o izquierdo, al que
pertenece boundary_value [ ,...n ], cuando Motor de base de datos ordena los valores del intervalo
en orden ascendente de izquierda a derecha. Si no se especifica, el valor predeterminado es LEFT.
EJEMPLOS
En la tabla siguiente se muestra cómo se crearían particiones en una tabla que usa esta función de
partición en la columna de partición col1.
Partición 1 2 3 4
Valores col1 <= 1 col1 > 1 AND col1 <= 100 col1 > 100 AND col1 <=1000 col1 > 1000
En la tabla siguiente se muestra cómo se crearían particiones en una tabla que usa esta función de
partición en la columna de partición col1.
Partición 1 2 3 4
Valores col1 < 1 col1 >= 1 AND col1 < 100 col1 >= 100 AND col1 < 1000 col1 >= 1000
La siguiente función de partición divide una tabla o un índice en 12 particiones, una para cada mes
de un año natural de valores en una columna datetime.
En la tabla siguiente se muestra cómo se crearían particiones en una tabla o un índice que usa esta
función de partición en la columna de partición datecol.
Partición 1 2 ... 11 12
Valores datecol < February datecol >= February 1, datecol >= November 1, col1 >= December
1, 2003 2003 AND datecol< March 2003 AND col1 <December 1, 2003
1, 2003 1, 2003
Partición 1 2 3 4
Valores col1 < EX... col1 >= EX AND col1 < RXE... col1 >= RXE AND col1 < XR... col1 >= XR
EJERCICIO
Creamos los grupos de archivos y los archivos correspondientes que contendrán las particiones
especificadas por el esquema de partición, donde cada archivo queda asociado con un grupo de
archivos.
Creamos la función de partición que asigna las filas de una tabla o un índice a una partición
especifica según los valores de una columna especificada.
Creamos el esquema de partición que asigna las particiones de una tabla o índice con particiones a
los nuevos grupos de archivos.
Revisemos los datos y la partición donde se encuentra cada uno de los registros con la siguiente
instrucción
Crear una tabla particionada que almacene la informacion correspondiente a un detalle de kardex,
para lo cual analice los posibles campos que conformaran dicha tabla, se debera generar una
particion para cada mes del anio, una vez hecho lo anterior genere diferentes inserciones sobre
dicha tabla y verifique que los registros esten almacenados dentro de las particiones definidas por
la funcion de particion la cual debera elaborar para implementar dichas particiones.
Elabore un reporte del ejercicio el cual debera ser entregado al profesor, dicho reporte debera
contener las instrucciones que utilizo para lograr el objetivo del ejercicio, asi tambien debera anexar
las pantallas cuando sea necesario de los resultados de la ejecucion de dichos comandos.