Skip to main content

SQL Server – Backup de Todas as Bases de Dados

Para executar backup de todas as bases do SQL Server, crie um arquivo com o código abaixo.

DECLARE @BackupFile varchar (255), @DB varchar( 30), @Description varchar(255 ), @LogFile varchar(50 )

DECLARE @Name varchar (30), @MediaName varchar( 30), @BackupDirectory nvarchar(200 )
SET @BackupDirectory = 'F:\SQL Server\Backup\'

DECLARE Database_CURSOR CURSOR FOR SELECT name FROM sysdatabases WHERE name <> 'tempdb' AND name <> 'model' AND name <> 'Northwind'

OPEN Database_Cursor
FETCH next FROM Database_CURSOR INTO @DB
WHILE @@fetch_status = 0

BEGIN
SET @Name = @DB + '( Daily BACKUP )'
SET @MediaName = @DB + '_Dump' + CONVERT( varchar, CURRENT_TIMESTAMP , 112)

SET @BackupFile = @BackupDirectory + + @DB + '_' + 'Full' + '_' +
CONVERT(varchar , CURRENT_TIMESTAMP , 112 ) + '.bak'
SET @Description = 'Normal' + ' BACKUP at ' + CONVERT(varchar , CURRENT_TIMESTAMP ) + '.'

IF (SELECT COUNT(*) FROM msdb .dbo. backupset WHERE database_name = @DB) > 0 OR @DB = 'master'
BEGIN
SET @BackupFile = @BackupDirectory + @DB + '_' + 'Full' + '_' +

CONVERT(varchar , CURRENT_TIMESTAMP , 112 ) + '.bak'
--SET some more pretty stuff for sql server.
SET @Description = 'Full' + ' BACKUP at ' + CONVERT(varchar , CURRENT_TIMESTAMP ) + '.'

END
ELSE
BEGIN
SET @BackupFile = @BackupDirectory + @DB + '_' + 'Full' + '_' +
CONVERT(varchar , CURRENT_TIMESTAMP , 112 ) + '.bak'
--SET some more pretty stuff for sql server.

SET @Description = 'Full' + ' BACKUP at ' + CONVERT(varchar , CURRENT_TIMESTAMP ) + '.'
END
BACKUP DATABASE @DB TO DISK = @BackupFile
WITH NAME = @Name, DESCRIPTION = @Description ,

MEDIANAME = @MediaName, MEDIADESCRIPTION = @Description ,
STATS = 10
FETCH next FROM Database_CURSOR INTO @DB
END
CLOSE Database_Cursor
DEALLOCATE Database_Cursor

Para executar, utilize o comando abaixo.

sqlcmd -S . -i "C:\Scripts\Nome_do_Arquivo.sql"

Pode ser executado quando necessário, ou como uma tarefa.

SQL Server – Remover login e senha salvos no SQL Management Studio

Para remover usuários e senhas salvas no SQL Server Management Studio, apague o arquivo nos caminhos indicados abaixo, de acordo com a versão do seu SQL Server.

SQL Server Management Studio 2012 delete o arquivo

C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\11.0\SqlStudio.bin

SQL Server Management Studio 2008 delete o arquivo

C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin

SQL Server Management Studio 2005 delete o arquivo

C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\90\Tools\Shell\mru.dat

SQL – Diminuindo o tamanho da base (MDF)

Para resolver isso basta usar o SHRINKDATABASE. Abaixo a sintaxe do comando:.

USE NOME_DO_SEU_DB
 
DBCC SHRINKDATABASE (NOME_DO_SEU_DB, 0)

SQL – Apagando todos os registros de um banco de dados SQL Server

para facilmente excluir todos os dados de todas a tabelas de um banco de dados SQL Server, a seguinte query resolve o problema:

-- desativa a integridade referencial
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
GO
 
EXEC sp_MSForEachTable '
IF OBJECTPROPERTY(object_id(''?''), ''TableHasForeignRef'') = 1
DELETE FROM ?
else
TRUNCATE TABLE ?
'
GO
 
-- reativa a integridade refencial
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
GO

Em detalhes, o que a query faz: ela usa uma stored procedure não documentada do SQL Server chamada sp_MSForEachTable. Resumidamente, esta stored procedure dispara um comando SQL passado por parâmetro em todas as tabelas de um database, sendo o nome da tabela substituído pelo caracter “?”, como pode ser visto na query anterior. Se além de de apagar os dados das tabelas, quiser também reiniciar a contagem dos campos de chave primária, mais conhecido como RESEED, bastaria colocar a seguinte query antes da reativação da integridade referencial:

-- Reinicia o contador de chave primária de todas as tabelas
EXEC sp_MSForEachTable '
IF OBJECTPROPERTY(object_id(''?''), ''TableHasIdentity'') = 1
DBCC CHECKIDENT (''?'', RESEED, 0)
'
GO

Esse tipo de macete é uma mão na roda.


Warning: Use of undefined constant XML - assumed 'XML' (this will throw an Error in a future version of PHP) in /home/mmva7lky/public_html/wp-content/plugins/wp-syntaxhighlighter/wp-syntaxhighlighter.php on line 1048