SSIS中Truncate表的最小权限

时间:2017-08-27 15:11:48

标签: sql-server ssis

我在我的SSIS包中创建了几个数据流,它们作为ETL过程的一部分执行truncate table。我通过配置为使用服务帐户的SQL作业运行包。

我最初向服务帐户提供了该表的ALTER授权,但是DBA已经回来说不能使用Alter,并且需要将最小权限分配给服务帐户进行截断。

例如。

use CoreReferenceStaging
GRANT CONNECT,EXECUTE,SELECT,DELETE, INSERT, UPDATE,ALTER ON database::CoreReferenceStaging TO "INT\svc-w-corerefdata-qa";
ALTER AUTHORIZATION ON [PartiesIssuerCreditRating] TO  "INT\svc-w-corerefdata-qa";

目前我有16个存储的数据流,分别执行Truncate表。 我最初想过创建包含执行权限的16个存储过程,但我觉得每个调用一个truncate表只是一个维护问题。有没有更好的方法来分配角色等。

你能告诉我最新的处理这种情况的方法吗?

1 个答案:

答案 0 :(得分:1)

要提供最小权限,请将TRUNCATE语句封装在存储过程中。为具有所需EXECUTE AS权限的数据库用户帐户指定ALTER TABLE子句,或者使用基于具有权限的用户的证书对proc进行签名。有关证书,用户和TRUNCATE TABLE proc的示例脚本,请参阅Erland Sommarskog's article。本文还详细讨论了EXECUTE AS与模块签名以通过存储过程授予权限。

相关问题