1

Web デプロイを使用して 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; 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、偽装、委任

4

1 に答える 1

1

こんにちは、この問題に直面しているとのこと、申し訳ありません。dbDacFx プロバイダー/MSDeploy にバグがあり、WMSvc シナリオで dbDacFx プロバイダーを使用すると SQL Auth が機能しないことをお知らせしたいと思います。

これをブロック解除するために MSDeploy にサービスを提供することを保証するのに十分なフィードバックをまだ受け取っていません。この影響を受けている場合は、http://aspnet.uservoice.comでエントリを作成して投票することをお勧めします。十分な投票が得られれば、これをブロック解除するためのアップデートを出荷することを検討できます。悪い知らせで申し訳ありません。

于 2012-09-07T17:45:00.340 に答える