En mi caso lo que hago es lo siguiente:
Desde un programa que corre como un servicio realizo el Backup y restore de la BBDD con otro nombre. Cuando se finaliza el restore almaceno en la una tabla la fecha y nombre del Backup que dispara desde un trigger de esta tabla un evento.
Este evento es capturado por las aplicaciones de los usuarios y en ese preciso momento se desconectan las aplicaciones abiertas de la BBDD, mostrando un aviso al usuario de la acción que se esta produciendo.
Se remplaza el nombre de la BBDD por el original y ya esta. Si todo es correcto el servicio se vuelve a conectar a la BBDD. Las aplicaciones mientras tanto se mantienen en espera durante 30 segundos, concluidos estos se conectan de nuevo a la BBDD.
Un saludo.
