2016-09-08 1 views
0

J'essaie de déployer un projet MVC avec une base de données en utilisant Octopus. Lorsque l'étape de déploiement de la base de données est frappé, je reçois l'erreur suivante:Microsoft.SqlServer.Dac numéro

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 

Le fichier Deploy.ps1 ressemble à ceci:

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 
} 

J'utilise le package NuGet pour Microsoft. SqlServer.Dac v 1.0.1 et le package NuGet pour Microsoft.SqlServer.TransactSql.ScriptDom v 13.0.1601.5. Ces deux paquets NuGet sont actuellement les derniers pour ces dlls au meilleur de ma connaissance. Le dacpac est orienté vers SQL Server 2014. Je ne suis pas sûr de savoir quelles autres informations seraient utiles ici. Le serveur sur lequel je déploie n'a pas SqlPackage.exe, donc je ne peux pas l'utiliser. Toute aide est très appréciée. Je vous remercie.

Répondre

0

A partir des journaux, il ressemble à son incapable de trouver l'assemblée « Microsoft.SqlServer.TransactSql.ScriptDom » à l'endroit étant recherche

+0

Oui, il dit qu'il est à la recherche de la version 12.0.0, mais j'ai la version 13.0.1 – Michelle

+0

Add-Type -path ((Get-Item -Path ". \" -Verbose) .FullName + "\ bin \ Microsoft.SqlServer.TransactSql.ScriptDom.dll") .. Est-ce que cela regarde le bon répertoire Peut être que vous pourriez essayer de charger ceci en donnant un chemin explicite - par exemple C: \ Program Files (x86) \ Microsoft SQL Server \ 120 \ SDK \ Assemblies – vikram