2015/05/16

SQL Server - Convertir o separar por comas una cadena dividido en filas

La siguiente función convierte y separa comas una cadena dividido en filas.
DECLARE @nombre_db AS VARCHAR(50) 
CREATE FUNCTION fn_SplitString
(
 @Str           NVARCHAR(MAX),
 @Separator     CHAR(1)
)
RETURNS @ResultOutput TABLE(Id INT IDENTITY(1, 1), Result NVARCHAR(100))
AS
BEGIN
 DECLARE @Splitted_string NVARCHAR(4000)
 DECLARE @Pos INT
 DECLARE @NextPos INT
 
 SET @Str = @Str + @Separator
 SET @Pos = CHARINDEX(@Separator, @Str)
 WHILE (@pos <> 0)
 BEGIN
     SET @Splitted_string = SUBSTRING(@Str, 1, @Pos - 1)
     SET @Str = SUBSTRING(@Str, @pos + 1, LEN(@Str))
     SET @pos = CHARINDEX(@Separator, @Str)
     INSERT INTO @ResultOutput
     VALUES
       (
         @Splitted_string
       )
 END
 RETURN
END
Utilizando la función fn_SplitString en consulta:
--Separar una cadena por comas
SELECT Result
FROM   fn_SplitString('Split,string,example,in,sql,server', ',')

--Separar una cadena por símbolo de canalización
SELECT Result
FROM   fn_SplitString('Split|string|example|in|sql|server', '|')

--Separar una cadena por el espacio
SELECT Result
FROM   fn_SplitString('Split string example in sql server', ' ')

2015/05/02

SQL Server - Backup a todas las bases de datos

Aqui les dejo el código para hacer backup de todas sus bases de datos, solo tienen que ponerlo en un trabajo(jobs) para que se ejecute periódicamente.
DECLARE @nombre_db AS VARCHAR(50) 
DECLARE tablas_cursor CURSOR  
FOR
    SELECT NAME
    FROM   sys.databases
    WHERE  NAME NOT IN ('master' ,'tempdb' ,'model' ,'msdb')

OPEN tablas_cursor 

FETCH NEXT FROM tablas_cursor INTO @nombre_db 

WHILE @@fetch_status=0
BEGIN
    DECLARE @nombre VARCHAR(150) 
    
    SET @nombre = CONVERT(VARCHAR(9) ,GETDATE() ,6) 
    SET @nombre = 'D:\Backup\'+@nombre+'-' 
       +@nombre_db+'.bak'
    
    SET @nombre = REPLACE(@nombre ,' ' ,'') 
    
    
    BACKUP DATABASE @nombre_db TO DISK=@nombre WITH COMPRESSION
    
    FETCH NEXT FROM tablas_cursor INTO @nombre_db
END 

CLOSE tablas_cursor 

DEALLOCATE tablas_cursor