Web部署 - DACPAC / XML输出

时间:2014-05-06 19:04:52

标签: sql xml visual-studio web-deployment

我正在尝试部署Web应用程序。我可以很好地部署网站部分,但SQL数据库不会部署。我在开发机器上的VS2012中收到的错误是:

错误24 Web部署任务失败。 ((5/6/2014 1:36:23 PM)在远程计算机上处​​理请求时发生错误。)

(2014年5月6日下午1:36:23)在远程计算机上处​​理请求时发生错误。 服务器遇到处理请求的问题。有关详细信息,请与服务器管理员联系。

在web / sql server上,事件日志提供:

*User: 
Client IP: 192.168.254.122
Content-Type: application/msdeploy
Version: 9.0.0.0
MSDeploy.VersionMin: 7.1.600.0
MSDeploy.VersionMax: 9.0.1762.0
MSDeploy.Method: Sync
MSDeploy.RequestId: ea61751c-29cf-4764-8ad3-210cedc8fa53
MSDeploy.RequestCulture: en-US
MSDeploy.RequestUICulture: en-US
ServerVersion: 9.0.1762.0
Skip: objectName="^configProtectedData$"
Provider: auto, Path: 
A tracing deployment agent exception occurred that was propagated to the client. Request ID 'ea61751c-29cf-4764-8ad3-210cedc8fa53'. Request Timestamp: '5/6/2014 1:36:13 PM'. Error Details:
ERROR_CANNOT_PROCESS_DACPAC_OUTPUT Microsoft.Web.Deployment.DeploymentDetailedException: The output received from executing dacpac in a seperate process was not valid xml.  Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_CANNOT_PROCESS_DACPAC_OUTPUT. ---> 

        System.Xml.XmlException: Data at the root level is invalid. Line 19, position 10.
           at System.Xml.XmlTextReaderImpl.Throw(Exception e)
           at System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace()
           at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
           at System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc)
           at System.Xml.XmlDocument.Load(XmlReader reader)
           at System.Xml.XmlDocument.LoadXml(String xml)
           at Microsoft.Web.Deployment.SqlDacPacProvider.ProcessExeOutput()
           --- End of inner exception stack trace ---
           at Microsoft.Web.Deployment.SqlDacPacProvider.ProcessExeOutput()
           at Microsoft.Web.Deployment.SqlDacPacProvider.RunExecutableAsync(String exeName, String arguments, Int32 waitInterval, Int32 retryAttempts)
           at Microsoft.Web.Deployment.SqlDacPacProvider.Add(DeploymentObject source, Boolean whatIf)
           at Microsoft.Web.Deployment.DeploymentObject.Add(DeploymentObject source, DeploymentSyncContext syncContext)
           at Microsoft.Web.Deployment.DeploymentSyncContext.HandleAdd(DeploymentObject destObject, DeploymentObject sourceObject)
           at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildren(DeploymentObject dest, DeploymentObject source)
           at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, DeploymentObject source)
           at Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(DeploymentObject destinationObject, DeploymentObject sourceObject)
           at Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, ContentRootTable contentRootTable, Nullable`1 syncPassId, String syncSessionId)
           at Microsoft.Web.Deployment.DeploymentAgent.HandleSync(DeploymentAgentAsyncData asyncData, Nullable`1 passId)
           at Microsoft.Web.Deployment.DeploymentAgent.HandleRequestWorker(DeploymentAgentAsyncData asyncData)
           at Microsoft.Web.Deployment.DeploymentAgent.HandleRequest(DeploymentAgentAsyncData asyncData)*

当我"测试连接"对于VS2012的SQL数据库,它工作正常,所以我知道它不是连接/身份验证问题。看起来dacpac文件可能使用了错误的XML版本?如果没有人能够解决给出的错误,我有办法手动部署数据库吗?

1 个答案:

答案 0 :(得分:2)

我遇到了这个问题,最终导致了权限问题。

用户只有db_datareader,db_datawriter和execute。

我需要给SSDT用户db_owner,然后我才能解决这个错误。