2009-07-16 19 views
1

私のウェブサイトからトリガを無効にするストアドプロシージャを実行しようとしています。ここでは、トリガーのコードは次のとおりです。私は自分のストアドプロシージャにアクセス権がありません

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. 

答えて

3

DBAccountNameにはTableNameに対するアクセス許可がありますか?これらは、スキーマ全体(dbo)とは別に付与または取り消すことができます。

私はdbaではありませんが、DBAccountNameはDDL文の実行を許可されていますか? (プログラムでトリガーを無効にするなどの作業を行うことができます)

+0

DBAccountNameはTablenameにアクセスできません。しかし、私は第2部については分かりません。私はその手続きに何が含まれているのかは関係ありません。 – Jason

+0

@ Jason:MS SQL 2000では、格納されているprocの所有者と接続の権利の差によって、挿入、更新、削除の権限が与えられます。ストアドプロシージャ内でDDLを実行するには、SPを呼び出すユーザーがDDLを実行する権利が必要でした。ユーザーがテーブルを切り捨てる権利を持っていない限り、TRUNCATE TABLEは実行できませんでした。 –

+2

@ Jason:私は、権利とストアドプロシージャについて語る別の質問に対する回答を追加しました。他のDDLステートメントのエラーメッセージは、取得しているものと似ています。参照:http://stackoverflow.com/questions/1139137/what-are-the-ramifications-of-granting-a-db-user-with-limited-access-execute-perm/1141440#1141440 –

0

そのあなたが間違っデシベル・カタログに接続(SQL Serverを想定しているため:

<cfstoredproc datasource="myDatasource" procedure="DisableMyTrigger" /> 

そして、ここでは、私が取得していますエラーです)。あなたのデータベースに接続されているが、あなたの「マスター」

私はあなたのようなあなたの手順の最初に何かを置くことができると思いますおそらくある「デフォルト」のカタログに接続:

使用dbnameは、

これが正しいカタログに接続します。

+0

はい!これはまさに私が上で言っているものです!良い呼び出し – Eric

+0

メッセージ154、レベル15、状態1、プロシージャDisableMyTrigger、行9 USEデータベースステートメントは、プロシージャ、関数、またはトリガでは使用できません。 – Jason

+0

ストアドプロシージャの作成の最中に使用データベースを作成しましたか? – Eric

0

データベースを指定する必要があります。私はそれが許可の問題だとは思わない、私はそれがちょうどそのデータベースでそれを見つけることができないと信じています。

関連する問題