マルチテナント SQL データベースにアクセスする顧客のサーバーで実行される EXE アプリを構築する必要があります。
Web アプリで使用するテーブルごとに、列 SubscriberId を使用して、SubscriberId に属するレコードのみにユーザーを制限します。これは (サーバー上で) 完全に正常に機能します。
Exchange の連絡先と予定を SQL テーブルに同期する、サーバー上で実行される Exchange to SQL サービスがあります。問題は、顧客がサーバー上のデータにアクセスするための Exchange 'ApplicationImpersonation' ロールを付与する必要があることです。これは、顧客の Exchange データベース ストア全体にアクセスできることを意味します。
ほとんどの顧客は、そのアクセス レベルを喜んで許可してくれますが、一部の顧客は、そのレベルのアクセスを望んでいません。それは理解できます。
私たちの同期アプリは C# .NET コンソール アプリであり、エンド ユーザーがサーバーにアプリをインストールして、サーバーとリモートで同期できるように調整したいと考えています。
質問: SQL Server 2008R2 で、WHERE SubscriberId = 201 (たとえば) でフィルタリングされたそのユーザーの行にのみアクセスできるユーザーを作成することは可能ですか?
サーバーへのポート 1433 アクセスを許可し、App.config の接続文字列でユーザー/パスワードを使用します。
その場合、Windows exe アプリで管理パネルを作成して、その SQL ユーザー/パスワードと Exchange スーパーユーザーをセットアップできます。その後、リモートで同期できますが、SQL データベース内の自分のレコードのみが表示されます。
それ以外の場合は、API と別のセキュリティ スキームを使用するようにアプリを作り直す必要があるようです。それは明らかにもっと多くの作業になります:-(
ありがとう、チャールズ