Existem várias maneiras diferentes de migrar os bancos de dados. O backup e a restauração são os mais comumente recomendados, mas se você tiver mais de 100 bancos de dados, talvez queira fazer script de algo para desanexar e anexar os bancos de dados. Eu usei com sucesso isso para migrar um número muito grande (centenas) de bancos de dados para um novo servidor:
@ECHO ON
set controlfile=control.txt
set newipmdf=\newserver\g$
set newipldf=\newserver\e$
set oldserver=oldserver\Prod1
set oldmdfpath=d:\prod1
set newmdfpath=g:\data
set copymdfpath=m:\data
set newserver=newserver
set oldlogpath=e:\prod1
set newlogpath=e:\log
set copylogpath=l:\log
set movedmdfpath=%oldmdfpath%\moved
set movedldfpath=%oldlogpath%\moved
mkdir %movedmdfpath%
mkdir %movedldfpath%
net use m: %newipmdf%
net use l: %newipldf%
SETLOCAL DISABLEDELAYEDEXPANSION
FOR /F %%L IN (%controlfile%%) DO (
SET "line=%%L"
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO !line!
sqlcmd -E -S!oldserver! -Q"EXEC master.dbo.sp_detach_db @dbname = N'!line!'"
copy "!oldmdfpath!\!line!.mdf" !copymdfpath!
copy "!oldlogpath!\!line!_log.ldf" !copylogpath!
sqlcmd -E -S!newserver! -Q"CREATE DATABASE [!line!] ON ( FILENAME = N'!newmdfpath!\!line!.mdf' ),( FILENAME = N'!newlogpath!\!line!_log.ldf' ) FOR ATTACH"
move "!oldmdfpath!\!line!.mdf" !movedmdfpath!
move "!oldlogpath!\!line!_log.ldf" !movedldfpath!
ENDLOCAL
)
ENDLOCAL
net use m: /z
net use l: /z
Quanto aos logins, não posso ajudá-lo com as senhas, mas você deve conseguir uma lista de nomes de usuários com:
SELECT [name], type, type_desc
FROM [master].[sys].[server_principals]
where is_disabled=0 and type in ('S','U')