1

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

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

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

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

msdeploy.exe -verb:sync -source:dbDacFx="C:\Main\Src\Community.DB\bin\Debug\Community.DB.dacpac" -dest:dbDacFx="Data Source=.;Database=CommunityInt; 集成Security=true",computername=”<a href="https://Community02:8172/msdeploy.axd?site=Default" rel="nofollow noreferrer">https://Community02:8172/msdeploy.axd?site=默认网站”,用户名=.\DeploymentService,密码=*************,authType=basic -allowuntrusted

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

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

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

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

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

有谁知道如何使这项工作?

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

4

1 回答 1

1

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

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

于 2012-09-07T17:45:00.340 回答