Recuperar Base de Datos sin fichero ldf y con el log corrupto en #SQLServer

La pregunta arriba indicada me la hizo Ricardo Chavez por Facebook. Como todavía no se me habia presentado no he podido hacer el artículo respectivo.

Yo,  al ser MVP, le oriente en que paginas podía encontrar la solución simplemente.

A cambio le pedí que me hiciera un word con la resolucióon y que el texto lo publicaría en mi blog Aquí va como resolvio su problema.

Captura

Hoy nos encontramos con un servidor de base de datos que se quemó la tarjeta madre y no teníamos respaldo de la base de datos por lo que debíamos recuperarlas por los archivos .mdf pero el log estaba corrupto por lo que arrojo en primera instancia el siguiente error después de pasar el siguiente script.

CREATE DATABASE MyDatabase ON (FILENAME = 'E:\Database\MyDatabase.mdf')

FOR ATTACH

Captura

Seguidamente tratamos de adjuntar la base de datos reconstruyendo el log con el script

CREATE DATABASE MyDatabase ON (FILENAME = 'E:\Database\MyDatabase.mdf')

FOR ATTACH_REBUILD_LOG

Pero nos dio el siguiente error

Captura

La solución fue la siguiente:

1-. Crear base de datos desde el Management Studio.

2-. Pasarla a estado de emergencia.

ALTER DATABASE BBDD SET EMERGENCY

3-. Para los servicios de SQL

4-. Copiar y pegar el archivo .mdf en la carpeta data de la instancia correspondiente (Reemplazar el que se creó por el que tenemos originalmente).

5-. Inicial los servicios SQL

6-. Ponemos la base de datos como Single User

ALTER DATABASE BBDD SET SINGLE_USER

7-. Hacemos un CHECKDB

DBCC CHECKDB (BBDD, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS

8-. Dejamos la base de dato BBDD como multiusuario y accesible

ALTER DATABASE BBDD SET MULTI_USER

Bueno, espero que os valga esta solución cundo se os presente el caso.

Y como no,invitaros a  pasar por el grupo de facebook:

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

Captura

y os ayudaré a resolver sus dudas u a orientars como hacerlo. No hacer los deberes por ti

 

Encender, Apagar, Reiniciar Maquinas Virtuales con #Azure Resource Manager de una forma automatica

A veces no es necesario encender todas las maquinas de un mismo grupo de recursos. Solo queremos una

Para eso me ingeniado un script en Powershell.

Captura

Este es el resultado. Como lo hacemos ???

Captura

En este primer cuadro elegimos el Grupo de Recursos.

Nos saldrá un segundo cuadro igual a continuación, pero si os fijais en el nombre del cuadro pone “Seleccionar maquina“.

Tanto el el primero como en el segundo tenemos aparece u titulo diferente, Tenerlo en cuenta y que es la misma pantallas para los 3 procesos, aunque seguramente cuando lo suba a github ponga otro texto.

Captura

Y si queremos ver que maquinas tenemos encendidas y apagadas en cualquier momento, podemos utilizar el comando del pantallazo.

Todo esto ira al github en breve.

Mostrar histórico de Copia de Seguridad en #SQLServer

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 de #SQLServer

 

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.

Nuestro plan de recuperación básico ante desastres en #SQLServer

Como dice la Wikipedia: “es un proceso de recuperación que cubre los datos, el hardware y el software crítico, para que un negocio pueda comenzar de nuevo sus operaciones en caso de un desastre natural o causado por humanos. Esto también debería incluir proyectos para enfrentarse a la pérdida inesperada o repentina de personal clave, aunque esto no sea cubierto en este artículo, el propósito es la protección de datos.”

Como podemos prevenirnos ante esos desastres:

  • Hace 2 o mas backups  con destinos diferentes.
  • Que tenga la información suficiente para una posible recuperacion
  • SAI’s
  • Antivirus, Firewall,

Es decir, todo esto se basa en recuperar la capacidad operativa de la empresa. En San Google puedes encontrar mucha información al respecto.

En este blog n es la primera vez que hablamos de ello:

Estrategías de Backup en #SQLServer y lo que no es SQL Server

Como planificar una estrategia de #Backup en #SQLServer: Tipos de Backups

Como planificar una estrategia de #Backup en #SQLServer: Cuando hacerlos

Pues vamos a ponerlo en práctica.

Vamos a hacer un backup tanto a un disco duro en on-premises, que tambien puede sestar en otra ubicacin de nuestra red, como´a un blob de Azure.

Vamos a hacerlo como si fuera la primera vez. Lo primero  vemos si hay credencial para Azure.

Captura

Y ahora vamos con el backup

Captura

Como vemos, la parte de la credencial no va a actuar.

El backup se realiza en 2 ubicaciones on premises, aunque una esta en comentarios.

Y por último, en un blob de Azure. Si no tenemos cuenta Azure, nos valdría la anterior y en 2 sitios.

Azure tiene productos mejores en cuanto a temas de backup que lo veremos mas adelante.

Creación de una base de datos de #SQLAzure con SSMS

Primero hemos visto  crear por Azure Resource Manager el Servidor de SQL Azure y bbdd..

Ahora vamos a crear una base de datos en ese servidor con SSMS.

Sin título

Y al dar nueva base de datos

Captura

Le adaptamos y lo lanzamos …

Captura

MAXSIZE = Maximo tamañode la base de datos.

EDITION: Especifica el nivel de servicio de la base de datos. Los valores disponibles: ‘básica’, ‘estándar’, y ‘premium’.

SERVICE_OBJECTIVE:   Especifica el nivel de rendimiento.

Puede ver más:

https://azure.microsoft.com/es-es/documentation/articles/sql-database-service-tiers/

Captura

Vemos que se ha creado en SSMS.

Captura

Y en el portal de Azure aparece. Ahora toca Adjuntar una tablas que lo tengo como comandos.

Vamos al lio.

Otra forma de adjuntar base de datos de #SQLServer

En algunas ocaciones nos darán un fichero .mdf y .log.

Ya hemos visto como adjuntar con SSMS.  Ahora toca con T-SQL.

Para ello he buscado una base de datos que tuvieran los 2 ficheros, pero solo he encontrado la de AdventureWorks versión 2012.

Captura

Ire pasando más script al proyecto de Github. Ahora podeis compartir este artículo y los demás en vuestras redes sociales.