El ensamblado binario se almacena como un blob en la base de datos, por lo que se transporta a donde vaya la base de datos. CLR solo está habilitado en la instancia ; no hay configuraciones específicas de la base de datos para eso.
En cualquier caso, ¿por qué estás tratando de hacer esto?
(No estoy tratando de ser discutidor; solo quiero escuchar los motivos involucrados, porque tal vez el problema podría resolverse de una manera diferente que satisfaga sus necesidades).
No hay forma de hacerlo fácilmente, excepto colocar el ensamblado en una base de datos compartida.
Dicho esto, creo que es ventajoso adoptar la arquitectura centrada en la base de datos, a menos que haya una situación particular que tenga razones muy convincentes para centralizar. La razón es que colocar el ensamblaje (o cualquier otra cosa) fuera de la base de datos crea una dependencia en su entorno. Este es precisamente el enfoque opuesto hacia el cual Microsoft está construyendo con bases de datos contenidas a partir de SQL Server 2012.
Cuando empiece a necesitar usar funciones como la replicación o la agrupación en clúster, esta dependencia puede agregar una enorme cantidad de complejidad a la implementación, pero también a la resolución de problemas y los procedimientos de conmutación por error.
Esta arquitectura es mucho menos obvia para las personas que no están familiarizadas con el sistema (es decir, es menos reconocible por sí mismo y menos autodocumentado).
Si terminas requiriendo una seguridad diferente en diferentes bases de datos, o cualquier cosa que implique variación, estás en un mundo de dolor.
Si estas bases de datos se implementan en los clientes (parece que no lo serán, pero lo diré por completo), esto agrega complejidad al procedimiento de implementación, mantenimiento y solución de problemas.
Dado que todas las bases de datos compartirían este código, si se introducen errores (¡o se corrigen!), Esto podría romper todas las aplicaciones que dependen de las bases de datos. La prueba unitaria integral sería una necesidad absoluta.
Si tiene varias bases de datos que necesitan la misma funcionalidad, existen otras formas de reducir la cantidad de duplicaciones involucradas, lo que supongo que es el objetivo del ejercicio. Incluso un ensamblado CLR bastante complejo no ocupará mucho espacio de almacenamiento físico en comparación con los datos en la base de datos en sí (casi siempre), por lo que no lo veo como un argumento válido a menos que tenga literalmente miles de pequeñas bases de datos que necesitan esto montaje.
Lo que podría hacer es modificar otras partes del procedimiento de implementación para estas bases de datos para reducir la duplicación de origen. Por ejemplo, compile e implemente el ensamblaje desde la ubicación común del código CLR en el control de origen. O cree un script que implemente el mismo ensamblaje en las bases de datos. Automatice esta parte de las cosas tanto como sea posible, y no será un gran problema.
Estoy de acuerdo en que lo que estoy sugiriendo es una compensación, porque todavía habrá cierta duplicación, pero eso debe equilibrarse con los aspectos negativos relacionados con la implementación de una arquitectura que no sigue el estándar prescrito. Solo usted puede decidir qué es lo correcto para su entorno.