1
クロスデータベース証明書を使用する場合のトリガーの権限
私のデータベース(SQL Server 2008 R2)の特定のデータベースへのアクセスを制御するために、クロスデータベース証明書(Erland Sommarskogが説明)を使用しています。 私はデータベースBのテーブルを更新するデータベースAのストアドプロシージャを持っています。これは、これまで、db Aのさまざまなストアドプロシージャとdb Bのテーブルで常に機能していました。db Bのテーブルを更新しようとしていますが、テーブルにトリガーがあります。このトリガーは、db Bの別のテーブルに追加のデータを挿入しています。次のエラーが発生します。 メッセージ916、レベル14、状態1、プロシージャtable_trigger、行11サーバープリンシパル "sql \ login"は、現在のセキュリティコンテキストではデータベース "B"にアクセスできません。 証明書に関連付けられているデータベースBユーザーに、他のテーブルに挿入する挿入アクセス許可を付与しようとしましたが、エラーは解決しませんでした。トリガーを変更する以外にオプションはありWITH EXECUTE AS OWNERますか? 問題を再現するDDLは次のとおりです。 CREATE LOGIN [GuggTest] WITH PASSWORD=N'abcd', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF CREATE DATABASE A; CREATE DATABASE B; USE A; CREATE TABLE dbo.SPtoUpdate ( ID INT , ILoveFishing VARCHAR(255) ); INSERT INTO dbo.SPtoUpdate ( …