【问题标题】:Web Deploy Impersonation (Management Service Delegation) does not workWeb 部署模拟(管理服务委派)不起作用
【发布时间】:2012-08-18 07:53:16
【问题描述】:

我正在尝试使用 web deploy 来部署我的 dacpac 包,它会执行一些 sql 脚本。 我有一个名为 .\DeploymentService 的本地 Windows 帐户,它位于本地管理员组中,我想拥有数据库并执行脚本。

为此 - 我相应地配置委派 - 在管理服务委派中,我为 dbDacFx 规则设置“特定用户” = .\DeploymentService 提供密码

我在 SQL Server 中根据 serveradmin 登录创建。我的 WMSvc 在 LOCAL SERVICE 帐户下执行。

我使用以下命令行参数进行部署:

msdeploy.exe -动词:同步 -source:dbDacFx="C:\Main\Src\Community.DB\bin\Debug\Community.DB.dacpac" -dest:dbDacFx="Data Source=.;Database=CommunityInt; Integrated Security=true",computername=”https://Community02:8172/msdeploy.axd?site=Default 网站”,用户名=.\DeploymentService,密码=*************,authType=basic -allowuntrusted

我在我的电脑上执行它,目的地是不同的电脑。

但是,这将失败并出现错误“无效句柄”或“找不到类名”,具体取决于我是否在我的 SQL Server 中创建了具有公共角色的“本地服务”登录。

预期行为: 当我在管理服务委派中将用户名设置为特定帐户时,我希望 MSDeploy 在我指定的帐户下执行。

实际行为: 我在目标环境中使用 SQL 探查器进行了跟踪,发现 WMSvc 在其进程帐户 (LOCAL SERVICE) 下执行 msdeploy 而不是 .\DeploymentService,这就是脚本执行失败的原因。如果在 SQL Server 中我有 LOCAL SERVICE 帐户映射到 serveradmin 角色,那么它工作正常。如果我在 .\DeploymentService 帐户下执行 WMSvc,它也可以正常工作。

所以基本上没有办法在管理服务委派中使用“用户名” - 你在那里设置什么都没关系 - 它没有任何效果。

有人知道怎么做吗?

关键字:WebDeploy、WMSvc、dbDacFx、模拟、委托

【问题讨论】:

  • 一个奇怪的快速问题...如果您希望连接使用 DeploymentService 凭据,是否有理由为 SpecificUser 设置它,而不是仅仅将 IdentityType 保留为“CurrentUser”(因为反正你要联系谁)?
  • 我也试过了——不会改变任何东西。此外,我假设“CurrentUser”应该表示已通过 WMSvc 身份验证的用户 - 如果我使用 IIS 用户进行身份验证,这将不起作用。
  • 我联系了 MS Deploy 开发人员,他们确认这是一个错误,可能会在明年的下一个版本 (WebDeploy 4) 中修复
  • 关于 WebDeploy 4 的任何消息,或者这是另一个被遗弃的微软技术?

标签: impersonation delegation webdeploy dac


【解决方案1】:

大家好,很遗憾听到您遇到这个问题。我想让您知道,我们在 dbDacFx 提供程序/MSDeploy 中存在一个错误,当在 WMSvc 场景中与 dbDacFx 提供程序一起使用时,它会阻止 SQL Auth 工作。

我们还没有收到足够多的反馈,因此无法保证为 MSDeploy 提供服务以解除阻止。如果您受到此影响,最好的办法是在http://aspnet.uservoice.com 创建一个条目并投票。如果我们获得足够的选票,那么我们可以考虑发布更新以解除阻止。很抱歉这个坏消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    相关资源
    最近更新 更多