O binário do assembly é armazenado como um blob no banco de dados, portanto é transportado para onde quer que o banco de dados vá. O CLR está ativado apenas na instância - não há configurações específicas do banco de dados para isso.
De qualquer forma, por que você está tentando fazer isso?
(Não estou tentando argumentar; só quero ouvir os motivos envolvidos, porque talvez o problema possa ser resolvido de uma maneira diferente que atenda às suas necessidades.)
Não há como fazer isso facilmente, exceto colocar o assembly em um banco de dados compartilhado.
Dito isso, acho que é vantajoso adotar a arquitetura centrada em banco de dados, a menos que exista uma situação específica que tenha razões muito convincentes para centralizar. O motivo é que colocar o assembly (ou qualquer outra coisa) fora do banco de dados cria uma dependência em seu ambiente. Essa é precisamente a abordagem oposta que a Microsoft está adotando nos bancos de dados contidos a partir do SQL Server 2012.
Quando você começa a precisar usar recursos como replicação ou cluster, essa dependência pode potencialmente adicionar uma quantidade enorme de complexidade à implantação, mas também à solução de problemas e procedimentos de failover.
Essa arquitetura é muito menos óbvia para as pessoas que não estão familiarizadas com o sistema (ou seja, é menos auto-detectável e menos documentada).
Se você acabar exigindo segurança diferente em bancos de dados diferentes ou qualquer coisa que envolva variação, estará em um mundo de ferimentos.
Se esses bancos de dados forem implantados para os clientes (parece que não serão, mas vou dizer isso por completo), isso adiciona complexidade ao procedimento, manutenção e solução de problemas de implantação.
Como todos os bancos de dados compartilhariam esse código, se algum erro fosse introduzido (ou corrigido!), Isso poderia interromper todos os aplicativos que dependem dos bancos de dados. O teste de unidade abrangente seria uma necessidade absoluta.
Se você possui vários bancos de dados que precisam da mesma funcionalidade, existem outras maneiras de reduzir a quantidade de duplicação envolvida, que eu assumo ser o objetivo do exercício. Mesmo um assembly CLR bastante complexo não ocupa muito espaço de armazenamento físico em comparação com os dados no próprio banco de dados (quase sempre), por isso não vejo isso como um argumento válido, a menos que você tenha literalmente milhares de pequenos bancos de dados que precisam disso. montagem.
O que você pode fazer é modificar outras partes do procedimento de implantação desses bancos de dados para reduzir a duplicação de origem. Por exemplo, crie e implante o assembly a partir do local comum do código CLR no controle de origem. Ou crie um script que implante o mesmo assembly nos bancos de dados. Automatize essa parte das coisas o máximo possível, e não será grande coisa.
Concordo que o que estou sugerindo é uma troca, porque ainda haverá alguma duplicação, mas isso deve ser equilibrado com os negativos envolvidos na implementação de uma arquitetura que não segue o padrão prescrito. Somente você pode decidir o que é certo para o seu ambiente.