Saltar al contenido

Como DBA nos tenemos que encargar de la seguridad de nuestras Bases de datos.

Un ejemplo puede ser que la cuenta de usuario invitado este habilitada.

La cuenta de usuario invitado permite a cualquier persona sin un acceso de inicio de sesión relacionado con SQL acceder a la base de datos.

Para quitar todos los permisos simplemente ....

Vamos a la BD y ....

revoke connect to guest;

Así de sencillo.

No olvideis de compartir este y los casi 1000 artículos de este vuestro blog en vuestras redes sociales

Como buen DBA tenemos que estar al loro de esto.

Cuando gestionamos una gran cantidad de servidores SQL y no queremos desperdiciar el espacio libre, es decir, queremos controlar el espacio del disco del servidor SQL Server para que no nos den susto podemos hacerlo de varias formas.

Para gustos colores ....

 

Ya lo hemos visto con sys.sysprocesses en:

Quien ha estado en nuestras base de datos en #SQLServer (1)

Ahora podemos ver algo parecido con sys.dm_exec_sessions.

SELECT login_name Login ,COUNT(session_id) AS Sesiones
FROM sys.dm_exec_sessions
GROUP BY login_name;

Aquí vemos números de sesiones.que tiene cada usuario

Si queremos ver todas

SELECT Session_id Sesion, status Estado, login_time Inicio, login_name Login, host_name Equipo, program_name Programa
FROM sys.dm_exec_sessions
ORDER BY login_time desc

Las que se están ejecutando

SELECT Session_id Sesion, status Estado, login_time Inicio, login_name Login, host_name Equipo, program_name Programa
FROM sys.dm_exec_sessions
where status like '%Running%'
ORDER BY login_time desc

o por usuario

SELECT Session_id Sesion, status Estado, login_time Inicio, login_name Login, host_name Equipo, program_name Programa
FROM sys.dm_exec_sessions
where login_name like '%juankar%'
ORDER BY login_time desc

Muchas veces queremos saber quien ha estado en nuestra base de datos para saber , por ejemplo, quien ha metido la zarpa.

Una de las forma de verlo es con sys.sysprocesses.

SELECT *
FROM sys.sysprocesses

Ahora vamos a ver  que usuario y  bases de datos estan relacionados

SELECT db_name(dbid) as BBDD, loginame as Login
FROM sys.sysprocesses
WHERE dbid > 0
GROUP BY dbid, loginame

Ahora vaos a ordenador por usuario y fecha ultima de que se ha realizado una acción

SELECT db_name(dbid) as BBDD, dbid as Conexion, loginame as Login, login_time Entrada, last_batch Ultima_Accion
FROM sys.sysprocesses
ORDER BY login ASC,last_batch DESC

Y por un usuario concreto y que ha tocado. Ya veremos como hacerlo de otra formas 😉

Vamos a hacer un pequeño inventario de lo que tenemos en una bbdd

captura

Dos formas de ver las BBDD que tenemos, con las de sistemas  las propias.

capturaTipo de fichero, ubicacion y lo que ocupa

captura

Las tablas

captura

Y vistas, procedimientos, .....  que con sysobjects es una maravilla y que ya veremos en el webinar de Joins que estoy preparando.

20161029

Cualquier duda: https://www.facebook.com/groups/juankartips/

Os espero

Este webinar he tenido que cambiarlo de fecha por varios imprevistos, pero ya esta con fecha.

Captura

En este webinar hablare de  lo que se llamaríamos culturilla informática de bases de datos. Habrá demos interesantes.

No es un Curso Oficial.

Intentaré que sea por skype y se grabe. El primero tuve problemas  y no se grabo del todo bien.

La hora y día de la semana lo pondré en mi grupo de facebook.

Captura

https://www.facebook.com/groups/juankartips/

Me podéis localizar por mi perfil de linkedin:

https://es.linkedin.com/in/carlosgilaranz

O en mi twitter:

https://twitter.com/_Juankar_

Os espero  ….

 

Llego el día.

Voy a preparar una serie de webinar en directo de SQL Server. No será un Curso Oficial.

El primero será:

Captura

Intentaré que sea por skype y se grabe. Pero ante la falta de información de cuantos os vais a apuntar, si aguantará el sistema, etc etc ... vamos a hacer una prueba de concepto mañana dia 9 de Julio a las 18:30 hora de E.spaña.

El curso empezaría el 16. Irá desde el cero más absoluto. El link de la reunión se pondrá en los siguiente grupo de facebook:

Captura

https://www.facebook.com/groups/juankartips/

En mi perfil de linkedin:

https://es.linkedin.com/in/carlosgilaranz

Y en mi twitter:

https://twitter.com/_Juankar_

Os espero mañana ....

Una de las tareas que hacemos mucho es mandar procesos por la noche.

A la mañana siguiente no sabemos contestar a la clásica pregunta de ¿Cuanto ha tardado?

Yo lo hago con este sencillo script:

Captura

Y para finalizar:

Captura

Y nos daría el siguiente reporte:

Captura

Espero que s haya ayudado en las tareas de un DBA o similar.

 

Una de las funciones del DBA es saber que copias de seguridad tenemos para prevenir que nos pillen sin un Backup reciente, por no decir de hoy mismo.

Lo podemos hacer:

Captura

Este código estaría bien, pero no os indica todas las copias de seguridad que tenemos.

La base de datos msdb es utilizada por SQL Server para guardar historiales. En este caso vamos usar los de  backup.

Captura

Veis que nos guarda los ultimos backups (he hecho varios para que lo veais). Ahora sería la hora de depurar y dejar lo del ultimo mes o el criterio que se quiera tomar. Ire subiendo estos códigso a github.

 

La base de datos  MSDB es una base de datos muy importante en el sistema de Microsoft SQL.

La base de datos msdb se utiliza principalmente por el Agente SQL Server para almacenar las actividades del sistema como los jobs del servidor SQL,  correo, planes de mantenimiento,  usuario y le base de datos de la historia de copia de seguridad, etc .. Al igual que las bases de datos de usuario, tenemos que mantener y copia de seguridad esta base de datos para el correcto funcionamiento de los componentes del Agente SQL Server.

Es una buena práctica tener una copia de seguridad periódica de esta base de datos.

Captura

En unos proximos articulos veremos como funciona y que informacion podemos sacar. Importante que la manejen los DBA.

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.

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 ..