Este documento describe los pasos para crear una base de datos en SQL Server, incluyendo la creación de usuarios y roles, la asignación de esquemas, y la opción de bases de datos independientes. Se explican conceptos como archivos de datos, archivos de registro, grupos de archivos y la importancia de su configuración para el rendimiento. También se proporcionan recomendaciones sobre la distribución óptima de datos.
2. josealopezpastor@gmail.com
649.74.94.18
Podemos crear una BBDD desde el asistente Recordar
que tenemos un asistente para todo
O podemos crearla mediante una instrucción SQL.
Vamos a comenzar por el asistente. Hacemos click con el
botón derecho en Bases de Datos – Nueva base de datos
Creación de una base de datos
3. josealopezpastor@gmail.com
649.74.94.18
Repasemos los campos del asistente:
-El nombre de la BBDD
-El propietario de la BBDD. El usuario que crea la base
de datos se convierte en su propietario.
-Pueden crearse hasta 32.767 bases de datos en una
instancia de SQL Server.
-Archivos: vemos que inicialmente especifica 2 por
defecto.
-Podemos cambiar la ruta de los archivos
-Podemos cambiar el nombre de los archivos
-Podemos limitar el tamaño de los archivos y hacer que
no crezcan más de un tamaño
Creación de una base de datos
4. josealopezpastor@gmail.com
649.74.94.18
Solamente un archivo de datos principal (*.mdf). Estos
archivos contienen la información de inicio de la base de
datos. Se utilizan también para almacenar datos
Cada archivo es utilizado por una base de datos. No podemos
tener varias BBDD en el mismo archivo
Creación de una base de datos
5. josealopezpastor@gmail.com
649.74.94.18
Podemos hacer que nuestros datos estén en más de un
archivo (*.ndf). Algunas bases de datos pueden ser muy
grandes y necesitar varios archivos de datos
secundarios o utilizar archivos secundarios en unidades
de disco distintas, de modo que los datos estén
distribuidos en varios discos.
Creación de una base de datos
6. josealopezpastor@gmail.com
649.74.94.18
Podemos indicar el tamaño de nuestro archivo de log
(*.ldf). Estos archivos contienen la información de
registro que se utiliza para recuperar la base de datos.
Cada base de datos debe tener al menos un archivo de
registro de transacciones, aunque puede tener más de
uno.
Creación de una base de datos
7. josealopezpastor@gmail.com
649.74.94.18
Lo habitual en BBDD pequeñas y medianas es un
fichero de datos y un fichero de Log.
El tamaño del fichero del Log depende del espacio que
tengamos.
Pero se pueden separar los datos en más de un fichero
con lo que se aumentará el rendimiento.
Esto se hace empleando archivos secundarios
Cuando se crea la tabla se especifican los archivos
secundarios en los que queremos se almacenen los
datos
Si se quiere aumentar el rendimiento se puede emplear
una unidad de disco distinta para cada archivo
secundario
Creación de una base de datos
8. josealopezpastor@gmail.com
649.74.94.18
Siguiendo con el ejemplo de librería.
-Puedo asignar la tabla Libros a un fichero
-La tabla Editoriales a otro
-La tabla Librerías a otro
-Y la tabla pedidos a otro distinto
De este modo tengo en varios ficheros cada una de las
tablas
Pero lo interesante son los grupos de ficheros….
Creación de una base de datos
9. josealopezpastor@gmail.com
649.74.94.18
Al insertar filas sobre una tabla ubicada sobre un Grupo
de Ficheros con múltiples Ficheros, las filas se van
repartiendo entre los distintos Ficheros
proporcionalmente al espacio libre existente en cada uno
de estos.
Los grupos de archivos utilizan una estrategia de relleno
proporcional entre todos los archivos de cada grupo de
archivos. A medida que se escriben datos en el grupo de
archivos, SQL Server Database Engine (Motor de base
de datos de SQL Server) escribe una cantidad
proporcional al espacio disponible del archivo en cada
archivo del grupo, en lugar de escribir todos los datos en
el primer archivo hasta que esté completo.
Creación de una base de datos
10. josealopezpastor@gmail.com
649.74.94.18
Como se crea un grupo de archivos??
-Cuando creamos una tabla le asignamos un grupo de
archivos, no solo un archivo secundario
-Si cada uno de los archivos del grupo lo metemos en
tantos sistemas de archivos distintos como CPU
tenemos, estamos optimizando la velocidad de
escritura/lectura de los datos.
Creación de una base de datos
11. josealopezpastor@gmail.com
649.74.94.18
Recomendaciones de Microsoft:
•La mayor parte de las bases de datos funcionarán correctamente
con un solo archivo de datos y un solo archivo de registro de
transacciones.
•Para maximizar el rendimiento, cree archivos o grupos de archivos
en tantos discos físicos disponibles como sea posible y distribuya en
grupos de archivos distintos los objetos que compitan de forma
intensa por el espacio.
•Utilice grupos de archivos para permitir la colocación de los objetos
en determinados discos físicos.
•Disponga en grupos de archivos distintos las diferentes tablas que
se utilicen en las mismas consultas de combinación. De ese modo, el
rendimiento mejorará debido a la búsqueda de datos combinados
que realizan las operaciones de E/S en paralelo en los discos.
Creación de una base de datos
12. josealopezpastor@gmail.com
649.74.94.18
Recomendaciones de Microsoft:
Distribuya en grupos de archivos distintos las tablas de acceso
frecuente y los índices no agrupados que pertenezcan a esas tablas.
De ese modo, el rendimiento aumentará debido a las operaciones de
E/S en paralelo que se realizan si los archivos se encuentran en
discos físicos distintos.
No coloque el archivo o archivos de registro de transacciones en
el mismo disco físico con los demás archivos y grupos de archivos
Documentación adicional:
https://msdn.microsoft.com/es-es/library/ms189563(v=sql.110).aspx
http://blog.mclaughlinsoftware.com/2012/09/16/setup-sql-server-schema/
http://blog.sqlauthority.com/2009/09/07/sql-server-importance-of-database-
schemas-in-sql-server/
http://www.guillesql.es/Articulos/SQLServerFAQ_Propietario_Esquema_Owne
r.asp
Creación de una base de datos
13. josealopezpastor@gmail.com
649.74.94.18
Ya tenemos creada nuestra BBDD creada
Veremos que se han creado unas tablas, vistas y
procedimientos almacenados que se han creado por
defecto.
Orden de intercalación por defecto
Funciones de seguridad, usuarios, también por defecto.
Entre estos usuarios el propietario o dbo (data base
owner). Es el creador de la BBDD
Creación de una base de datos
14. josealopezpastor@gmail.com
649.74.94.18
El propietario es el creador de la BBDD
Es posible que necesitemos que otras personas accedan
Podemos ver los usuarios que tienen permisos sobre una
base de datos en Seguridad - Usuarios
Usuarios
16. josealopezpastor@gmail.com
649.74.94.18
Solamente podré seleccionar usuarios que han sido
previamente introducidos en la carpeta de inicios de
sesión de SQL Server Management Studio.
Se puede ver fácilmente su funcionamiento introduciendo
un usuario en la carpeta de inicio de sesión y veremos
como está disponible para seleccionarlo mientras que si
extraemos el usuario de la carpeta de inicio de sesión,
éste no está disponible para agregarle permisos a la
BBDD.
Pensar además en los grupos de usuarios de Active
Directory, tanto para este caso como para el siguiente.
Usuarios
17. josealopezpastor@gmail.com
649.74.94.18
Si seleccionamos en el desplegable del tipo de usuario
un Usuario de Windows, podremos seleccionar entonces
a todos los usuarios del dominio pero tendremos que
vincularlo a un usuario con privilegios de inicio de sesión.
Usuarios
18. josealopezpastor@gmail.com
649.74.94.18
Vamos a ver las diferencias entre SCHEMA y ROL.
ROL a nivel base de datos.
Para administrar con facilidad los permisos en las bases
de datos, SQL Server proporciona varios roles, que son
las entidades de seguridad que agrupan a otras
entidades de seguridad. Son como los grupos del
sistema operativo Microsoft Windows (Active Directory).
Los roles de nivel de base de datos se aplican a toda la
base de datos en lo que respecta a su ámbito de
permisos.
https://msdn.microsoft.com/es-es/library/ms189121(v=sql.110).aspx
Usuarios
19. josealopezpastor@gmail.com
649.74.94.18
ROL a nivel base de datos.
Existen dos tipos de roles de nivel de base de datos en
SQL Server: los roles fijos de base de datos, que están
predefinidos en la base de datos, y los roles flexibles de
base de datos, que pueden crearse.
Los roles fijos de base de datos se definen en el nivel de
base de datos y existen en cada una de ellas.
Los miembros de los roles de base de datos db_owner y
db_securityadmin pueden administrar la pertenencia a
roles fijos de base de datos.
Sin embargo, solo los miembros del rol de base de datos
db_owner pueden agregar miembros al rol fijo de base
de datos db_owner.
Usuarios
20. josealopezpastor@gmail.com
649.74.94.18
ROL a nivel base de datos.
Roles fijos:
db_owner Pueden realizar todas las actividades de configuración y mantenimiento en la
base de datos y también pueden eliminar la base de datos.
db_securityadmin Modificar la pertenencia a roles y administrar permisos. Si se agregan
entidades de seguridad a este rol, podría habilitarse un aumento de
privilegios no deseado.
db_accessadmin Agregar o quitar el acceso a la base de datos para inicios de sesión de
Windows, grupos de Windows e inicios de sesión de SQL Server.
db_backupoperator Pueden crear copias de seguridad de la base de datos.
db_ddladmin Ejecutar cualquier comando del lenguaje de definición de datos (DDL) en una
base de datos.
db_datawriter Agregar, eliminar o cambiar datos en todas las tablas de usuario.
db_datareader Leer todos los datos de todas las tablas de usuario.
db_denydatawriter NO pueden agregar, modificar ni eliminar datos de tablas de usuario de una
base de datos.
db_denydatareader NO pueden leer datos de las tablas de usuario dentro de una base de datos.
Usuarios
22. josealopezpastor@gmail.com
649.74.94.18
SCHEMA.
Antes de SQL Server 2005. Cualquier objeto tiene que
tener un Owner. Ya sea una tabla, procedimiento
almacenado, vista, etc. Hemos visto antes en la creación
de una tabla que el creador de una tabla pasa a ser el
owner de la tabla.
Por ello que se suelen escribir las tablas dbo.Nombre
Que pasa si alguien que ha creado elementos abandona
la compañía y por lo tanto se tiene que borrar su cuenta
de usuario?? Se tienen que pasar los owners
http://www.sqlteam.com/article/understanding-the-difference-between-owners-and-sc
Usuarios
23. josealopezpastor@gmail.com
649.74.94.18
SCHEMA. Se tiene que entender como un contenedor de
recursos.
Habitualmente en diseño se crean las tablas con el
nombre del departamento la funcionalidad que tienen.
Puede parecer lo mismo que el dbo
Pero no!
Cada esquema tiene un owner pero no está
asociado a un nombre. Por lo tanto si se tiene
que borrar la cuenta que es owner de un
esquema, ahora es posible sin tener que
realizar operaciones adicionales.
Por otro lado, sino queremos una gestión de
este tipo, siempre tenemos el esquema dbo
Usuarios
25. josealopezpastor@gmail.com
649.74.94.18
SCHEMA.
Para cambiar la pertenencia de una tabla
a un schema determinado
ALTER SCHEMA schema_destino
TRANSFER dbo.nombre_tabla
Para cambiar el schema al que pertenece
la tabla desde el asistente tenemos que
usar la ventana propiedades:
Usuarios
27. josealopezpastor@gmail.com
649.74.94.18
Cuando se crea una BBDD se crean ciertas
dependencias del servidor/instancia: cuentas de usuario,
configuración de intercalación, etc.
Conlleva ciertas dificultades a la hora trasladar una base
de datos. Por ejemplo de desarrollo a producción.
NOVEDAD en SQL Server 2012 Base de datos
independientes
En la práctica tenemos BBDD parcialmente
independientes, cuya estructura, configuración y usuarios
se almacenan en la propia BBDD y no en bases de datos
maestros o archivos de configuración del servidor.
Bases de datos independientes
30. josealopezpastor@gmail.com
649.74.94.18
En mi caso, al crear una base de datos de este tipo me
salta un error.
sp_configure 'contained database authentication', 1;
GO
RECONFIGURE;
GO
Se ha cambiado la opción de configuración 'contained
database authentication' de 0 a 1. Ejecute la instrucción
RECONFIGURE para instalar.
Bases de datos independientes
31. josealopezpastor@gmail.com
649.74.94.18
Lo habitual ahora es crear los usuarios del tipo Usuario
SQL con contraseña dado que el usuario y las claves se
almacenan en la misma base de datos
Este tipo de usuario no se puede crear en las bases de
datos que no son idependientes
Bases de datos independientes
32. josealopezpastor@gmail.com
649.74.94.18
Se puede importar una BBDD desde los archivos mdf.
Botón derecho en Bases de Datos Adjuntar
Tenemos que seleccionar el archivo mdf
Para copiar archivos mdf se tienen que parar los servicios
para que los ficheros dejen de estar en uso
Importar BBDD desde archivos