Herramientas que Uso

El objetivo de este post es compartir las herramientas que uso en mi día a día, así como tratar de mantener una lista actualizada de las mismas. Es por esta razón que esta lista de seguro ira cambiando y creciendo con el paso del tiempo.

Desarrollo:

Visual Studio Enterprise 2015: No hay mucho que decir al respecto simplemente el mejor IDE. O Visual Studio Comunity 2015 (es gratis). Tengo instaladas varias extensiones sin las cuales no podría vivir, pero eso es motivo de un nuevo post.

Visual Studio Code: Mi editor de texto predeterminado, ademas puedes programar en el realmente genial. Visual Studio 2015 no soporta javascript ES7 es por eso que necesitaba un editor que si lo haga (por comodidad – odio ver todas esas lineas debajo de mi codigo por que el ide cree que algo anda mal).

Git for Windows: ¿Vamos quien no usa Git estos días?

SmartGit: a mi parecer el UI mas completo para Git.

SQL Server 2014: La version estable mas reciente de SQL Server.

Node JS: ¿Quién no sabe lo que es? Principalmente para poder hacer desarrollo de front end y poder instalar jspm, bower y webpack. Pero algunas veces tambien para probar una que otra marcianada con JS.

Fiddler: para interceptar trafico http y tcp. (Llamadas a servicios web desde el servidor o desde desktop apps).

Productividad:

Kanban Flow: La mejor herramienta para poder organizar mi semana, dia y medir mi productividad.

Brain.FM: Sitio web que produce música (¿ondas sonoras?) para ayudar a concentrarse o relajarse.

Restaurando bases de datos en LocalDB

Acabo de empezar un nuevo proyecto como freelance y un miembro del equipo me dejo copiado un backup de la base de datos del proyecto en el pen drive. Son case las 2 a.m. en Perú y estoy aprovechando que mis hijos duermen y que una ves mas me invadió el insomnio para poder avanzar con el proyecto. Lamentablemente he re formateado mi buena Dell Inspirion con la llegada de Windows 8.1 y por no querer esperar la descarga de unos cuantos gigabytes no le instale SQL Server 2012,(ademas últimamente estoy usando bases de datos NoSql como RavenDB). Pero tengo Visual Studio 2013 con LocalDB así que tuve la idea de restaurar la base de datos allí. 

Con lo que me tope fue con una serie de errores que terminaron por consumir mucho de mi tiempo, pero finalmente revisando un poco de documentación y con un poco de ingenio, en casi 30 minutos pude obtener la base de datos, a continuación dejo los diversos pasos que se necesitan por si alguien lo intenta alguna ves.

En primer lugar vamos a necesitar algunas claves en el registro de Windows:

  1. HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL ServerMSSQL11E.LOCALDBMSSQLServerDefaultData
  2. HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL ServerMSSQL11E.LOCALDBMSSQLServerDefaultLog
  3. HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL ServerMSSQL11E.LOCALDBMSSQLServerBackupDirectory

Todas de tipo string, y en la cuales se deben de poner la ruta a un directorio, en mi caso yo he usado “D:SQLServerLocalDBDatabases”

Luego desde Visual Studio en la pestaña de SQL Server Object Explorer creamos una nueva consulta en la instancia “v11.0” de LocalDB y ejecutamos :

Restore FILELISTONLY  From Disk=’E:BackupDB.bak’

Esto nos debería de mostrar el nombre lógico y físico de los archivos de datos y de log de la base de datos a restaurar. Luego de contar con esos nombres pues lo lógico es ejecutar:

RESTORE DATABASE DB01

From Disk=’E:BackupDB.bak’

WITH

REPLACE,

RECOVERY,

MOVE ‘DB01_Data’ TO ‘C:SQLServerLocalDBDatabasesDB01.mdf’,

MOVE ‘DB01_Log’ TO  ‘C:SQLServerLocalDBDatabasesDB01_log.ldf’, 

STATS=5 

Hasta aquí nada nuevo simplemente consultamos el archivo de backup por información de la base de datos que contiene y luego intentamos restaurarla de la manera normal con esto se restauro el archivo de datos (mdf) pero no se pudo restaurar el log por el siguiente error.

The logical database file ‘BD01_Log’ cannot be found. Specify the full path for the file. 

Si bien el Object Explorer me mostraba la base de datos esta no podía ser iniciada.Consultando en diversos lugares aparentemente es un problema de LocalDB. Lo primero entonces era obtener los archivos de la base de datos para lo cual intente restaurarla usando el parámetro NONRECOVERY en lugar del parámetro RECOVERY. Con esto pude comprobar que tanto el archivo mdf como ldf estaban en la ubicación que había establecido para ellos.

Ya con estos dos archivos necesitaba una forma de poder adjuntarles a la instancia de LocalDB para ello tuve que:

  • Detener y eliminar la instancia de LocalDB (ojo con esto tendrás que volver a adjuntar -attach- manualmente todas las bases de datos que tengas en esa instancia).

C:Program FilesMicrosoft SQL Server110ToolsBinn>SqlLocalDB.exe p “v11.0”

C:Program FilesMicrosoft SQL Server110ToolsBinn>SqlLocalDB.exe d “v11.0”

  • Volver a crear la instancia de “v11.0” e iniciarla.

C:Program FilesMicrosoft SQL Server110ToolsBinn>SqlLocalDB.exe c “v11.0” 

C:Program FilesMicrosoft SQL Server110ToolsBinn>SqlLocalDB.exe s “v11.0”

Finalmente hay que adjuntar nuevamente los archivos

CREATE DATABASE DB01

    ON (FILENAME = ‘C:SQLServerLocalDBDatabasesDB01.mdf’), 

    (FILENAME = ‘C:SQLServerLocalDBDatabasesDB01_log.ldf’) 

    FOR ATTACH; 

Y listo la base de datos en restaurada en LocalDB. Espero poder tomarme unos minutos mas para entender a fondo algunas cosas mas de este comportamiento de LocalDB pero por el momento necesito trabajar con esa base datos, si alguien sabe algo mas al respecto pues bienvenidas los comentarios.