/*
好不容易終於拿到 DB2 Express-C 9.7
灌好之後才發現原來它是這麼令人陌生...(是我假放太久了嗎?)
一是控制中心的選單字體全成了亂碼,二是權限異動頗大
到現在還是搞不清楚。不過先把弄出來的做一下紀錄...
在什麼都沒設定之下執行 load,就會有以下錯誤:
SQL0552N "ADMINISTRATOR" 沒有執行作業 "LOAD" 的專用權。 SQLSTATE=42502
原來 LOAD 權限已經不再是預設就有的,因此權限設定上還真麻煩,
特別是我只是單純用本機的 Administrator 去做測試
*/
/* 檢查本機使用者和群組設定 */
「開始」→「程式集」→「系統管理工具」→「電腦管理」
展開「系統工具」接著再展開「本機使用者和群組」
點選「群組」。檢查是否存在名稱為 DB2ADMNS 的群組。
再點選「使用者」。將 Administrator 「成員隸屬」的選單新增DB2ADMNS群組。
/* 建自己的 DB */
不使用「DB2安裝」所建立的DB:SAMPLE,原因是,
我還沒Try出來到底怎麼使Administrator有執行grant的專用權。
另外我也還沒辦法用localsystem account去logon。
如果我要Administrator有SECADM (Manages security within a database)的權限,
目前所能做的就是使 Administrator 成為 db 的 creator。
C:\>db2start
SQL1063N DB2START 處理成功。
C:\>db2 create database orion
DB20000I CREATE DATABASE 指令已順利完成。
C:\>db2 connect to orion
資料庫連線資訊
資料庫伺服器 = DB2/NT 9.7.0
SQL 授權 ID = ADMINIST...
本端資料庫別名 = ORION
/* 檢查有哪些權限 */C:\>db2 get authorizations
現行使用者的管理權限
直接 SYSADM 權限 = NO
直接 SYSCTRL 權限 = NO
直接 SYSMAINT 權限 = NO
直接 DBADM 權限 = YES
直接 CREATETAB 權限 = NO
直接 BINDADD 權限 = NO
直接 CONNECT 權限 = NO
直接 CREATE_NOT_FENC 權限 = NO
直接 IMPLICIT_SCHEMA 權限 = NO
直接 LOAD 權限 = NO
直接 QUIESCE_CONNECT 權限 = NO
直接 CREATE_EXTERNAL_ROUTINE 權限 = NO
直接 SYSMON 權限 = NO
間接 SYSADM 權限 = NO
間接 SYSCTRL 權限 = YES
間接 SYSMAINT 權限 = YES
間接 DBADM 權限 = NO
間接 CREATETAB 權限 = YES
間接 BINDADD 權限 = YES
間接 CONNECT 權限 = YES
間接 CREATE_NOT_FENC 權限 = NO
間接 IMPLICIT_SCHEMA 權限 = YES
間接 LOAD 權限 = NO
間接 QUIESCE_CONNECT 權限 = NO
間接 CREATE_EXTERNAL_ROUTINE 權限 = NO
間接 SYSMON 權限 = YES
/* 自己不能grant自己 */C:\>db2 grant load on database to administrator
DB21034E 指令被當作 SQL 陳述式處理,因為它不是有效的「指令行處理器」指令。
在SQL 處理程序期間,它已傳回:
SQL0554N 授權 ID 無法授與自身專用權或權限。 SQLSTATE=42502
/* grant權限給群組 */C:\>db2 grant load on database to db2admns
DB20000I SQL 指令已順利完成。
C:\>db2 create table t1 (c1 integer)
DB20000I SQL 指令已順利完成。
/* 再檢查一下權限 */
C:\>db2 get authorizations
現行使用者的管理權限
直接 SYSADM 權限 = NO
直接 SYSCTRL 權限 = NO
直接 SYSMAINT 權限 = NO
直接 DBADM 權限 = YES
直接 CREATETAB 權限 = NO
直接 BINDADD 權限 = NO
直接 CONNECT 權限 = NO
直接 CREATE_NOT_FENC 權限 = NO
直接 IMPLICIT_SCHEMA 權限 = NO
直接 LOAD 權限 = NO
直接 QUIESCE_CONNECT 權限 = NO
直接 CREATE_EXTERNAL_ROUTINE 權限 = NO
直接 SYSMON 權限 = NO
間接 SYSADM 權限 = NO
間接 SYSCTRL 權限 = YES
間接 SYSMAINT 權限 = YES
間接 DBADM 權限 = NO
間接 CREATETAB 權限 = YES
間接 BINDADD 權限 = YES
間接 CONNECT 權限 = YES
間接 CREATE_NOT_FENC 權限 = NO
間接 IMPLICIT_SCHEMA 權限 = YES
間接 LOAD 權限 = YES
間接 QUIESCE_CONNECT 權限 = NO
間接 CREATE_EXTERNAL_ROUTINE 權限 = NO
間接 SYSMON 權限 = YES
/* 測試load */
C:\>db2 load from t1.del of del insert into t1
SQL3501W 由於禁止資料庫向前回復, 所以表格常駐的表格空間將不放入備份懸置狀態。
SQL3109N 公用程式開始自檔案 "C:\t1.del" 載入資料。
SQL3500W 公用程式在 "2009-08-04 20:27:16.489660" 時開始 "LOAD" 階段。
SQL3519W 開始載入「一致點」。輸入記錄數 = "0"。
SQL3520W 成功載入「一致點」。
SQL3110N 公用程式已完成處理。自輸入檔讀取第 "1" 列。
SQL3519W 開始載入「一致點」。輸入記錄數 = "1"。
SQL3520W 成功載入「一致點」。
SQL3515W 公用程式已在 "2009-08-04 20:27:16.700221" 時完成 "LOAD" 階段。
已讀取的列數 = 1
已略過的列數 = 0
已載入的列數 = 1
已拒絕的列數 = 0
已拒絕的列數 = 0
已確定的列數 = 1