2016-09-07 5 views
0

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

An error occurred during deployment plan generation. Deployment cannot continue. 

Error SQL72018: Database Options could not be imported but one or more of these objects exist in your source. 
    at Microsoft.SqlServer.Dac.DacServices.CreateController(SqlDeployment deploymentEngine, ErrorManager errorManager) 
    at Microsoft.SqlServer.Dac.DeployOperation.<>c__DisplayClass3.<>c__DisplayClass5.<CreatePlanInitializationOperation>b__1() 
    at Microsoft.Data.Tools.Schema.Sql.Dac.OperationLogger.Capture(Action action) 
    at Microsoft.SqlServer.Dac.DeployOperation.<>c__DisplayClass3.<CreatePlanInitializationOperation>b__0(Object operation, CancellationToken token) 
    at Microsoft.SqlServer.Dac.Operation.Microsoft.SqlServer.Dac.IOperation.Run(OperationContext context) 
    at Microsoft.SqlServer.Dac.ReportMessageOperation.Microsoft.SqlServer.Dac.IOperation.Run(OperationContext context) 
    at Microsoft.SqlServer.Dac.OperationExtension.CompositeOperation.Microsoft.SqlServer.Dac.IOperation.Run(OperationContext context) 
    at Microsoft.SqlServer.Dac.OperationExtension.CompositeOperation.Microsoft.SqlServer.Dac.IOperation.Run(OperationContext context) 
    at Microsoft.SqlServer.Dac.OperationExtension.CompositeOperation.Microsoft.SqlServer.Dac.IOperation.Run(OperationContext context) 
    at Microsoft.SqlServer.Dac.DeployOperation.Microsoft.SqlServer.Dac.IOperation.Run(OperationContext context) 
    at Microsoft.SqlServer.Dac.OperationExtension.Execute(IOperation operation, DacLoggingContext loggingContext, CancellationToken cancellationToken) 
    at Microsoft.SqlServer.Dac.DacServices.InternalDeploy(IPackageSource packageSource, Boolean isDacpac, String targetDatabaseName, DacDeployOptions options, CancellationToken cancellationToken, DacLoggingContext loggingContext) 
    at Microsoft.SqlServer.Dac.DacServices.Deploy(DacPackage package, String targetDatabaseName, Boolean upgradeExisting, DacDeployOptions options, Nullable`1 cancellationToken) 
    at CallSite.Target(Closure , CallSite , Object , Object , Object , Boolean , Object) 
Errors occurred while modeling the target database. Deployment can not continue. 
    at Microsoft.Data.Tools.Schema.Sql.Deployment.SqlDeployment.ThrowIfErrors(String message, ErrorManager errors, Object category) 
    at Microsoft.Data.Tools.Schema.Sql.Deployment.SqlDeploymentEndpointServer.OnLoad(ErrorManager errors, DeploymentEngineContext context) 
    at Microsoft.Data.Tools.Schema.Sql.Deployment.SqlDeployment.PrepareModels() 
    at Microsoft.Data.Tools.Schema.Sql.Deployment.SqlDeployment.InitializePlanGeneratator() 
    at Microsoft.Data.Tools.Schema.Sql.Deployment.SqlDeployment.CreateController(Action`1 msgHandler) 
    at Microsoft.SqlServer.Dac.DacServices.CreateController(SqlDeployment deploymentEngine, ErrorManager errorManager) 

Вот файл Deploy.ps1

# Add the DLL 
# For 64-bit machines 
Write-Host "Add Types" 
Add-Type -path ((Get-Item -Path ".\" -Verbose).FullName + "\bin\Microsoft.SqlServer.Dac.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") 

#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 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 

Проект SQL нацелен на SQL Server 2012. Я не знаю, какая другая информация была бы здесь полезной, поэтому дайте мне знать, если вам нужна дополнительная информация. Вся помощь приветствуется. Спасибо за ваше время!

+0

Вы проверили то же самое, запустив SQLPackage.exe, предоставив требуемые параметры. Вы можете получить фактическую ошибку. Ошибка выглядит так: Powershell не может взять контроль над целевой базой данных, это может быть вызвано многими причинами. В одном из моих случаев это также было связано с брандмауэром. Вы можете попробовать запустить SQLPackage.exe с этого локального компьютера в качестве ну .. –

+0

К сожалению, пакет SQL не установлен на серверах, к которым я пытаюсь установить, и я стараюсь не устанавливать его повсюду. – Michelle

ответ