Ich versuche, ein MVC-Projekt zusammen mit einer Datenbank mit Octopus bereitzustellen. Wenn der Schritt für die Datenbank bereitstellen getroffen wird erhalte ich folgende Fehlermeldung:Microsoft.SqlServer.Dac Problem
Types : {Microsoft.SqlServer.Dac.BacPackage,
Microsoft.SqlServer.Dac.NestedDeploymentPropertyAttribute,
Microsoft.SqlServer.Dac.DacExportOptions,
Microsoft.SqlServer.Dac.DacImportOptions...}
LoaderExceptions : {System.IO.FileNotFoundException: Could not load file or
assembly 'Microsoft.SqlServer.TransactSql.ScriptDom,
Version=12.0.0.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91' or one of its
dependencies. The system cannot find the file specified.
File name: 'Microsoft.SqlServer.TransactSql.ScriptDom,
Version=12.0.0.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91'
WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry
value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to
1.
Note: There is some performance penalty associated with
assembly bind failure logging.
To turn this feature off, remove the registry value
[HKLM\Software\Microsoft\Fusion!EnableLog].
, System.IO.FileNotFoundException: Could not load file or
assembly 'Microsoft.SqlServer.TransactSql.ScriptDom,
Version=12.0.0.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91' or one of its
dependencies. The system cannot find the file specified.
File name: 'Microsoft.SqlServer.TransactSql.ScriptDom,
Version=12.0.0.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91'
WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry
value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to
1.
Note: There is some performance penalty associated with
assembly bind failure logging.
To turn this feature off, remove the registry value
[HKLM\Software\Microsoft\Fusion!EnableLog].
}
Message : Unable to load one or more of the requested types Retrieve
the LoaderExceptions property for more information.
Data : {}
InnerException :
TargetSite : System.RuntimeType[]
GetTypes(System.Reflection.RuntimeModule)
StackTrace : at
System.Reflection.RuntimeModule.GetTypes(RuntimeModule
module)
at System.Reflection.Assembly.GetTypes()
at Microsoft.PowerShell.Commands.AddTypeCommand.LoadAssemblyFromPathOrName(List`1 generatedTypes)
at
Microsoft.PowerShell.Commands.AddTypeCommand.EndProcessing()
at
System.Management.Automation.CommandProcessorBase.Complete()
HelpLink :
Source : mscorlib
HResult : -2146232830
Die Deploy.ps1 Datei sieht wie folgt aus:
try{
# Add the DLL
# For 64-bit machines
Write-Host "Add Microsoft.SqlServer.Dac.dll"
Add-Type -path ((Get-Item -Path ".\" -Verbose).FullName + "\bin\Microsoft.SqlServer.Dac.dll")
Write-Host "Add Microsoft.SqlServer.TransactSql.ScriptDom.dll"
Add-Type -path ((Get-Item -Path ".\" -Verbose).FullName + "\bin\Microsoft.SqlServer.TransactSql.ScriptDom.dll")
# Create the connection string
$services = New-Object Microsoft.SqlServer.Dac.DacServices ("Data Source=$dbSource;User Id=$dbAdminUser;Password=$dbAdminPassword")
Write-Host "Load the dacpac " + ((Get-Item -Path ".\" -Verbose).FullName + "\Resources\Database.publish.xml")
#Load the dacpac
$dacpac = ((Get-Item -Path ".\" -Verbose).FullName + "\Resources\Database.dacpac")
$dacpacoptions = ((Get-Item -Path ".\" -Verbose).FullName + "\Resources\Database.publish.xml")
Write-Host "Add variables"
#Add the variables to the options
Write-Host $dacpac
Write-Host $dacpacoptions
Write-Host "setting dp"
#Load dacpac from file & deploy to database
$dp = [Microsoft.SqlServer.Dac.DacPackage]::Load($dacpac)
Write-Host "dacProfile set"
#Read a publish profile XML to get the deployment options
$dacProfile = [Microsoft.SqlServer.Dac.DacProfile]::Load($dacpacoptions)
Write-Host "Add dbName"
$dacProfile.DeployOptions.SqlCommandVariableValues["dbName"] = $dbName
Write-Host "Add dbUser"
$dacProfile.DeployOptions.SqlCommandVariableValues["dbUsername"] = $dbUser
Write-Host "Add dbPassword"
$dacProfile.DeployOptions.SqlCommandVariableValues["dbPassword"] = $dbPassword
Write-Host "About to deploy the dacpac"
# Deploy the dacpac
$services.Deploy($dp, $dbName, $TRUE, $dacProfile.DeployOptions)
# Configure IIS
.\DeployScripts\IISConfiguration.ps1
}
catch [Exception]
{
$_.Exception|format-list -force
Exit -1
}
ich das NuGet-Paket für Microsoft bin mit. SqlServer.Dac v 1.0.1 und das NuGet-Paket für Microsoft.SqlServer.TransactSql.ScriptDom v 13.0.1601.5. Beide NuGet-Pakete sind derzeit die neuesten für diese DLLs nach meinem besten Wissen. Der dacpac ist auf SQL Server 2014 ausgerichtet. Ich bin mir nicht sicher, welche anderen Informationen hier nützlich wären. Der Server, auf dem ich die Bereitstellung ausführe, verfügt nicht über SqlPackage.exe, so dass ich das nicht verwenden kann. Jede und jede Hilfe wird sehr geschätzt. Vielen Dank.
Ja, es sagt, es ist für Version 12.0.0 sucht, jedoch habe ich Version 13.0.1 – Michelle
Add-Type -path ((Get-Item -Path ". \" -Verbose) .FullName + "\ bin \ Microsoft.SqlServer.TransactSql.ScriptDom.dll") .. Ist dies das richtige Verzeichnis? .. Möglicherweise können Sie versuchen, dies zu laden, indem Sie einen expliziten Pfad angeben - z. B. C: \ Programme (x86) \ Microsoft SQL Server \ 120 \ SDK \ Assemblies – vikram