我正在尝试使用web部署来部署我的dacpac软件包,后者执行一些sql脚本。 我有一个名为。\ DeploymentService的本地Windows帐户,它位于本地Administrators组中,我想拥有数据库并执行脚本。
为此 - 我相应地配置了委托 - 在管理服务委托中我为dbDacFx规则设置了“特定用户”=。\ DeploymentService提供密码
我在SQL Server中根据serveradmin登录创建。我的WMSvc在LOCAL SERVICE帐户下执行。
我使用以下命令行参数进行部署:
msdeploy.exe -verb:同步 -source:dbDacFx = “C:\主\ SRC \ Community.DB \ BIN \调试\ Community.DB.dacpac” -dest:dbDacFx =“Data Source =。; Database = CommunityInt; Integrated Security = true”,computername =“https://Community02:8172/msdeploy.axd?site=Default 网站“,username =。\ DeploymentService,password = *************,authType = basic -allowuntrusted
我在我的PC上执行它,目的地是不同的PC。
但是,如果在“我的SQL Server”中创建了“本地服务”登录名为“本地服务”,则会因“无效句柄”或“未找到类名”而失败。
预期行为: 当我在管理服务委派中将用户名设置为特定帐户时,我希望MSDeploy在我指定的帐户下执行。
实际行为: 我在目标环境中使用SQL profiler进行了跟踪,我发现WMSvc在其进程帐户(LOCAL SERVICE)下执行msdeploy而不是。\ DeploymentService,这就是脚本执行失败的原因。如果在SQL Server中我将LOCAL SERVICE帐户映射到serveradmin角色,那么它可以正常工作。如果我在。\ DeploymentService帐户下执行WMSvc,它也可以正常工作。
所以基本上没有办法在管理服务代表团中使用“用户名” - 无论你在那里设置什么都没关系 - 它没有效果。
有人知道如何做到这一点吗?
关键字:WebDeploy,WMSvc,dbDacFx,模拟,委派
答案 0 :(得分:1)
嘿伙计们,我很遗憾听到你遇到了这个问题。我想告诉您,我们在dbDacFx提供程序/ MSDeploy中有一个错误,它在WMSvc方案中与dbDacFx提供程序一起使用时阻止SQL Auth工作。
我们尚未收到足够的反馈意见,以保证为MSDeploy提供服务以解除阻止。如果您受此影响,最好的办法是在http://aspnet.uservoice.com创建一个条目并将其投票。如果我们获得足够的投票,那么我们可以考虑发布更新以解除阻止。抱歉,这是个坏消息。