MSBuild ExtensionPack SQL2008.Database -Aufgabe
-
26-10-2019 - |
Frage
Ich versuche, SQL -Sachen (eine Datenbank zurückzugeben, eine Datenbank wiederherzustellen, einige Skriptdateien auszuführen) als Teil eines MSBuild -Skripts. Die SQL2008.Database -Aufgabe aus dem MSBUILD -Erweiterungspaket schien eine gute einfache Möglichkeit zu sein. Ich kann jedoch keine Möglichkeit finden, eine Serverinstanz oder ein Benutzername und ein Passwort anzugeben. Es fällt mir schwer zu glauben, dass es auf die Standardinstanz auf der Maschine beschränkt ist, auf der Sie aufbauen und eine Verbindung herstellen möchten, wenn der Benutzer MSBuild ausgeführt wird, aber ich kann keinen Weg finden, etwas anderes zu tun. Dies ist die Dokumentation, aus der ich arbeite. Kann jemand erklären, wie man das tut, oder muss ich mir einen anderen Ansatz ansehen?
Lösung 2
Ich entdeckte, dass die MSBuild.ExtensionPack.BaseTask
Klasse hat die Eigenschaften MachineName
UserName
und UserPassword
. SQL2008.Database
Klasse erbt aus dieser Klasse. Ich bin es an eine Dokumentation im MSDN -Stil gewöhnt, in der die ererbten Mitglieder in der abgeleiteten Klasse dokumentiert sind, sodass ich nicht daran gedacht habe, sie dort zu suchen, obwohl ich es sollte. Es scheint jedoch ein seltsamer Ort für sie zu sein, da sie im Kontext vieler anderer Klassen, aus denen er erbt MSBuild.ExtensionPack.BaseTask
.
Andere Tipps
Es gibt Benutzername- und Benutzerpassword -Eigenschaften, die Sie verwenden können:
<MSBuild.ExtensionPack.Sql2008.Database
MachineName="$(SQLServer)"
TaskAction="Backup"
DatabaseItem="$(SQLDatabaseName)"
DataFilePath="$(SQLBackupLocation)"
UserName="$(SQLUserName)"
UserPassword="$(SQLPassword)" />
Hat diese Aufgabe nicht das Maschinename -Mitglied? Denken Sie, das ist nur der SQL -Instanzname, den Sie benötigen.
Ich verwende die Aufgabe msbuild.extensionPack.sqlserver.sqLexecute und eine SQL -Anweisung, um alles andere zu tun, z.
<MSBuild.ExtensionPack.SqlServer.SqlExecute TaskAction="ExecuteReader"
Sql="RESTORE DATABASE $(DatabaseName) FROM DISK = N'$(RestoreFileDestination)\Source\$(Branch)\Build\$(DatabaseFile)' WITH FILE = 1,MOVE N'Accelerate' TO N'$(dataDir)\$(DatabaseName)_1.LDF', MOVE N'Accelerate_log' TO N'$(logsDir)\$(DatabaseName)_2.LDF', NOUNLOAD, REPLACE, KEEP_CDC, STATS = 10"
ConnectionString="Data Source=Localhost\SQLExpress;Initial Catalog=master;Integrated Security=True"
CommandTimeout="660">
Sie würden nie an all die Optionen denken, die ich scheine zu brauchen ...