2016-09-08 1 views
0

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.

Antwort

0

aus den Protokollen es wie sein Aussehen nicht in der Lage, die Montag „Microsoft.SqlServer.TransactSql.ScriptDom“ an der Stelle zu finden seine Suche nach

+0

Ja, es sagt, es ist für Version 12.0.0 sucht, jedoch habe ich Version 13.0.1 – Michelle

+0

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