Это делает это для меня (MS SQL 2005 и новее):
select * from your_database_name.sys.tables
Имейте в виду, что вам (или любому другому контексту аутентификации, который вы используете) все равно потребуется разрешение на чтение для этой базы данных.
Чтобы использовать ваш пример:
use a;
go
select * from sys.tables; -- selects table info from a
select * from b.sys.tables; -- selects table info from b