Curso SQL Server Implementing
Contenido
- 1 Configuracion de red
- 2 Seguridad
- 3 Herramientas de trabajo con sql server
- 4 Configuración de los servicios
- 5 Tipos de datos
- 6 Tablas de sistema
- 7 Esquemas
- 8 Creando tablas
Configuracion de red
Protocolos
TDS Tabular data stream, devuelve los datos tabulados SQL Native Access client SNAC (quitando muchas capas de configuracion)
TCP/IP, Named PIpes(utiliza el escribir a un archivo para mandar información a sql server) o Shared Memory (con la
pega de que no se puede tener la aplicacion en otra máquina)
VIA es un protocolo para virtualización que está por extinguir.
Se pueden crear alias para conectarse a un servidor. Estos alias son de forma local. Lo bueno del alias es que
especificas en el alias como te conectas al servidor (np, tcp, etc)
Seguridad
Como recuerdo del otro curso, hay logins (que son los usuarios de servidor) y después cada base de datos tiene otra
lista de usuarios, que hacen mapping con logins de servidor. ASí solo hace falta logarse una vez. También se puede
configurar logins con grupos de windows.
Se puede usar la db de usuarios de sql server o de directorio activo. Si usamos usuarios de sql server por defecto
se heredarán las políticas de seguirdad (password) para estos usaurios de sqlserver, pero se puede salta esta
política con un chckbox.
Grupos especiales de seguridad locales
Existen ciertos grupos de seguridad que se crean cuando instalas SQL Server, para dar permisos a los usaurios que
arrancan los servicios. Podemos ver estos grupos en la gestión de usuarios de la máquina. De esta forma, cuando
instalamos una instancia nueva de sql server se le da permisos a un grupo local de la máquina, por ejemplo, pare el
directorio data donde están los ficheros de base de datos. Después, el usuario que arranca el servicio se mete en
ese grupo y así no hay que tocar los permisos de las carpetas. Hay muchos grupos para diferentes privilegios.
Herramientas de trabajo con sql server
SQL Server management studio es la herramienta principal. Se puede integrar con Source Safe para tener historicos de
scripting. Hay que tener instalado la parte cliente de source safe en el servidor.
También se instala BI Development Sutdio, que se usa para Analysis Services, Integration Services y Reporting
Services.
NOTA: Aunque es sqlserver 2008R2 se usa el visual studio 2008. Esto genera algunos problemas como el que no valen
las plantillas de reporting services de visual studio 2010.
Books Online: para buscar ayuda sobre los comandos.
Configuración de los servicios
Configuration manager
visto antes
SQL SErver services
La instancias por defecto se llama MSSQLSERVER El servicio de sql server agent existe por cada instanacia de sql server. El browser se encarga de gestionar la lista de instancias que hay en el servidor.
Profiler
Para ver inforamción de ejecución del servidor. Para monitorización de ejecución de servidor. Lo bueno de esta
herramienta es que se puede integrar con el performance monitor de windows, dentor del propio profiler, para ver
implicaciones de querys, rendimientos, no solo del sql server sino de la máquina en conjunto.
Tuning Advisor
Da recomendaciones sobre como configurar DB (creación de indices, hacer particionados, etc)
Master Data Servicoes Confiugration Manager
Componente web para administrar modelos de datos.
Reporting service conf manager
configuracion de reporting services
SQL SERver Error and usage reporting
Powershell provider
SQL Server Management Objects (SMO)
Clases para .net para dar soporte de administración de SQL Server. Antes eran clases com pero tenía el problema que
si al usasar la clase moría el proceso moría todo (¿bases de datos tambien?).Con .net solo moriría la máquina
virtual de .net (CLR).
Tipos de datos
Los tipos de datos se aplican a columnas de tablas, a variables, a expresiones y a parámetros. Por optimización es
crítico elegir el tipo de dato correcto para cada caso.
Hay tres conjuntos de tipos de datos:
Sistemas Alias (los denominamos sinónimos) User-defined (personalizados): gerarquicos, espacial, etc que ahora van incorporados pero antes no.
Identity
Es una propiedad que da un valor que está dentro del rango de los números enteros, y que se genera de forma
automática. Para la clave primaria. Se especifica por ejemplo con:
id int NOT NULL IDENTITY(1,1)
el primer 1 es por que numero empieza y el segundo es el incremento
Numeros aproximados
Son los float, para numeros muy grandes o muy pequeños. El típico 1.XXXXE20
Fechas
date datetime2 fecha con hora datetime es con un offset (...)
Identificadores únicos
Los GUID. para generar números únicos en nuestro entorno. Ocupan 128 bit. No se pueden usar con el IDENTITY. Suele
cometerse el error de guardarse como string.
NULL y NOT NULL
No se pueden usar en variables, pero si en columnas o variables. Se puede determinar si una columna admite null.
Datos de tipo carácter
Unicode
Es implementado en sql server con comillas dobles. En unicode los caracteres ocupan dos byte. Cuidado al usar el LEN
para devlver el numero de cararecteres... Se puede usar DATALENGHT.
Cuando definamos tablas, si queremos que sean unicode tendremos que usar nchar,nvarchar,ntext. Si queremos definier
un literal ANSI (heredero de ascii) se ponen con comillas simples 'ejemplo', y si queremos decirle que sea unicode
se definie con N delate n'ejemplo'.
Hay que tener en cuenta que nuestros datos no pueden pasar el dato de una página de datos de sql server que es de
8k, excepto image y text. Asi que nuestros varchar y nvarchar no pueden pasar de 8000 caracteres.
También existe un tipo de datos xml que tampoco tiene límite.
collation
Representa el como se ordenan las cadenas y como se busca. Se establece a nivel de columna de tipo string (varchar,
nvarchar, etc), aunque sepuede especificar a nivel de base de datos de forma por defecto, o también por servidor. Es
importante seleccinar el idioma especifico si no la ñ estará detrás del n si cogo el EEUU estará en otro sitio.
Hay dos tipos de collation, windows y sql. los sql están despareciendo. Cuando definimos el collation le decimos
algunas reglas como por ejemplo si lo queremos Case sensitive y accent sensitive. Si definimos a nivel de servidor
que sea Case Sensitive los nombres de las tablas, por ejemplo, tambien los son.
Conversión de tipos
Importante saber las reglas implícitas. '1'+'2' puede ser '12' o 3. Por eso es mejor siempre funciones de
conversiones de datos cuando se mezclan tipos.
CAST
Para mostrar el valores a otro tipo. CAST(<columna> as VARCHAR(12))
en el books online hay una tabla de posibles conversiones buscando la palabra convert
CONVERT
Parecido al CAST pero de la forma: CONVERT(varchar(12),<columna>). Lo vueno del convert es que puede elgejir el
formato con el que se va a convertir.Por ejemplo para fechas. es el tercer parámetro de convert. el tipo de
conversión que le especificamos en el tercer parámetro depende del tipo de dato al que convertimos. En el books
online da más datos.
Echar un ojo a la tabla de coneversiones implícitas que biene en los books online
Problemas habituales cuando se usan las conversiones implíticitas son los Redondeos, truncamientos, valores fuera de
rango, que se pueden evitar usando las funciones de converisón.
timestamp y rowversion
timestamp, se utiliza para reprensentar cuando cambia un dato. Ahora se usa rowversion. Este último está relacionado
con la concurrencia optimista.
concurrencia optimista es la que presupone que no se va a usar un bloque al mismo tiempo. con optimista es leo,
calculo, bloqueo, escribo, quito bloqueo. En el pesismista se bloquea cuando se lee.
Ejemplo de update cuando es modelo optimista:
UPDATE <TABLA> SET <COLUMAN>=<VALOR> WHERE ID=<N> AND <COLUMNA>=<VALOR ANTERIOR>
Con rowversion esto se hace de forma automática. Solo guarda el rowversion y no todos los datos así notiene que
comparar todo, para saber si se ha modificado la fila mientra estaba calculando los cambios.
Alias data types
Alias de otros tipos. Podemos definier que ProductNumber sea un tipo varchar(20)
Normalizando
Eliminar datos repetidos en tablas separadas NO mezclar distintas entidades en la misma tabla (...)
Claves Primarias
Elegir la clave primaria hay que sopesar el tamaño de la clave y también el nivel de acceso que va a tener. Puede
haber muchas candidatas pero solo puede ser una que se llamará PK primary key y las otras serán AK alternative.
Puede ser con múltiples columnas pero no es aconsejable. La PK no debería cambiar nunca, aunque se puede...
Hay claves naturales, que son las que van en el dato (como el dni) pero hay algunas detipo subrrogado que se
calculan.
Foreign key
Referencias a otras tablas. Solo puede tener valores de la pk de la tabla referenciada o valor nulo. Se crean
restricciones de sistema.No sepueden borrar datos de la tabla padre si hay referencias a esa fila de la tabla padre.
Aunque sepueden programar acciones "en cascada" para borrar hijos de esa fila padre o para poner a null la fk de la
tabla hijo qu eestá relacionada con esa fila padre.
Tablas de sistema
Las tablas de sql server que dan soporte para el resto de tablas. Donde están referenciadas todas las tablas de
usuario. No son visibles, pero si hay vistas de estas tablas que si son visibles. Estas tablas y vistas están en
cada una de las bases de datos.
Esquemas
Un sistema de agrupacion de tablas que reemplaza la antigua agrupación de tablas por usuarios. se sigue usando un
esquema dbo, para compatibilidad con aplicaciones antiguas que siguen usando lo de añadir dbo.<tablename>, pero en
realidad es una estructuración de tablas, para dar permisos a nivel de esquemas.
lo de dbo nos aparece por defecto en nuestras db's porque está en la model, que cuando creamos una db nueva se crea como la model
Todos los objetos que hay dentro de una db menos los usuarios, y los grupos, pertenecen a un esquema.
Cada usuario tiene definido un esquema por defecto. Si con un usuario hago referencia a una tabla, vista, etc, sin
poner el esquema delante del nombre, por defecto usara el que le he definido para ese usuario. Si un objeto al que
hacemos referencia sin el esquema no aparece en nuestro esquema por defecto lo irá a buscar como segunda oportunidad
al esquema dbo.
Para crear esquemas
CREATE SCHEMA <NOMBRE>
AUTHORIZATION <user>;
Para mover un objeto a otro esquema se haría con:
ALTER <OBJETO> <NOMBRE> TRANSFER <nuevo_esquema>;
Creando tablas
CREATE TABLE <nombre> (<col> ...