2013-07-16 202 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