RedGate SQL Source Control y sinónimos en SQL Server 2008

Hemos estado utilizando RedGate SQL Source Control con éxito mixto en SQL Server 2008 R2. Crónicamente tenemos problemas con los filters y tenemos otro problema que espero que alguien más haya encontrado y que pueda sugerir una solución.

Nuestra stack de deployment dev-> test-> prod incluye el uso de sinónimos para serveres vinculados, básicamente sinónimos individuales en máquinas de desarrollo que se nombran de manera idéntica a los sinónimos en bases de datos de testing que también reciben el mismo nombre en nuestros entornos de producción. Así que en dev, puede verse así:

CREATE SYNONYM [dbo].[mySynonym] FOR [LocalDevDb].[Database].[Schema].[object] 

En testing / qa:

 CREATE SYNONYM [dbo].[mySynonym] FOR [TestServerDb].[Database].[Schema].[object] 

y finalmente, producción:

 CREATE SYNONYM [dbo].[mySynonym] FOR [ProductionDb].[Database].[Schema].[object] 

Para evitar conflictos derivados de los sinónimos (porque como se puede ver, los nombres de los serveres son diferentes, pero el rest del nombre completo es el mismo), hemos intentado excluirlos de SQL Source Control en commit utilizando filters.

Sin embargo, hacer esto también ha provocado que también se ignore cualquier object que use el sinónimo. Estamos trabajando en esto ahora simplemente sin verificar el sinónimo, pero obviamente esto no es sostenible.

¿Esto es por layout? ¿Alguien más ha visto este comportamiento del filter?

EDITAR – este flujo de trabajo y el uso de sinónimos de esta manera fue sugerido por el soporte RG, como un medio para superar los problemas de implementación y synchronization que tuvimos entre los entornos que tenían nombres de server vinculados completos a objects que eran diferentes entre entornos (o en algunos casos no necesarios) en absoluto, porque una database que vive en un server diferente en producción puede estar en el mismo host en dev o test)

Otra opción es implementar el sinónimo junto con las dependencies.

Por defecto, SQL Source Control utiliza la opción "Ignorar el nombre del server y de la database en los sinónimos". Esto le permite confirmar el Sinónimo (y sus dependencies) y luego, cuando otros desarrolladores recogen el sinónimo y lo editan para su entorno, ese cambio de nombre de db / server será ignorado por el Control de código fuente.

Más información aquí http://documentation.networking-gate.com/display/SC11/Setting+project+options

Resulta que por defecto las dependencies de sinónimos se omiten cuando filtra un object sinónimo. Por lo tanto, la resolución es editar el file OptionStore.xml en C: \ Users \% UserName% \ AppData \ Local \ Red Gate \ SQL Source Control 3 \ y modificar el elemento IgnoreSynonymDependencies de falso a verdadero. Tenga en count que esto tiene que hacerse para cada database para la que desee mostrar las dependencies de sinónimos.