2017-04-26 5 views
0

テストユーザーアカウントで、私たちが作成している新しいアプリケーションのデータベースにアクセスするのに問題があります。私は、私は次のエラーを取得するアプリ実行しようとするたびに:アプリで使用するには、そのアプリが属するスキーマにユーザーを関連付ける必要がありますか?

「基になるプロバイダーのオープンに失敗したログインユーザーOURDOMAIN \ App.Test_Userに失敗しました。」間違っているかを把握しようとしていると答えを探して

を私はこの質問に出くわしました:ADO.NET Connection String。私はその後、データベースを調べ、開発チームのデフォルトスキーマのすべての人が私たち自身のドメインログイン(それが何であるかはわかりません)と、私たちがすべて入っているデータベースの役割が私たちをdb_ownerに追加することに気付きました。ユーザーのデフォルトのスキーマはdboですが、私たちにはすべてのものを渡すように思えます。彼らは、データベースとアプリが使用する追加のスキーマに少なくともアクセスできる必要があります。しかし、その参照記事では、接続文字列でスキーマを指定することはできないという。だから私はEFを使ってどうやってそれを得るのか分かりません。私はここで何が欠けていますか?

答えて

1

Windows認証があるようです。つまり、Windowsにログインしたユーザーは自動的にデータベースにログインします。しかし、これは、このユーザーがdb内で自動的に処理を行えることを意味するものではありません。彼はまた権利が与えられなければなりません。

さらに高度なシナリオでは、デフォルトロールを使用するか、独自のロールを作成して(ユーザーに属性付けすることができます)。独自の役割を作成する場合は、これらのユーザーが使用できるすべてのオブジェクトに対して権限を付与する必要があります。例:

GRANT SELECT, INSERT, UPDATE, DELETE ON MyTable TO AdvancedUserRole; 
GRANT SELECT ON CustomersView TO AdvancedUserRole; 

GRANT SELECT ON MyTable TO SimpleUserRole; 
GRANT SELECT ON CustomersView TO SimpleUserRole; 

デフォルトの役割を使用している場合、それらは/更新データを挿入することが許可されている場合、db_ownerないユーザーには、少なくともdb_reader、おそらくもdb_writerする必要があります。

関連する問題