Estamos migrando do sql server 2008 para 2017 e faremos o seguinte
- instale o sql server 2017 na nova máquina
- faça backups de todos os dbs no servidor antigo
RESTORE DATABASE DbName FROM DISK = 'C:\temp\Live\dbname.bak'
WITH
MOVE 'DbName' TO 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\DbName.mdf',
MOVE 'DbName_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\DbName_log.ldf'
Eu gostaria de evitar a WITH
parte, se possível, mas isso exige que eu crie um banco de dados em branco primeiro e defina sua versão para 2008 antes de poder restaurar corretamente.
Acho que estou perguntando qual é a melhor maneira de pegar um arquivo .bak e restaurá-lo como db em um servidor que não possui bancos de dados.
Prefere fazer isso sem anexar/desanexar
Eu tenho um grande número de bancos de dados, então vou criar um script para fazer todos eles de uma vez.
Não sei qual é o seu problema aqui.
Quando você restaura o banco de dados, os arquivos de dados (mdf) e log (ldf) estão no disco em algum lugar. O
WITH MOVE
apenas diz ao SQL onde colocá-los.Você não pode ter um servidor SQL sem bancos de dados, cada instalação terá 4 bancos de dados prontos para uso,
master
,msdb
,model
&tembdb
, eles são bancos de dados do sistema e cada um deles possui arquivos mdf e ldf em algum lugar, assim como o banco de dados do usuário que você deseja restaurar .Como scsimon menciona em um comentário, você provavelmente não quer seus arquivos SQL na unidade C, a melhor prática explicada para mim é ter 4 unidades para SQL,