Saltar al contenido

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

 

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.

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.

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.

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.

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.

 

Este es el proceso contrario.

En este primer artículo vamos a restaurarlo en otra ubicación distinta. Es una forma de mover la base de datos. Por ejemplo por unas labores de mantenimiento ya que tenemos un servidor único  de SQLServer.

Captura

Este sería el proceso de backup. Como hemos dicho que vamos a mover la ubicación, borramos la base de datos.

Captura

Verificamos que lo ha restaurado donde yo le decia.

Captura

El script de este artículo esta en https://github.com/mundosqles/TSQL

Como siempre, podéis compartir este artículo en vuestras Redes Sociales.

Hacer backup frecuentemente nos asegura que no perdamos todos lo datos. Vamos a ver en este artículo hacer una coía de Seguridad total de la base de datos.

Primero tenemos que añadir el tema del almacenamiento en nuestro SSMS

Captura

Captura

Y ahora, para hacer un backup a un blob de Azure:

  • Primero una Credencial
  • Comando Backup

Tal que asi.

Captura

Y nos quedaria:

Captura

Donde sacamos los datos:

Captura

Identity es el nombre del almacenamiento

Captura

Secret son las claves de acceso.

El código del backup: https://github.com/mundosqles/TSQL

Ya veremos como lo restauamos en un siguiente artículo ... Ahora a compartir en Redes Sociales os toca 😉

Lo primero montar el almacenamiento en Azure.

Captura

Captura

Ahora pillamos las claves

Captura

Y en nuestro ssms:

Captura

Los códigos que voy subiendo estan en https://github.com/mundosqles/TSQL

Los pantallazos son del portal nuevo.

Una credencial de SQL Server es un objeto que se usa para almacenar la información de autenticación necesaria para conectarse a un recurso fuera de SQL Server.

En este caso vamos a conectarnos al blob que tengamos.

Captura

Para obtener los datos nos vamos a Almacenamiento en Azure y damos.

Captura

Captura

Y

Captura

Ya estaría. Ahora el siguiente paso, crear una base de datos en ese blob.

Los pantallazos con del portal clásico.

Con el fin de compartir con la comunidad los códigos que tenia en Onedrive que he estado utilizando en este blog, ahora también en Github.

Empezamos por una simple Creación base de datos, que se puede utilizar en cualquiera de vuestros proyectos.

Captura

https://github.com/mundosqles/TSQL

Aunque no manejo aun mucho Github, ire subiendo poco a pco.

Si alguien quiere colaborar,lo podeis hacer poniendo dentro del código vuestro nombre.