2013-07-10 15 views
8

Ich möchte den Vergleich unten, um keinen Unterschied zu zeigen. Gemäß MSDN (siehe Schritt 7) sollte eine SQLCMD Variablen Funktion verfügbar sein, die ich nicht finden kann. Diese Dokumentation ist für SQL 2010, aber ich verwende 2012. Es scheint keine Version 2012 der auf dieser Seite verfügbaren Dokumentation zu geben.SQLCMD-Variablen und SSDT-Schema vergleichen Problem

Wie kann ich den Wert $(DatabaseName) angeben, damit dieser Vergleich funktioniert? Ich habe bereits den Wert in meinen Datenbank-Projekteinstellungen angegeben.

SQL Schema Compare

+0

Ich glaube nicht, dass Sie dies zwischen einem Projekt und einer Live-Datenbank tun können. Auch diese Seite scheint darauf hinzuweisen: "Sie können nur SQLCMD-Variablen angeben, wenn Sie zwei Projekte vergleichen" Was passiert, wenn Sie ein Skript zum Aktualisieren Ihrer Datenbank generieren? –

+0

Wenn dies für eine Tabelle gilt, die lokal für die Datenbank ist, warum geben Sie dann den Datenbanknamen an? Verwenden Sie einfach "dbo.ClaimProvider" und Sie sollten alles eingestellt sein. Ich weiß, dass das bei datenbankübergreifenden Abfragen anders ist, aber das scheint nicht über Datenbanken hinweg zu gehen. –

+0

@PeterSchott Ich mache viele datenbankübergreifende Verknüpfungen, daher sieht es besser aus, wenn alle Namen konsistent sind, anstatt zwischen 3 und 2 Teilenamen zu wechseln. –

Antwort

3

Sie können Schema zu vergleichen Ihre Entwicklung Datenbank, anstatt das Projekt, zu der Live-Datenbank dieses Problem umgehen. Beachten Sie, dass Sie das Projekt zuerst in Ihrer Entwicklungsdatenbank bereitstellen müssen.

FYI - Die Tatsache, dass die Variablen nicht substituiert sind, ist nur ein Problem im Vergleichsfenster. Die Variablen verursachen während des Vergleichs keine falschen Unterschiede (mit anderen Worten ersetzt Schema Compare die Variablen beim Vergleich), und die Variablen werden beim Aktualisieren der Zieldatenbank ersetzt.

+0

Ich versuche zu erfassen, was Entwickler im Dev geändert haben Datenbank und aktualisieren Sie dann das Projekt. Wenn ich das Projekt für den Entwickler bereitstellen würde, würde ich ihre Änderungen nicht löschen? –

+1

Es kann ein beliebiger Server sein, der für Entwicklungszwecke verwendet wird, vielleicht sogar Ihre lokale db-Instanz oder ein gemeinsamer Server, der für Schemavergleiche reserviert ist. – Keith

+0

ODER hier ist ein Gedanke ... MS bekommen, um den Fehler in ihrer Compare-Funktion lol zu beheben – user5855178