Monitorizar el estado de nuestras bases de datos en #SQLServer

Unas de las tareas del DBA es monitorizar las bases de datos.

Puede ser que las aplicaciones que necesiten funcionar no funcionen por que la bbdd no funcione.

Es muy fácil de verlo.

/* Estado de bbdd */
SELECT DATABASEPROPERTYEX('AdventureWorks2014', 'Status') AdventureWorks2014 ,
DATABASEPROPERTYEX('TSQL2012', 'Status') TSQL2012

Captura

Aqui solo vemos 2, aunque podemos mmirar mas.

Sus respectivos estados o valores son:

  • ONLINE = La base de datos está disponible para consultas.
  • OFFLINE = La base de datos está explícitamente sin conexión.
  • RESTORING = La base de datos se está restaurando.
  • RECOVERING = La base de datos se está recuperando y aún no está lista para consultas.
  • SUSPECT = La base de datos no se recuperó.
  • EMERGENCY = La base de datos está en un estado de emergencia de solo lectura. El acceso está restringido a los miembros del rol sysadmin

Es importante siempre en Estado ONline, ya veremos que hacemos cuando nos pasa alguno de los otros.

Tenerlo en cuenta.

Espero que os haya gustado, visiteis nuestro grupo de facebook, mi twitter.

Que juego de caracteres (collation) utiliza nuestras base de datos de #SQLServer

Dijimos que  Collation es el juego de caracteres o letras asociadas a una base de datos SQL Server.

Unos de los problemas o errores que he visto que cuando trasladamos base de datos de servidores puede que este no sea el mismo y nos de problemas.

También nos puede servir como auditoría, …..

Para saber esto …

/* Collation usado por las bbdd por una instancia SQL Server */

SELECT NAME Base_de_Datos, COLLATION_NAME Collation
FROM sys.Databases
ORDER BY DATABASE_ID ASC
GO

Y aquí el pantallazo:

Captura

Así de sencillo ..

Los campos varchar(max) y nvarchar(max) en #SQLServer

Hace tiempo me preguntaron la diferencia entre estos 2 tipos de campos. Existe diferencias si vas leyendo blogs, foros y …..

Estos 2 campos sustituye al campo de  tipo Text que Microsoft recomienda dejar de usar ya que posiblemente en alguna versión dejará de existir.

En la versión 2014 existe aún.

Captura

Los campos varchar(max)  y nvarchar(max)  hay que decir que son de longitud variable excepto que pongas un número dentro de los ().

Nvarchar te permite ingresar caracteres UNICODE, es decir, puedes meter casi todos los caracteres de cualquier idioma.

Varchar tiene una máxima longitud de  8000 caracteres y Nvarchar 4000.

El almacenamiento en disco será el doble en Nvarchar que Varchar.

images

Ahora te toca a ti elegir cual es el mejor. Por cual te decantas ????

Montar claves primarias, foráneas y relaciones a una bbdd de #SQLServer que no tiene

Esto me sirve de repaso para mi trabajo y  la certificación, y de paso, vemos como se programa en t-sql poniendo clave primaria, foránea y relacionamos tablas

Buenos, vamos a presentar el escenario.

Captura

Una clave primaria es identificar cada registro de forma única y  no se pueden repetir

Para saber las claves primarias

/* clave primaria */
SELECT i1.TABLE_NAME TABLA,
i2.COLUMN_NAME CLAVE_PRIMARIA
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2 ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME
WHERE i1.CONSTRAINT_TYPE = 'PRIMARY KEY'

La clave o claves foráneas de una tabla hacen referencia a registros de otra tabla, formando entre las tablas una relación.

Para ver la foránea y su relación con otra tabla

/* Claves foraneas y relaciones tablas */
SELECT fk.name 'Clave_Foranea', tp.name 'Tabla_Padre', cp.name 'Campo_Padre', tr.name 'Tabla_Enlazada', cr.name 'Campo_Indice'
FROM sys.foreign_keys fk
INNER JOIN sys.tables tp ON fk.parent_object_id = tp.object_id
INNER JOIN sys.tables tr ON fk.referenced_object_id = tr.object_id
INNER JOIN sys.foreign_key_columns fkc ON fkc.constraint_object_id = fk.object_id
INNER JOIN sys.columns cp ON fkc.parent_column_id = cp.column_id AND fkc.parent_object_id = cp.object_id
INNER JOIN sys.columns cr ON fkc.referenced_column_id = cr.column_id AND fkc.referenced_object_id = cr.object_id
ORDER BY tp.name, cp.column_id

Vamos a hacerlo en 3 o 4  artículos diferentes para que se vea bien y después trabajaremos con los alias.

Otra forma de sacar información de nuestro entorno de #SQLServer

Ayer la comente en el tema de backup y después de revisarla es unas de las opciones donde podemos sacar mucha información de nuestro sistema SQL Server, variar las opciones par que cambien, etc….

Captura1

Nos vamos a facetas.

Captura

Y tenemos mas opciones

Captura

Ya sabéis donde ir para verlo. Nos puede venir para distintas tareas de dba, informes, auditorias, …..muchas de estas opciones las hemos visto sacar por T-SQL en este blog

Una de las alternativas de pasar tu base de datos de #SQLserver a #SQLAzure, a otro #SQLServer,….

Un artículo sencillo y para empezar la semana

Captura

Podemos hacerle una copíaa de seguridad en SQL Server y después restaurar en SQL Azure, u otro Server.

También lo podemos hacer así.

Nos situaos en el Servidor, equipo en el que tenemos la base de datos de #sql Server.

Hacemos lo de este artículo.

Exporta las estructuras y datos en formato insert con T-SQL en #SQLServer

Lo tenemos todo en ficheros .sql, es decir la estructura y los datos.

Ahora nos conectamos al Server SQL Azure u otro server SQL Server cn el SSMS  y desplegar o abrimos los ficheros .sql, Primero lo de creación de fablas y después datos.

Captura

Sencillo. Ahora toca probarlo vosotros y compartirlo en vuestras Redes Sociales.