テーブルを切り捨てるために、MSSQLでユーザに付与する権限を取得するにはどのような権限が必要ですか?テーブルを切り捨てる権限
最小限の権限セットを許可しようとしていますが、テーブルが非常に大きく、操作をすばやくしたいので、DELETEを使用できません。
テーブルを切り捨てるために、MSSQLでユーザに付与する権限を取得するにはどのような権限が必要ですか?テーブルを切り捨てる権限
最小限の権限セットを許可しようとしていますが、テーブルが非常に大きく、操作をすばやくしたいので、DELETEを使用できません。
あなたはALTERパーミッションが必要です:パーミッションセクションhereを参照してください。
EXECUTE ASでストアドプロシージャを使用することもできます。そのため、ストアドプロシージャを実行しているユーザーには、ALTERパーミッションを付与する必要はありません。
必要最小限のアクセス許可は、 テーブル名のALTERです。テーブル の所有者、sysadminのメンバーが固定 のサーバーロール、db_ownerおよび の固定データベースロールdb_ddladmin、および のテーブルへの既定のアクセス許可は、転送テーブル です。しかし、 は、 ストアドプロシージャなどのモジュール内にTRUNCATE TABLE ステートメントを組み込み、 モジュールに適切な権限をEXECUTE AS句を使用してモジュール に付与することができます。 の詳細については、EXECUTE ASを使用して にカスタム許可セットを作成するを参照してください。
非表示、付与しないでください ...
CREATE TRIGGER TRG_MyTable_Foo
WITH EXECUTE AS OWNER
INSTEAD OF DELETE
AS
IF CONTEXT_INFO() = 0x9999
BEGIN
TRUNCATE TABLE MyTable
SET CONTEXT_INFO 0x00
END
GO
SET CONTEXT_INFO 0x9999
DELETE MyTable WHERE 1=0
SET CONTEXT_INFO
が
かもしれは良くが通常はTRUNCATE表
私はこれを試していません...
を編集:CONTEXT_INFOを使用するように変更しました。
あなたはストアドプロシージャwith execute as owner
作成することができます。そして、そのテーブルを切り捨てる必要が誰に実行権限を付与
create procedure dbo.TruncTable
with execute as owner
as
truncate table TheTable
go
を:
exec dbo.TruncTable
:今
grant execute on TruncTable to TheUser
TheUser
は次のようにテーブルを切り捨てることができます
ストアドプロシージャを作成するには、exec
CREATE PROCEDURE [dbo].[spTruncate]
@nameTable varchar(60)
WITH EXECUTE AS OWNER
AS
SET NOCOUNT OFF;
DECLARE @QUERY NVARCHAR(200);
SET @QUERY = N'TRUNCATE TABLE ' + @nameTable + ';'
EXECUTE sp_executesql @QUERY;
これは危険です! – Graeme
この回答は正しいだけでなく、ドキュメントを指すことによって「人を教えて」教えてくれたので、そのような回答は次のように見つけることができます。将来のOP。なぜdownvote? –
@Ben - 質問が投稿された後、OPがこの回答を投稿したために疑いがあります。 FAQがこれを認めているので、私はdownvoteをしなかった。 –
@Martin - ナノ秒ではありませんでした。それは2分だった - それは私が答えを見つけるのにどれくらいかかりました。 –