【发布时间】: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