समाधान मिला, अगर कोई और इस पर चलता है तो पोस्टिंग। आपको बस अपने DacService के Message event पर सब्सक्राइब करने की आवश्यकता है।
सी # नमूना:
var services = new Microsoft.SqlServer.Dac.DacServices("data source=machinename;Database=ComicBookGuy;Trusted_connection=true");
var package = Microsoft.SqlServer.Dac.DacPackage.Load(@"C:\Database.dacpac");
var options = new Microsoft.SqlServer.Dac.DacDeployOptions();
options.DropObjectsNotInSource = true;
options.SqlCommandVariableValues.Add("LoginName", "SomeFakeLogin");
options.SqlCommandVariableValues.Add("LoginPassword", "foobar!");
services.Message += (object sender, Microsoft.SqlServer.Dac.DacMessageEventArgs eventArgs) => Console.WriteLine(eventArgs.Message.Message);
services.Deploy(package, "ComicBookGuy", true, options);
Powershell नमूना (ऑक्टोपस मूंछ द्वारा निष्पादित):
# This script is run by Octopus on the tentacle
$localDirectory = (Get-Location).Path
$tagetServer = $OctopusParameters["SQL.TargetServer"]
$databaseName = "ComicBookGuy"
Add-Type -path "$localDirectory\lib\Microsoft.SqlServer.Dac.dll"
$dacServices = New-Object Microsoft.SqlServer.Dac.DacServices ("data source=" + $tagetServer + ";Database=" + $databaseName + "; Trusted_connection=true")
$dacpacFile = "$localDirectory\Content\Unity.Quotes.Database.dacpac"
$dacPackage = [Microsoft.SqlServer.Dac.DacPackage]::Load($dacpacFile)
$options = New-Object Microsoft.SqlServer.Dac.DacDeployOptions
$options.SqlCommandVariableValues.Add("LoginName", $OctopusParameters["SQL.LoginName"])
$options.SqlCommandVariableValues.Add("LoginPassword", $OctopusParameters["SQL.LoginPassword"])
$options.DropObjectsNotInSource = $true
Register-ObjectEvent -InputObject $dacServices -EventName "Message" -Action { Write-Host $EventArgs.Message.Message } | out-null
$dacServices.Deploy($dacPackage, $databaseName, $true, $options)
powershell संस्करण मैं काम "Add_EventName" नहीं मिल सका में शैली इवेंट अधिसूचना काम कर रहा है इसलिए मुझे क्लंकी सेमीडलेट का उपयोग करना पड़ा। भावहीन।
स्रोत
2015-07-10 20:25:32
मैं बस की कोशिश की और यह के रूप में सी # और DacPac विधानसभा का उपयोग कर की उम्मीद काम करता है। बहुत बढ़िया जवाब! – Raffaeu
यह ध्यान देने योग्य है कि रजिस्टर-ऑब्जेक्टइवेंट असीमित रूप से काम करता है, इसलिए, मुख्य स्क्रिप्ट सभी संदेशों को संसाधित करने के लिए रजिस्टर-ऑब्जेक्टइवेंट लाइन की प्रतीक्षा नहीं करेगी और सभी घटनाओं को प्रदर्शित करने से पहले समाप्त हो सकती है। – Rod