martes, 29 de noviembre de 2011

Cómo obtener la configuración, la instalación y la información de volcado de memoria en SQL Server 2012


Nuevamente les comparto un tip del sitio MSSQL TIPS publicado por Ashish Kumar Mehta, el cual muestra unas nuevas DMVs del M. SQL Server 2012 y que les puede ser de utilidad para crear JOBs para el monitoreo del estado de sus servidores.

Problema

SQL Server 2012 con nombre en código Denali, tiene un montón de nuevas características para ofrecer. El nuevo conjunto de características incluye nuevas DMV (Dynamic Management Views) que pueden devolver la configuración de SQL Server, la instalación y la información de volcado de memoria relacionados.

Solución

En este tip se discutirá la manera de utilizar algunas DMVs que son nuevas en SQL Server 2012. Es importante tener en cuenta que con cada reinicio del servicio de SQL Server los datos de estas vistas de administración dinámica se reinician también.
  • sys.dm_server_memory_dumps
  • sys.dm_server_services
  • sys.dm_server_registry

Usando sys.dm_server_memory_dumps:

Devuelve una fila por cada archivo de volcado de memoria generado por el motor de base de datos SQL Server. Si al ejecutar esta DMV obtienes filas como resultado.... entonces usted debe alertar a un DBA para que pueda comprobar lo que causó la volcados de memoria que podría conducir a la corrupción de datos. También te recomiendo que lea este artículo que se explica cómo buscar las consultas que se estaban ejecutando cuando se generó el volcado de memoria.
  • SELECT * FROM sys.dm_server_memory_dumps

Usando sys.dm_server_services:

Devuelve información relacionada con: el tipo de inicio, el estado de ejecución, la última vez que se inició, etc, para los servicios de Sql Server, Full-Text y el Agente, de la instancia actual de SQL Server.
  • SELECT * FROM sys.dm_server_services:

Usando sys.dm_server_registry:

Devuelve la información de la Configuración del SQL Server y la información de instalación que esta almacenada en el registro de Windows. Esta DMV es muy útil ya que puede darte rápidamente información relevante referente a la versión actual, la dirección física de la Base de Datos Master, los archivos del Log de Errores, etc.
  • SELECT * FROM sys.dm_server_registry

lunes, 28 de noviembre de 2011

Procedimiento almacenado en SQL Server para generar contraseñas aleatorias

Este blog es una traducción de un artículo publicado en mssqltips por Brent Shaub, que permite crear un procedimiento almacenado que genera contraseñas aleatorias.

Problema

SQL Server se utiliza para apoyar muchas aplicaciones y una de esas características es el almacenamiento de contraseñas. A veces es necesario restablecer una contraseña con una contraseña temporal o generar una contraseña aleatoria para un usuario nuevo. En este tip se desarrolla un procedimiento almacenado para generar contraseñas aleatorias que se pueden incorporar en sus aplicaciones.

Solución

El siguiente procedimiento almacenado crea cadenas de caracteres al azar basado en cuatro parámetros que configuran el resultado.


  1. LEN - especifica la longitud del resultado (obligatorio)
  2. MIN - indica el Código ASCII inicial (opcional: por omisión "48": que es el número cero)
  3. RANGE - determina el rango de cuántos caracteres ASCII se incluirán (opcional: por omisión "74" (48 + 74 = 122) donde 122 es "z" minúscula)
  4. EXCLUDE - un string de caracteres por excluir de la salida final (opcional: por omisión incluye cero, "O" mayúscula, estos signos de puntuación :;<=>?@[]`^\/)


Código

create proc [dbo].uspRandChars
   @len int,
   @min tinyint = 48,
   @range tinyint = 74,
   @exclude varchar(50) = '0:;<=>?@O[]`^\/',
   @output varchar(50) output
as
   declare @char char
   set @output = ''
   while @len > 0 begin
     select @char = char(round(rand() * @range + @min, 0))
     if charindex(@char, @exclude) = 0 begin
       set @output += @char
       set @len = @len - 1
     end

   end;
go

Ejemplos

declare @newpwd varchar(20)

-- all values between ASCII code 48 - 122 excluding defaults
exec [dbo].uspRandChars @len=8, @output=@newpwd out
select @newpwd

-- all lower case letters excluding o and l
exec [dbo].uspRandChars @len=10, @min=97, @range=25, @exclude='ol', @output=@newpwd out
select @newpwd

-- all upper case letters excluding O
exec [dbo].uspRandChars @len=12, @min=65, @range=25, @exclude='O', @output=@newpwd out
select @newpwd

-- all numbers between 0 and 9
exec [dbo].uspRandChars @len=14, @min=48, @range=9, @exclude='', @output=@newpwd out
select @newpwd

Resultados

2uR37gRq
--------------
qvffsvxzvd
--------------
IRTIFJHFFCKB
--------------
58739441336731

martes, 22 de noviembre de 2011

Encryptación a nivel de columna en SQL Server

Un artículo muy interesante y útil de MSSQL Tips indica como podemos encryptar la información de una columna en una tabla de SQL Server, por ejemplo para almacenar números de tarjetas de crédito, aquí se los dejo [click]