Como restaurar um banco no sql server express 2005

O cenário é bastante comum. Você tem um arquivo de backup, (*.bak) e precisa restaurá-lo.

Siga os passos abaixo para restaurar o arquivo usando SQL Script (T-SQL)

Passo 1: Descubra o nome logico (logical name) do banco de dados que está no backup.

RESTORE FILELISTONLY
    FROM DISK = 'D:\BackUpYourBaackUpFile.bak'

GO

Passo 2: Use o valor da coluna LogicalName no seguinte passo:

    ----Altere o banco para single user Mode
ALTER DATABASE SeuBancoDeDados

    SET SINGLE_USER WITH
ROLLBACK IMMEDIATE

    ----Restaurar Banco
            RESTORE DATABASE SeuBancoDeDados

    FROM DISK = 'D:\BackUpYourBaackUpFile.bak'
            WITH MOVE 'SeuMDFLogicalName' TO 'D:\Data\SeuArquivoMdf.mdf',

            MOVE 'SeuLDFLogicalName' TO 'D:\Data\SeuArquivoLDF.mdf'

ALTER DATABASE YourDB SET MULTI_USER
GO

SQL Server – Rotina para backup de todos os bancos

A rotina abaixo permite fazer backup de todos os bancos no sql server 2005 e também no sql server express, através de um script que pode ser executado por linha de comando, ou agendado pelo agendador de tarefas do windows (task scheduler).

Siga os passos abaixo:

1) Crie um arquivo de texto com o nome Backup_All_Databases.sql.

2) Cole o seguinte script no arquivo criado. Obs.: Altere a pasta do backup que está no início do script para a pasta que você desejar.

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 = 'C:\Backuped_SQL_DB\'
--Add a list of all databases you don't want to backup to this.
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

3) Execute o seguinte comando no prompt do ms-dos (ou se preferir crie agende uma tarefa com este comando).

sqlcmd -S . -i "C:\Backups\Backup_All_Databases.sql"

Se desejar agente uma tarefa para fazer o backup diariamente.