2016-03-23 8 views
0

Im Moment ich auf einen Server am Bereitstellung und Teil des Einsatzes, wenn aus Visual Studio veröffentlicht, ruft ein Skript, das einen Benutzer zu einer Gruppe fügt hinzu:Visual Studio - Datenbank bereitstellen - Datenbankparameter

ALTER ROLE [geodeveloper] ADD MEMBER [OTWGEODI01\GEO Application Developers]; 

der Server I OTWGEODI01

Allerdings verwende, rief ich ein neues Veröffentlichungsprofil erstellen, die auf OTWGEODI02 Punkte - aber das Skript nicht oben, wie es jetzt dort Mitglied OTWGEODI01\GEO Application Developers

ist gibt es eine Möglichkeit, ich hav kann e ein Parameter als Teil der Veröffentlichung, die diesen Wert im Skript ändert?

Ich habe versucht, Eigenschaften zu meiner Datenbanklösung hinzuzufügen, aber ein cariable namens ServerName hinzufügen. Ich habe es auf 'OTWGEODI02' gesetzt. Dann ging ich zu einem meiner Skripte, die einen direkten Bezug zu den Servernamen hatte:

ALTER ROLE [geodeveloper] ADD MEMBER [OTWGEODI01\GEO Application Developers]; 

und ersetzte sie durch:

ALTER ROLE [geodeveloper] ADD MEMBER [[$(ServerName)\GEO Application Developers]; 

Aber es sagt mir, ich habe eine ungültige Syntax in der Nähe von ‚\‘

Können Sie einen Fehler sehen, den ich mache? Außerdem muss ich jedes Mal, wenn ich in einer anderen Umgebung veröffentlichen muss, die Datenbankeigenschaften aktualisieren. Oder kann das irgendwie auf der .publish Datei basieren, die ich verwende. (Ich habe eine .publish Datei pro Datenbank). Vielleicht kann ich mit einer Veröffentlichungsdatei enden und irgendwie die Lösungskonfigurationen auswählen und meine Umgebungen dort hinzufügen?

Edit:

Ergebnisse in einem veröffentlichen Fehler sagen:

SQL72014: .Net SqlClient Data Provider: Msg 15401, Ebene 16, Status 1, Zeile 1 Windows NT-Benutzer oder Gruppe ‚($ ServerName) \ GEO Anwendung Entwickler nicht gefunden. Überprüfen Sie den Namen erneut.

CREATE USER [($ServerName)\GEO Application Developers] FOR LOGIN [($ServerName)\GEO Application Developers]; 

Es ist nicht die Variable zu ersetzen schien ...

auch:

CREATE USER [$(ServerName)\GEO Application Developers] FOR LOGIN [$(ServerName)\GEO Application Developers]; 

Ergebnisse in einem Zeitfehler gebaut, dass ich nicht hier Parameter setzen kann.

Antwort

0

Sie können Variablen in den Projekteigenschaften definieren (Definieren einer neuen Variablen in der Registerkarte SQLCMD-Variablen). Dann können Sie diese Variable in Ihren Skripten verwenden (wie [$ (ServerName)]).
Während der Veröffentlichung können Sie je nach dem Server, auf dem die Veröffentlichung erfolgen soll, unterschiedliche Werte festlegen.

+0

Dank @Amit - Ich habe gerade versucht, aber einen seltsamen Fehler bekommen. Ich habe meine Frage basierend auf Ihrer Antwort aktualisiert. – Craig

+0

Das ist eine schließende ']' in Ihrem Code fehlt. – AKS

+0

Im Nachhinein können Sie auch die Systemvariable '@@ SERVERNAME' verwenden, die Ihnen den Servernamen holt. Sie müssen dann Ihre SQL-Abfrage erstellen und ausführen (dynamische Abfrage denke ich). – AKS

Verwandte Themen