1

MetricsUser アカウントは、ストアド プロシージャの実行時に次のエラーを受け取ります。

「メッセージ 1088、レベル 16、状態 7、プロシージャ Data_SPROC、行 59 オブジェクト "tblPeopleProjectStage0" が存在しないか権限がないため、見つかりません。」

SPROC はかなり長いですが、掲載させていただきます。アクセス許可を付与するために、次のクエリを既に実行しました。

GRANT EXECUTE ON dbo.Data_SPROC TO [MetricsUser]
GRANT INSERT ON dbo.tblPeopleProjectStage0 TO [MetricsUser]
GRANT UPDATE ON dbo.tblPeopleProjectStage0 TO [MetricsUser]
GRANT DELETE ON dbo.tblPeopleProjectStage0 TO [MetricsUser]
GRANT SELECT ON dbo.tblPeopleProjectStage0 TO [MetricsUser]

このステートメントは正常に実行されました。

アクセス許可がユーザーに明示的に付与された後にアクセス許可エラーが発生する理由は何ですか? 必要に応じて、サンプル データとストアド プロシージャ コードを編集および追加します。

編集

アクセス許可クエリの結果は次のとおりです。

Name           Type       Object_Name                  Perm. Name    Perm. State Desc
-----------     --------  ------------                 ---------     -----------
MetricsUser    SQL_USER   splitstring                  SELECT        GRANT
MetricsUser    SQL_USER   tblPeopleProjectStage1       DELETE        GRANT
MetricsUser    SQL_USER   tblPeopleProjectStage1       INSERT        GRANT
MetricsUser    SQL_USER   tblPeopleProjectStage1       SELECT        GRANT
MetricsUser    SQL_USER   tblPeopleProjectStage1       UPDATE        GRANT
MetricsUser    SQL_USER   tblPeopleProjectStage2       DELETE        GRANT
MetricsUser    SQL_USER   tblPeopleProjectStage2       INSERT        GRANT
MetricsUser    SQL_USER   tblPeopleProjectStage2       SELECT        GRANT
MetricsUser    SQL_USER   tblPeopleProjectStage2       UPDATE        GRANT
MetricsUser    SQL_USER   splitindexedstring           SELECT        GRANT
MetricsUser    SQL_USER   Split_Text_Into_Stage_1      EXECUTE       GRANT
MetricsUser    SQL_USER   Split_Text_Into_Stage_2      EXECUTE       GRANT
MetricsUser    SQL_USER   Split_Text_Into_Stage_3      EXECUTE       GRANT
MetricsUser    SQL_USER   tblPeopleProjectStage3       DELETE        GRANT
MetricsUser    SQL_USER   tblPeopleProjectStage3       INSERT        GRANT
MetricsUser    SQL_USER   tblPeopleProjectStage3       SELECT        GRANT
MetricsUser    SQL_USER   tblPeopleProjectStage3       UPDATE        GRANT
MetricsUser    SQL_USER   Update_Text_In_Raw_From_Init EXECUTE       GRANT
MetricsUser    SQL_USER   tblPeopleProjectStage4       DELETE        GRANT
MetricsUser    SQL_USER   tblPeopleProjectStage4       INSERT        GRANT
MetricsUser    SQL_USER   tblPeopleProjectStage4       SELECT        GRANT
MetricsUser    SQL_USER   tblPeopleProjectStage4       UPDATE        GRANT
MetricsUser    SQL_USER   Split_Text_Into_Stage_4      EXECUTE       GRANT
MetricsUser    SQL_USER   Data_SPROC                   EXECUTE       GRANT
MetricsUser    SQL_USER   tblPeopleProjectStage0       DELETE        GRANT
MetricsUser    SQL_USER   tblPeopleProjectStage0       INSERT        GRANT
MetricsUser    SQL_USER   tblPeopleProjectStage0       SELECT        GRANT
MetricsUser    SQL_USER   tblPeopleProjectStage0       UPDATE        GRANT
MetricsUser    SQL_USER   NULL                         CONNECT       GRANT

繰り返しStage0ますが、問題でありData_SPROC、呼び出されています。何を探すべきかわかりません。

編集 2:ここに問題があると思われるストアド プロシージャの領域があります。コマンドにはtruncate追加の権限が必要ですか?

INSERT INTO [Metrics].dbo.tblPeopleProjectStage1(Item_Title, Project_Name, User_Name, WY_Portions_Date)
SELECT s.Item_Title, s.Project_Name, s.User_Name, v.WY_Portions_Date
FROM 
(
SELECT d.Item_Title, d.Project_Name, d.User_Names, c.item User_Name, c.rn
FROM [Metrics].dbo.tblPeopleProjectStage0 d
CROSS APPLY [Metrics].dbo.splitstring(d.User_Names, ';') c
) s

Inner Join

(
SELECT d.Item_Title, d.Project_Name, d.WY_Portions_Dates,
c.item WY_Portions_Date, c.rn
FROM [Metrics].dbo.tblPeopleProjectStage0 d
CROSS APPLY [Metrics].dbo.splitstring(d.WY_Portions_Dates, '*') c
) v
on s.Item_Title = v.Item_Title
and s.rn = v.rn;

TRUNCATE TABLE [Metrics].dbo.tblPeopleProjectStage0
4

1 に答える 1