Se você restaurar um banco de dados, o SQL Server, por padrão, tentará restaurar todos os dados e arquivos de log em seus locais originais. Como esses locais originais ainda estão em uso pelo banco de dados original ("A"), a restauração falha. Você precisa usar a cláusula WITH MOVE para especificar novos locais para todos os arquivos no banco de dados.
RESTORE DATABASE B FROM DISK = 'A.bak'
WITH MOVE 'DataFileLogicalName' TO 'C:\SQL Directory\DATA\B.mdf',
MOVE 'LogFileLogicalName' TO 'C:\SQL Directory\DATA\B.ldf',
REPLACE --Needed if database B already exists
Algo assim mesmo. Use RESTORE FILELISTONLY FROM DISK ... para ver os nomes de arquivos lógicos no backup, se necessário.