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.

Alterando o limite de memória no MSDE

O limite de consumo de memória do servidor de banco de dados MSDE, por padrão, é 2147483647Mb. Isto mesmo, pouco mais de 2 terabytes de memória.

Como nossos servidores não tem tanta memória disponível, vamos limitar o uso de memória no banco de dados. Para isto, crie um arquivo chamado limitmemory.sql, com o seguinte conteúdo:

USE master
EXEC sp_configure ’show advanced options’, 1
RECONFIGURE WITH OVERRIDE

USE master
EXEC sp_configure ‘max server memory (MB)’, 512
RECONFIGURE WITH OVERRIDE

USE master
EXEC sp_configure ’show advanced options’, 0
RECONFIGURE WITH OVERRIDE

Em seguida, utilize o seguinte comando para executar este script sql (lembre de mudar o caminho para o arquivo sql):

osql -E -S servername\MSFW -i c:\sqlmemorylimit.sql

Se você quiser apenas verificar o valor que está setado para limite de memória no MSDE, use o seguinte script:

USE master
EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE

USE master
EXEC sp_configure 'max server memory (MB)'

USE master
EXEC sp_configure 'show advanced options', 0
RECONFIGURE WITH OVERRIDE

Salve-o como sqlmemorycheck.sql, e execute o seguinte comando:

osql -E -S servername\MSFW -i c:\sqlmemorycheck.sql