Mostrando entradas con la etiqueta Sql Server. Mostrar todas las entradas
Mostrando entradas con la etiqueta Sql Server. Mostrar todas las entradas

martes, 20 de mayo de 2014

Atachar y recrear log de Sql Server

En esta ocasión hablaré de cómo atachar una base de datos de Sql Server.

El atachar una base de datos sirve para restaurar una base de datos a partir del archivo primario y/o archivos secundarios.

Generalmente se presenta esta situación cuando no se tiene espeacio en disco duro para hacer un respaldo y restaurar la base en otra de respaldo. También sirve para generar logs de datos más pequeños o para recuperarse en caso de que el sistema operativo o servidor queden fuera de servicio y no se cuenta con un respaldo de la base de datos.

Es recomendable que se instalen las bases de datos en unidades físicas de disco duro distintas de donde está instalado el disco duro.

CREATE DATABASE baseDeDatos 
    ON (FILE='d:\rutaDeArchivoPrimario.mdf')
    FOR ATTACH_REBUILD_LOG

lunes, 14 de abril de 2014

Respaldo comprimido en Sql Server

El siguiente script les permitirá hacer un respaldo desde Sql Server Management Studio con compresión y verificación de integridad.
Para llenar en automático los campos ejecuten el atajo "Ctrl + M".
Les aparecera una ventana que solicita el nombre de la base de datos, la fecha del respaldo y una descripción del mismo.
Pueden cambiar la ruta en donde queda guardado el respaldo.
La compresión en los respaldos se puede aplicar en Sql Server 2008 y 2012.
El radio de compresión es casi de 5 a 1, es decir que una base de 5GB se quedará respaldada en aproximadamente 1 GB.

USE [master];

BACKUP DATABASE <baseDeDatos, VARCHAR(100),>
TO DISK = 'D:\SQL Server 2008\Backup\<baseDeDatos, VARCHAR(100),>_<fecha,VARCHAR(8),>.bak'
WITH 
 COMPRESSION, 
 CHECKSUM,
 NAME = '<baseDeDatos, VARCHAR(100),> - <descripcion, VARCHAR(100),>';

lunes, 30 de diciembre de 2013

Leap Year function in Sql Server

Here is a function to determine if a year is a leap year in Sql Server.

The rules to determine a leap year are:

  • Must be divisible by 4.
  • Must NOT be divisible by 100.
  • Must be divisible by 400.
CREATE FUNCTION isLeapYear(
 @date DATETIME
) RETURNS BIT 
AS
BEGIN
 DECLARE 
  @year INT,
  @isLeapYear BIT
  
 SET @year = YEAR(@date)

 IF @year % 4 = 0 AND (@year % 100 <> 0 OR @year % 400 = 0)
 BEGIN
  SET @isLeapYear = 1
 END
 ELSE
 BEGIN
  SET @isLeapYear = 0
 END 

 RETURN @isLeapYear
END

Activar xp_cmdshell en Sql server 2005 - 2008

El procedimiento xp_cmdshell sirve para ejecutar comandos de DOS desde SQL Server.

Se preguntarán para que me sirve ejecutar comandos DOS desde Sql Server. Pues a veces es util crear directorios, leer su contenido o copiar archivos, cuando no se tiene acceso directo o de consola al servidor en el que está instalado Sql Server.

El comando viene desactivado porque representa un hueco de seguridad que puede ser usado en nuestra contra, pero hay veces que es útil saber de su existencia y usarlo para salir del paso.

Para habilitar su uso se requiere ser administrador de la base de datos. Estos son los comandos:

USE master;

GO

EXECUTE SP_CONFIGURE 'show advanced options', 1
RECONFIGURE WITH OVERRIDE

GO
 
EXECUTE SP_CONFIGURE 'xp_cmdshell', '1'
RECONFIGURE WITH OVERRIDE

GO

EXECUTE SP_CONFIGURE 'show advanced options', 0
RECONFIGURE WITH OVERRIDE

GO

Para deshabilitarlo:
USE master;

GO

EXECUTE SP_CONFIGURE 'show advanced options', 1
RECONFIGURE WITH OVERRIDE

GO
 
EXECUTE SP_CONFIGURE 'xp_cmdshell', '0'
RECONFIGURE WITH OVERRIDE

GO

EXECUTE SP_CONFIGURE 'show advanced options', 0
RECONFIGURE WITH OVERRIDE

GO
Para usarlo:
EXECUTE master.dbo.xp_cmdshell 'dir c:\'