Ich verwende SSDT (und sqlproj) für unsere MSSQL-Projekte. Wir müssen einige Variablen festlegen, die bei der Veröffentlichung in jeder Umgebung festgelegt werden müssen.Wie mache ich SSDT Profile.xml SqlCmdVariable eine leere Zeichenfolge oder optional
Das funktioniert gut in den meisten unserer Umgebungen, wo wir allen Variablen Werte zuweisen, aber wenn wir in unserer Live-Datenbank veröffentlichen, würde ich gerne in der Lage sein, DomainPrefix eine leere Zeichenfolge zu machen.
Wenn ich versuche, die Live.profile.xml zu verändern DomainPrefix zu keinem Wert setzen ich den Fehler: „Ein Fehler bei der Bereitstellung Plangenerierung aufgetreten Deployment nicht fortgesetzt werden kann Fehlende Werte für die folgenden Variablen Sqlcmd:.. DomainPrefix. "
Das, was ich würde die Live.profile.xml mag aussehen:
<?xml version="1.0" encoding="UTF-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
<PropertyGroup>
<TargetDatabaseName>DB_NAME</TargetDatabaseName>
<DeployScriptFileName>DB_NAME.sql</DeployScriptFileName>
<TargetConnectionString>CONNECTION_STRING</TargetConnectionString>
<ProfileVersionNumber>1</ProfileVersionNumber>
</PropertyGroup>
<ItemGroup>
<SqlCmdVariable Include="DomainPrefix">
<Value></Value>
</SqlCmdVariable>
<SqlCmdVariable Include="Environment">
<Value>live</Value>
</SqlCmdVariable>
</ItemGroup>
</Project>
Wer weiß, wie ein SqlCmdVariable auf einen leeren Wert zu setzen oder es sich um eine optionale Variable machen?
Verwendung:
- VS 2013 sqlproj
- SqlPackage.exe auf die an die DB von der Kommandozeile veröffentlichen laufen
Wie verwenden Sie DomainPrefix? Ist das ein Teil von Pre/Post-Skripten, die in Objekten/Code, Namen von Servern oder etwas anderem verwendet werden?Wenn Sie nur das für Pre/Post-Skripte verwenden, können Sie diese Skripte möglicherweise mit einem etwas anderen Abschnitt für die Produktion bearbeiten. –
DomainPrefix wird speziell in einem Post-Skript verwendet, und wir haben etwas Code, um damit umzugehen - aber es ist auch eine von mehreren Variablen, die wir als leere Zeichenfolge setzen wollen, also wäre es gut zu wissen, ob es einen Weg gibt es leer/optional. – Saan
Mir ist keine Möglichkeit bekannt, weshalb ich sicherstellen wollte, dass Sie es nur in einem Post-Skript verwenden. Sie können nach einem Wert suchen (z. B. "Prod") und ihn leer lassen, wenn dies der Fall ist, und/oder einen Abschnitt für die Produktion erstellen. Ich denke, dass MS niemals eine leere Variable in Betracht zieht, denn das könnte zu Verwüstungen führen, wenn sie im Code verwendet wird, insbesondere für DB-Namen. –