2016-09-08 1 views
0

Я пытаюсь развернуть проект MVC вместе с базой данных с помощью Octopus. Когда шаг для развертывания базы данных ударен я получаю следующее сообщение об ошибке:Проблема Microsoft.SqlServer.Dac

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 

Файл Deploy.ps1 выглядит следующим образом:

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 
} 

Я использую пакет NuGet для Microsoft. SqlServer.Dac v 1.0.1 и пакет NuGet для Microsoft.SqlServer.TransactSql.ScriptDom v 13.0.1601.5. Оба этих пакета NuGet в настоящее время являются последними для этих DLL, насколько мне известно. Дакпак ориентирован на SQL Server 2014. Я не уверен, какая другая информация была бы здесь полезной. На сервере, на котором я развертываюсь, нет SqlPackage.exe, поэтому я не могу его использовать. Любая помощь очень ценится. Спасибо.

ответ

0

Из бревен он выглядит как его не удалось найти сборку «Microsoft.SqlServer.TransactSql.ScriptDom» в том месте, будучи поиска для

+0

Да, он говорит, что ищет версии 12.0.0, однако у меня есть версия 13.0.1 – Michelle

+0

Add-Type -path ((Get-Item -Path ". \" -Verbose) .FullName + "\ bin \ Microsoft.SqlServer.TransactSql.ScriptDom.dll") .. Это смотрит на правильный каталог .. Может быть, вы можете попробовать и загрузить это, указав явный путь - например, C: \ Program Files (x86) \ Microsoft SQL Server \ 120 \ SDK \ Assemblies – vikram

Смежные вопросы