私のウェブサイトからトリガを無効にするストアドプロシージャを実行しようとしています。ここでは、トリガーのコードは次のとおりです。私は自分のストアドプロシージャにアクセス権がありません
CREATE PROCEDURE [dbo].[DisableMyTrigger]
AS
BEGIN
alter table dbo.TableName DISABLE TRIGGER TriggerName
END
私もしてストアドプロシージャのアクセス許可を設定しました:
Grant Exec on dbo.DisableMyTrigger To DBAccountName
DBAccountNameであり、他のストアドプロシージャと同様に、動的に実行することができました問題のないSQL文。ここで
は私のCFMページからコードです:
[Macromedia][SequeLink JDBC Driver][ODBC Socket][Microsoft][SQL Native Client][SQL Server]Cannot find the object "TableName" because it does not exist or you do not have permissions.
DBAccountNameはTablenameにアクセスできません。しかし、私は第2部については分かりません。私はその手続きに何が含まれているのかは関係ありません。 – Jason
@ Jason:MS SQL 2000では、格納されているprocの所有者と接続の権利の差によって、挿入、更新、削除の権限が与えられます。ストアドプロシージャ内でDDLを実行するには、SPを呼び出すユーザーがDDLを実行する権利が必要でした。ユーザーがテーブルを切り捨てる権利を持っていない限り、TRUNCATE TABLEは実行できませんでした。 –
@ Jason:私は、権利とストアドプロシージャについて語る別の質問に対する回答を追加しました。他のDDLステートメントのエラーメッセージは、取得しているものと似ています。参照:http://stackoverflow.com/questions/1139137/what-are-the-ramifications-of-granting-a-db-user-with-limited-access-execute-perm/1141440#1141440 –