我正在尝试使用 web deploy 来部署我的 dacpac 包,该包用于执行一些 sql 脚本。我有一个名为 .\DeploymentService 的本地 Windows 帐户,它位于本地管理员组中,我想拥有数据库并执行脚本。
为此 - 我相应地配置委派 - 在管理服务委派中,我为 dbDacFx 规则设置“特定用户” = .\DeploymentService 提供密码
我在 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、模拟、委托