TEMPDB内のユーザーのCREATESYNONYM権限が失われるという問題が繰り返し発生しています。これらの権限が永続的に保持されていないように見える理由はありますか?
私が得ているエラー:
> System.Data.SqlClient.SqlException (0x80131904): CREATE SYNONYM
> permission denied in database 'tempdb'
TEMPDB内のユーザーのCREATESYNONYM権限が失われるという問題が繰り返し発生しています。これらの権限が永続的に保持されていないように見える理由はありますか?
私が得ているエラー:
> System.Data.SqlClient.SqlException (0x80131904): CREATE SYNONYM
> permission denied in database 'tempdb'
コメントを残しましたが、できることは次のとおりです
マスターデータベースにprocを作成し、そのprocでtempdbのアクセス許可を付与します(動的SQLを使用する場合は、procでUSE tempdbを使用できます)。
次に、起動時に実行するプロシージャをマークします
exec sp_procoption N'MyProcName', 'startup', 'on'
これで、SQLサーバーが再起動されるたびに、このprocが実行され、アクセス許可が付与されます。
こちらも参照してくださいSQLServerの起動時に実行されるすべてのストアドプロシージャを一覧表示します
tempdbは、サーバーが再起動されるたびにモデルデータベースのコピーとして作成されます。私の推測では、ユーザーにアクセス許可を付与してからこのエラーメッセージが表示されるまでの間に、サーバーの再起動が発生していると思います。とはいえ、モデルでアクセス許可を付与して、サーバーの再起動時にtempdbに保存するか、スタートアップストアドプロシージャを作成してtempdbでアクセス許可を付与するなどの方法を実行できます。