アクションを実行するために使用されているユーザー アカウントを確認するにはどうすればよいでしょうか (SQL Server のコンテキストで)?

アクションを実行するために使用されているユーザー アカウントを確認するにはどうすればよいでしょうか (SQL Server のコンテキストで)?

たとえば、SQL Server 2008 をインストールするときには、データベース エンジンを実行するアカウントを選択する必要がありました。

SQL Server Management Studio を使用して 2005 データベース ファイルを添付しようとしたところ、データベースのアップグレードを妨げる権限エラーが発生しました。データベース ファイルを確認したところ、「SQLServerMSSQLUser$ComputerName$MSSQLSERVER」アカウントにはファイルに対する完全な権限があります。

そこで、SQL Server Management Studio が自分のユーザー名で実行されており、データベース ファイルをアップグレードするための書き込み権限がないことが分かりました。そこで、自分のユーザー名に完全な権限を追加したら、うまくいきました。

この出来事がきっかけで、私はこの質問をするようになりました。アクションがどのアカウントで実行されているかを確実に知るにはどうすればいいのでしょうか? データベース エンジンがデータベースの接続を処理すると思っていましたが、どうやらそうではないようです。

さらに、データベースがアタッチされると、セキュリティ リストからユーザー名が削除されたようです。そのため、データベースをデタッチすると、データベースを再アタッチする前に、ファイルに対する権限をもう一度リセットする必要があると思います。

答え1

SSMS がこの混乱を引き起こしているようです。ダイアログ ボックスでファイルを選択する必要があるということは、SSMS を実行しているアカウントにもファイルへのアクセス許可が必要であることを意味しているのではないかと思います。

サービス アカウントにファイルへのアクセス許可がある限り、t-sql を使用してデータベースをアタッチできるはずです。

使ってみてくださいsp_アタッチ_dbsaとしてログインするか、ユーザー設定 またはデータベースの作成...添付用

もし本当にしなければならないSSMS を使用すると、T-SQL の考えが吐き気を催すので、SQL Server サービスを実行するためのユーザー アカウントを作成し、このアカウントを使用して SSMS を起動します。

答え2

実行可能ファイルの名前がわかっている場合は、タスク マネージャーの [プロセス] タブに、そのファイルを実行しているユーザー名が表示されます。

答え3

ここで答えを見つけました:
http://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/SQL-Server-2005/Q_22785783.html

関連する SQL Server ドキュメントはここにあります:
http://msdn2.microsoft.com/en-us/library/ms189128.aspx
「データベースをデタッチまたはアタッチする場合、データベース エンジンは、操作を実行する接続の Windows アカウントを偽装して、そのアカウントがデータベースおよびログ ファイルにアクセスする権限を持っていることを保証しようとします。SQL Server ログインを使用する混合セキュリティ アカウントの場合、偽装は失敗する可能性があります。」

また、次のように明確に記載されています。「ファイル アクセス権限は、作成、アタッチ、デタッチ、新しいファイルを追加するための変更、バックアップ、または復元のいずれかのデータベース操作中に設定されます。」

当然ですが、RTFM する必要があります、ハハ。

関連情報