Web デプロイを使用して 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; Integrated Security=true",computername="<a href="https://Community02:8172/msdeploy.axd?site=Default" rel="nofollow noreferrer">https://Community02:8172/msdeploy.axd?site=既定の Web サイト」,username=.\DeploymentService,password=*************,authType=basic -allowuntrusted
宛先が別のPCであるPCで実行します。
ただし、これは、作成した SQL Server でパブリック ロールを使用して「ローカル サービス」にログインしているかどうかに応じて、「無効なハンドル」または「クラス名が見つかりません」というエラーで失敗します。
予想される動作: Management Service Delegation でユーザー名を特定のアカウントに設定すると、指定したアカウントで MSDeploy が実行されることが予想されます。
実際の動作: ターゲット環境で SQL プロファイラーを使用してトレースしたところ、WMSvc が .\DeploymentService ではなくプロセス アカウント (LOCAL SERVICE) で msdeploy を実行することがわかりました。これがスクリプトの実行に失敗する理由です。SQLサーバーでLOCAL SERVICEアカウントがserveradminロールにマップされている場合、それは正常に機能します。.\DeploymentService アカウントで WMSvc を実行すると、正常に動作します。
したがって、基本的に、管理サービスの委任で「ユーザー名」を使用する方法はありません。そこで設定したものは問題ではありません。効果はありません。
誰もそれを機能させる方法を知っていますか?
キーワード: WebDeploy、WMSvc、dbDacFx、偽装、委任