2013-07-16 112 views
0

SQL服务器可以使用语句创建代理用户帐户的选项 CREATE USER proxyUser WITHOUT LOGIN;db2创建代理用户帐户

我无法在互联网上找到相当于db2(v8)的帮助。我不确定这是否可能,如果是的话,请让我知道如何。

我想要使用它的场景如下。 我有大约每天更新800万条记录的表格。在插入之前,从表格中删除的记录很少,数量约为200万。由于这些删除不需要记录,因此我们决定在删除期间设置记录日志。由于我们的凭证没有更改表权限,因此我们决定将ALTER和DELETE语句放入脚本中,并使用代理帐户执行脚本,而不考虑用户执行SP的情况。

我在这篇文章中详细介绍了我上面描述的场景。区别在于我需要在db2上执行此操作,并且我需要在不记录日志的情况下执行删除操作。

http://www.mssqltips.com/sqlservertip/2583/grant-truncate-table-permissions-in-sql-server-without-alter-table/

感谢 阿琼

+0

什么是DB2平台? z/OS的? – mustaccio

+0

它是linux,不知道具体的操作系统,它是DB2版本8.我使用putty连接。 –

回答

0

它将在DB2相同的方式基本上工作,也有少数例外。首先,DB2 8.2中没有TRUNCATE TABLE语句(并且在Linux上没有DB2版本8)。其次,DB2中没有数据库用户 - 所有用户都是在操作系统的外部定义的,所以也没有CREATE USER语句。

存储过程中的所有语句(动态SQL除外)都是在过程创建者的授权下执行的。

因此,使用授权的ID,例如,数据库管理员的ID,创建您需要的存储过程(ALTER,DELETE,无论),然后将该过程的EXECUTE特权授予需要运行它的任何人。

+0

感谢您的回复。因此,如果我使用alter table创建一个脚本,然后让DBA执行它来创建脚本,让他提供执行权给我,然后如果我运行该脚本,它将在没有任何“权限被拒绝的表上”的情况下执行错误?我没有任何ddl语句的权限,我只有权执行dml语句。 –

+0

PS:我没有把它标记为公认的答案,因为我已经做了澄清。我试图将回复标记为有用,但看起来像我没有相同的要求。 –

+0

不,它不会以脚本方式工作。脚本只是一系列的语句,由运行脚本的人来执行。你需要的是一个**存储过程**,它被编译,保存,并且随后使用运行CREATE PROCEDURE语句的权限执行。 – mustaccio