Social Icons

twitter facebook google plus linkedin

lunes, 30 de abril de 2012

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.

 

martes, 24 de abril de 2012

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

jueves, 19 de abril de 2012

Habilitar el acceso remoto a SQL Server 2012

En una organización puede que sea un requerimiento que el servidor esté aislado o puede que no. En el caso que se requiera que se habiliten las conexiones remotas, tenemos que seguir una serie de pasos, ya sean en orden o no.

Permitir las conexiones remotas en la instancia
Abrir SQL Server Management Studio e ir a las propiedades del servidor (botón secundario en el nombre del servidor -> Propiedades). En la ventana de propiedades, ir a las propiedades de conexión y habilitar la opción "Allow remote connections to this server", tal cual como sale en la imagen:

Propiedades de conexion del servidor

Ahora abrimos SQL Server Configuration Manager y verificar que el protocolo TCP/IP para la instancia se encuentre habilitado:

Propiedades de TCP/IP

En la misma ventana, abrimos las propiedades del protocolo TCP/IP y vemos que puerto está utilizando:



Habitualmente utiliza el puerto 1433.

Crear regla en el firewall

Abrimos el firewall de Windows y creamos la siguiente regla:









En esta parte hay que definir el perfil de la regla. En mi caso, quiero que el servidor esté disponible para acceder desde todo el dominio.



Nombre de la regla. Tiene que ser algo descriptivo. Luego finalizamos el asistente.

Para probar la conexión, desde SQL Server Management Studio (idealmente instalado en otro equipo de la organización)  intentamos conectarnos al servidor remoto:



Desde el servidor SQL3 intenté conectarme al SQL1 y todo resultó tal como lo configuré:



Ahora que funciona, ¡A Jugar!

viernes, 13 de abril de 2012

Demo de ColumnStore Index

Hola gente linda, en el post del 30 Marzo ( http://blog.maximilianomarin.com/2012/03/columnstore-index/ ) escribí sobre esta nueva característica. Debo reconocer que quedé con gusto a poco y ahora hice algo más elaborado. Algo que ustedes puedan descargar y probar en sus máquinas y sacar sus propias conclusiones.

Pueden descargar el archivo desde aquí: http://www.4shared.com/zip/SIaGozP_/Demo_ColumnStore_Index.html y ponerse a jugar.

Se aceptan sugerencias.

domingo, 8 de abril de 2012

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í:

 

[caption id="attachment_1270" align="alignnone" width="256" caption="Configuracion de Filestream"]Configuracion de Filestream[/caption]

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!

martes, 3 de abril de 2012

Compresión en SQL Server

Desde SQL Server 2008 es posible comprimir los datos a nivel de filas y páginas y respaldos. En este pequeño artículo hablaré sobre la compresión a nivel de filas. Para páginas y respaldos vendrán en otra entrega.

Compresión en Filas
La compresion de filas está recomendada cuando se tiene una alta carga de trabajo de escritura en disco. Es posible comprimir las filas en los siguientes escenarios:

  • Tablas con y sin indices agrupados y no agrupados

  • Vistas indexadas

  • Indices y tablas particionadas


Recomendaciones

  • Evaluar el ahorro que se genera con la compresion

  • No comprimir todos los elementos de la base de datos sin antes evaluar. Si es pequeño no es necesario comprimir. Considerar comprimir si el elemento es accesado pocas veces.


Código


--tamaño de tabla
exec sp_spaceused MiTabla
go
--compresion por fila
alter table MiTabla rebuild with(data_compression = row)
go
exec sp_spaceused MiTabla
go

Primero muestra el espacio utilizado por la tabla que vamos a comprimir, luego la comprime y al final muestra el espacio ocupado por la tabla ya comprimida para comparar.

Al realizar esta prueba, nos da el siguiente resultado sobre una tabla sin comprimir:

[caption id="attachment_1261" align="alignnone" width="300" caption="Tabla sin comprimir"]Tabla sin comprimir[/caption]

Pero al comprimir por fila la misma tabla, nos da el siguiente resultado:

[caption id="attachment_1262" align="alignnone" width="300" caption="Tabla comprimida"]Tabla comprimida[/caption]

Los números hablan solos.

 

Saludos!