Exportar datos de MAP Toolkit

Hola Mundo. Último dia de Abril. En el post anterior conté que conocí a una herramienta bastante potente para hacer inventario dentro de una red. Ésta trabaja sobre un SQL Server 2008 Express, por lo que no se puede conectar a través de SQL Server Management Studio.

En su momento, pensé que iba a tener algunos problemas para exportar la info. Después de bastante rato de intentarlo, llegué a lo siguiente:

Recuerden que estaba haciendo un inventario de SQL Server

  1. Iniciar el servicio de SQL Browser desde el Configuration Manager
  2. Importar datos desde SQL Server. Conectarse a la instancia MAPS. (OJO Piojo. Hay que indicar el nombre del equipo y la instancia. Por ejemplo: Mi máquina se llama SQL2 y la instancia se llama MAPS, entonces debo conectarme a SQL2MAPS)
  3.  Importar las siguientes tablas/vistas: sql_inventory_dbinstance_view, sql_dbinstance_databases_view, sql_databaseserverproperties y sql_databaseproperties

Con esto tendrán la info en un Excel lista para llevar.

 

MAP: Microsoft Assessments and Planning

La historia es la siguiente: Estaba en la oficina y me solicitaron que realizara una tarea de inventariado de un grupo de máquinas con SQL Server en una empresa. La verdad es que nunca había hecho esto, ni mucho menos conocía algún software que lo hiciera por mi. Ya me veía anotando en mi libreta todos los SQL Server que estaban funcionando. De ser así, tendría un tedioso día.

El panorama se comenzó a arreglar, cuando se me ocurrió preguntar como lo podía hacer. Una persona, con bastante experiencia en el tema, me dijo que existía MAP: Microsoft Assessments and Planning.

MAP Toolkit es una herramienta que ayuda a hacer inventariados, evaluaciones e informes para pequeñas y grandes empresas sin necesidad de instalar agente en ningún equipo. De este modo las empresas pueden planear de una manera más eficiente la migración de sus sistemas.

Volviendo a la historia, tuve que aprender a usar la herramienta para cumplir el propósito.

Mi memoria es frágil, así que hice un PDF con fotos para que nunca más se me olvide: http://www.4shared.com/office/_NGbSxPM/Microsoft_Assessment_and_Plann.html

Hablemos sobre Filestream en SQL Server

En una base de datos podemos almacenar datos estructurados y datos no estructurados. Los datos estructurados corresponden a los que están fuertemente tipados. Por ejemplo, los que se almacenan del tipo int, float, etc. En cambio, tenemos los no estructurados que se almacenan como objetos, usualmente llamados blob (Binary Large OBject).

Todos los motores de bases de datos tienen la capacidad de  almacenar binarios, pero SQL Server ofrece una funcionalidad (incluida en la versión 2008) llamada Filestream  que permite almacenar los objetos binarios directamente en el sistema de archivos, pero transparente para el usuario. Por lo que se pueden seguir ejecutando transacciones sobre estos registrosm esto permite un acceso más rápido a dicha información, y adicionalmente, permite poder liberar de carga de memoria a SQL Server, ya que para el acceso a datos FILESTREAM podría no utilizarse el Buffer Pool.

Para habilitar Filestream en la instancia de SQL Server (si es que no se activó en la instalación) se debe abrir  SQL Server Configuration Manager, ir a SQL Server  Services  (Yo lo tengo en Inglés) y abrir las propiedades de la instancia. En las ventana de propiedades, ir a la pestaña de Filestream y veremos algo así:

 

Configuracion de Filestream
Configuracion de Filestream

Una vez de que la característica esta activada, aceptamos, aplicamos y reiniciamos el servicio. Abrimos el Management Studio, seleccionamos la base de datos en la cual queremos activar Filestream y escribimos lo siguiente:

EXEC sp_configure filestream_access_level, 2

RECONFIGURE

Para poder empezar a usar filestream es necesario crear un filegroup que contenga el atributo CONTAINS FILESTREAM. Para eso, utilizaremos este código:

ALTER DATABASE MiDB
ADD FILEGROUP MiDB_filegroup_filestream CONTAINS FILESTREAM
GO
ALTER DATABASE MiDB
ADD FILE
(
NAME= ‘MiDB_filestream’,
FILENAME = ‘C:dbfs’
)
TO FILEGROUP MiDB_filegroup_filestream
GO

Es importante que el directorio c:db esté creado. El directorio fs dentro de C:db lo creará SQL Server. Para crear la tabla que «almacenará» nuestro objeto, es necesario que una columna sea del tipo VARBINARY(MAX).

create table fs
(
id uniqueidentifier rowguidcol not null unique,
archvo varbinary(max) filestream null
)

Con la tabla ya creada, ya es posible guardar algo. Por ejemplo:

–Declarar la variable del ID
DECLARE @ID UNIQUEIDENTIFIER
–Genera un valor unico
SET @ID = NEWID()
–Inserta un blob en la base de datos. En este caso, es un video. OJO Pijo que hace un cast a la ruta del archivo.
INSERT INTO dbo.fs
(ID, archvo)
VALUES
(@ID, CAST(‘E:Windows Server 2008 R2Wildlife.wmv’ AS VARBINARY(MAX)))
–Selecciona el registro recien creado y muestra su ruta
SELECT ID, archvo
FROM dbo.fs
WHERE ID = @ID
SELECT archvo.PathName()
FROM dbo.fs
WHERE ID = @ID

Y nos debiera dar un resultado mas o menos así:

Resultado de Insercion de datos con Filestream

Mas informacion:
http://technet.microsoft.com/es-es/library/cc645923.aspx
http://www.mssqltips.com/sqlservertip/1489/using-filestream-to-store-blobs-in-the-ntfs-file-system-in-sql-server-2008/
http://www.guillesql.es/Articulos/Almacenamiento_FILESTREAM_SQLServer.aspx

Feliz Pascua de Resurrección!