Management Studio o Administrador Corporativo

Si has instalado Sql Server 2005, y buscas desesperadamente el Administrador Corporativo, te doy una mala noticia, no lo vas a encontrar, fue reemplazado por el Management Studio, ¿más malas noticias? Se tiene que bajar e instalar aparte.

Descargalo desde aquí.

Sql Server : Optimizacion del rendimiento del CPU

En un artículo de Technet, Zach Nichter explica como optimizar el rendimiento del CPU para un servidor Sql Server. Se tocan los siguientes puntos.

  • Solución de problemas de rendimiento de bases de datos
  • Revisión de causas relacionadas con el hardware
  • Uso de PerfMon para hacer un seguimiento de los cuellos de botella en las bases de datos
  • Evaluación del rendimiento de las consultas
Para leer el artículo, haz clic aquí.

Como hacer una consulta por fecha

A veces es complicado hacer consultas por fechas, la siguiente es una forma rápida e realizar una consulta por fecha. En la consulta se pretende listar la columna DocumentoId de la tabla Documentos, filtrada por Fecha (en este caso 15/08/2005), si se fijan se ve la fecha a filtrar y el rango se extiende hasta antes del día siguiente.

SELECT DocumentoId
FROM Documentos
WHERE
Fecha >= '15/08/2005' AND
Fecha < '16/08/2005'

Sql Server : Sentencia WHERE con condicionales

Se puede incluir sentencias condicionales en la clausula WHERE, de modo que según los parámetros se forma una condición en la consulta.

Escenario:

Usaremos la tabla Customers de la base de datos de ejemplo Northwind que viene con el Sql Server. La consulta se hará con lo siguiente:

  1. Todos los registros que contengan la palabra "the" en el nombre de la compañía.
  2. Todos los registros para compañías localizadas en Alemania, excluyendo las que empiecen con la letra "A".
Normalmente, se podría crear una sentencia dinamica consistente en multiples IF y cadenas a ser concatenadas a una variable final, la cual sería ejecutada por EXEC. Pero a veces es preferible otra opción mas dinamica, pero también posiblemente mas lenta.

El código


-- Declarar algunas variables locales.
-- Actualmente se crean dos por cada variable incluida en el WHERE.
-- La primera variable representa el valor que estamos filtrando
-- y la segunda el operador para el filtro.

declare @companyName varchar(255)
declare @companyNameOp varchar(2)
declare @country varchar(255)
declare @countryOp varchar(2)

-- Valores de ejemplo. Los valores son para el segundo escenario descrito
-- anteriormente, todos los registros para las compañías localizadas
-- en Alemania, excluyendo cuyos nombres comiencen con "A"

-- Definicion de los operadores
-- para el ejemplo, utilizamos un par de letras:

-- ne = no igual
-- eq = igual
-- bg = empieza con
-- ed = termina con
-- ct = contiene

-- Para este ejemplo se utiliza campos de tipo varchar
-- pero es sencillo adaptarlo para otros tipos de datos


set @companyname = 'A%'
set @companynameOp = 'ne'
set @country = 'Germany'
set @countryOp = 'eq'

-- Armemos la consulta.

select
customerid, companyname, country
from
customers
where
case @companyNameOp
when '' then 1 -- Operador no definido, lista todo
when 'eq' then -- Operador es "igual"
case when companyname like @companyName then 1 else 0 end
when 'bg' then -- Operador es "comienza con"
case when companyname like @companyName +'%' then 1 else 0 end
when 'ed' then -- Operador es "termina con"
case when companyname like '%' + @companyName then 1 else 0 end
when 'ct' then -- Operador es "contiene"
case when companyname like '%' + @companyName +'%' then
1 else 0 end
when 'ne' then -- Operador es "no igual"
case when companyname not like @companyName then 1 else 0 end end =1

AND

-- lo mismo es para el otro campo

case @countryOp
when '' then 1
when 'eq' then
case when country like @country then 1 else 0 end
when 'bg' then
case when country like @country +'%' then 1 else 0 end
when 'ed' then
case when country like '%' + @country then 1 else 0 end
when 'ct' then
case when country like '%' + @country +'%' then 1 else 0 end
when 'ne' then
case when country not like @country then 1 else 0 end
end =1


Con esta consulta, se pueden crear procedimientos almacenados, mas flexibles, que permitiran unas consultas personalizadas más dinamicas.


Fuente:

Sql Server Central - Sotiris Filippidis

Backups con Winrar de Bases de Datos

Utilizar Winrar para los Backups

Tengo un script que escribí hace tiempo con el cual hago una copia de seguridad completo o full backup de una base de datos y automaticamente lo comprimo con el Winrar, para luego hacer una copia en una ubicación de respaldo. De ese modo tenemos dos copias de seguridad en lugares diferentes, en caso haya algún desastre. El nombre se genera según la fecha y hora del sistema.

Previos: Hay que tener iniciado el Agente Sql Server e instalado Winrar.

El script lo tienen que ejecutar en el analizador de consultas, ahora también pueden crear un trabajo en el Agente Sql Server para programarlo y que se ejecute según lo crean conveniente.

Lo que tienen que cambiar para su entorno especifico, es la ruta del Winrar, y la carpeta donde se realiza el backup o copia de seguridad y donde se copia.


/*INICIO DEL SCRIPT*/
/*CARLOS MAYANGA

16-10-2004
ESTE TRABAJO REALIZA LA COPIA DE SEGURIDAD COMPLETA,
COLOCANDO COMO NOMBRE LA BASE DE DATOS
LA FECHA Y LA HORA
LUEGO COMPRIME EL BACKUP EN UN ARCHIVO RAR
PARA TERMINAR COPIA EL ARCHIVO HACIA OTRA UBICACION
SIRVE PARA BASE DE DATOS PEQUEÑAS
*/

/*HACER LA COPIA DE SEGURIDAD*/
DECLARE @NombreRAR varchar(8000)
DECLARE @NombreCompleto varchar(8000)
DECLARE @Ruta varchar(8000)
/*NombreBackup SE REFIERE AL NOMBRE DE LA COPIA DE SEGURIDAD, PODRIA SER EL MISMO DE LA BASE DE DATOS PARA QUE LA PUEDAN IDENTIFICAR, NO ES NECESARIO CREAR EL DISPOSITIVO DE BACKUP ANTES.*/
SET @NombreRAR='D:\Backup\NombreBackup' + + RTRIM(CONVERT(CHAR(16),GETDATE(),112)) + REPLACE(RTRIM(CONVERT(CHAR(16),GETDATE(),114)),':','') + '.rar'
SET @NombreCompleto='D:\Backup\NombreBackup' + RTRIM(CONVERT(CHAR(16),GETDATE(),112)) + REPLACE(RTRIM(CONVERT(CHAR(16),GETDATE(),114)),':','') + '.bak'
SET @Ruta='D:\Backup\'
/*AQUI SE REALIZA LA COPIA DE SEGURIDAD*/
BACKUP DATABASE [SHIOL_DATOS] TO DISK=@NombreCompleto
WITH INIT, NOUNLOAD, NAME = N'Admin - Nombre Backup backup', SKIP, STATS = 10, FORMAT

/*COMPRIMIR LA COPIA DE SEGURIDAD*/

DECLARE @Orden varchar(8000)
/*CON ESTA ORDEN SE COMPRIME LA COPIA DE SEGURIDAD Y LUEGO SE ELIMINA EL ARCHIVO ORIGINAL*/
SET @Orden ='c:\archiv~1\winrar\rar.exe a -m5 -df ' + @NombreRAR + ' ' + @NombreCompleto

EXEC master.dbo.xp_cmdshell @Orden

/*ESTA ES LA RUTA DE OTRA MAQUINA PARA HACER UNA COPIA DE ESE MODO TENEMOS DOS COPIAS DEL MISMO BACKUP*/
SET @Ruta = '\\maquina2\backup\'

/*COPIAR EL ARCHIVO COMPRIMIDO*/

SET @Orden ='copy ' + @NombreRar + ' ' + @Ruta
EXEC master.dbo.xp_cmdshell @Orden

Eso seria todo, no olviden de adaptar el script según su entorno.

Autor: Carlos Mayanga
Sitio: Programación Visual Basic con Sql Server


Actualización: Con la liberación de Google Knol, he creado un knol (una unidad de conocimiento), extendiendo un poco la explicación acá proporcionada. Visita mi Knol aquí.