下表為我們預估excel內容:
申請單號
applyid
nvarchar(30)
|
電腦名稱
uuid
int
|
使用者帳號
userid
int
|
軟體集名稱
swgroupid
int
|
授權方式
swgrouplictype
int
|
移轉前使用者帳號
transferreduserid
int
|
系統處理方式
|
類型
type
int
|
|
FA-201506-0001
|
PC1
|
NOD32
|
Device
|
+
|
1
|
|||
FA-201506-0002
|
PC2
|
OFFICE 365
|
Concurrent
|
+
|
1
|
|||
FA-201506-0003
|
User1
|
AutoCAD
|
Named-User
|
+
|
1->0
|
|||
FA-201506-0004
|
User2
|
AutoCAD
|
Named-User
|
+
|
1->0
|
|||
FA-201506-0005
|
User3
|
AutoCAD
|
Named-User
|
+
|
1->0
|
|||
FA-201506-0006
|
send-back
|
User1
|
AutoCAD
|
Named-User
|
警示 -
|
2
|
||
FA-201506-0007
|
keep
|
User2
|
AutoCAD
|
Named-User
|
警示 -
|
2
|
||
FA-201506-0008
|
send-back
|
NOD32
|
Device
|
警示
|
2
|
|||
FA-201506-0009
|
keep
|
NOD32
|
Device
|
警示
|
2
|
|||
FA-201506-0010
|
send-back
|
OFFICE 365
|
Concurrent
|
警示
|
2
|
|||
FA-201506-0011
|
keep
|
OFFICE 365
|
Concurrent
|
警示
|
2
|
|||
FA-201506-0012
|
User4
|
AutoCAD
|
Named-User
|
User3
|
-
+
|
1
|
||
FA-201506-0013
|
PC3
|
NOD32
|
Device
|
User3
|
+
|
1
|
||
FA-201506-0014
|
PC4
|
OFFICE 365
|
Concurrent
|
User3
|
+
|
1
|
說明:
1. 電腦名稱為send-back及keep時,表示為要將Named-User授權類型、使用者名稱及軟體集名稱符合的內容做停用的動作。在此注意一定要有上述3個欄位,並且不會處理Device及Concurrent(因為電腦名稱欄位已被佔用)。
2. 移轉前使用者名稱若有內容,表示該使用者的軟體集名稱(授權類型)要停用。在此注意一定要有軟體集名稱及授權類型欄位內容,因為要比對停用,並且不會處理Device及Concurrent(因為沒有移轉前的電腦名稱)。
3. 停用的意義指的是,將該使用者的軟體集名稱(授權類型)設為非法,並且該使用者未來不佔用授權數~ 另外符號+代表加資料並配置合法;符號-代表停用資料;警示代表寄出電腦名稱比對不到的警示
軟體申請表處理警示:
Eventnotification資料表event='36'
DB定義:
swapplication軟體申請表
id
|
int
|
流水號,會自動遞增
|
applyid
|
nvarchar(30)
|
申請單號
|
pcname
|
nvarchar(33)
|
電腦名稱
|
username
|
nvarchar(128)
|
使用者帳號
|
swgroup
|
nvarchar(64)
|
軟體集名稱
|
swversion
|
nvarchar(255)
|
軟體版本
|
swgrouplictypename
|
nvarchar(30)
|
授權方式
|
transferredusername
|
nvarchar(128)
|
移轉前使用者帳號
|
logdate
|
datetime
|
處理日期
|
uuid
|
nchar(36)
|
電腦ID;電腦名稱去比對pc資料表pcname來取得uuid;-1代表send-back;-2代表keep
|
userid
|
int
|
使用者ID;使用者名稱去比對usertable資料表username來取得userid
|
swgroupid
|
int
|
使用者ID;使用者名稱去比對usertable資料表username來取得userid
|
swgrouplictype
|
int
|
授權方式ID;1表示Device; 2表示Concurrent;
3表示Named-User
|
transferreduserid
|
int
|
移轉前使用者ID;表示移轉前使用者名稱去比對usertable資料表username來取得userid
|
type
|
int
|
請見底下Type值定義說明
|
backup1
|
nvarchar(255)
|
備用1欄位(字串)
|
backup2
|
nvarchar(255)
|
備用2欄位(字串)
|
backup3
|
nvarchar(255)
|
備用3欄位(字串)
|
backup4
|
nvarchar(255)
|
備用4欄位(字串)
|
backup5
|
nvarchar(255)
|
備用5欄位(字串)
|
backup1_num
|
int
|
備用1欄位(整數)
|
backup2_num
|
int
|
備用2欄位(整數)
|
backup3_num
|
int
|
備用3欄位(整數)
|
backup4_num
|
int
|
備用4欄位(整數)
|
backup5_num
|
int
|
備用5欄位(整數)
|
backup1_checkbox
|
int
|
備用1欄位(布林)
|
backup2_checkbox
|
int
|
備用2欄位(布林)
|
backup3_checkbox
|
int
|
備用3欄位(布林)
|
backup4_checkbox
|
int
|
備用4欄位(布林)
|
backup5_checkbox
|
int
|
備用5欄位(布林)
|
backup1_date
|
datetime
|
備用1欄位(日期時間)
|
backup2_date
|
datetime
|
備用2欄位(日期時間)
|
backup3_date
|
datetime
|
備用3欄位(日期時間)
|
backup4_date
|
datetime
|
備用4欄位(日期時間)
|
backup5_date
|
datetime
|
備用5欄位(日期時間)
|
swgroup軟體集表
lictype
|
int
|
授權方式:1代表Device;2代表Concurrent;3代表Named-User
è此為新增的欄位
|
registry資料表
key value新增如下,共三筆:
key= ‘SwApplicationCsvActive’ value=…
è軟體申請表的csv處理的總開關;1代表啟動排程 0代表關閉排程
key= ‘SwApplicationCsvSchedule’ value=… è軟體申請表的csv的排程設定,按照Cron來設定,可以每天設定在某些整點小時去執行。(如6點執行一次,10點執行一次,17點執行一次)
key= ‘SwApplicationCsvSourcePath’ value=…
è軟體申請表的csv來源路徑
key= ‘SwApplicationCsvCompletedPath’ value=…
è軟體申請表的csv處理完成路徑
二個stored procedure
1. sp_ProcessSwApplication 功能是處理Local Temp Table內的資料(從csv過來),成功時將資料填入至swapplication資料表,並將處理結果填入至Temp Table的result欄位上
呼叫方式請參考範例1
Type值定義說明
/*掃描所有暫時資料表(#Temp_SwApp)資料*/
/*
Server在處理csv結果,若是<=100都是代表成功的資料,>100則表示是失敗的資料。另外2及3要強制寄出警示信~
Server 若處理的檔案內只要有一筆失敗的狀態,寄給管理者,但是有2、3的話也是要寄出給管理者
Console在軟體申請表<=100都是顯示'成功',>100則顯示'失敗:????'
Console在Named-User設定則是過濾(0,1,4,5,6,13),並且0,4顯示'停用';1,5顯示'啟用';6顯示'對應不到軟體集';13顯示'授權不足,已停用'
代號
|
顯示訊息
|
實際系統操作
|
備註
|
0
|
成功
|
停用
|
|
1
|
成功
|
啟用
|
|
2
|
成功
|
警告send-back
|
|
3
|
成功
|
User1
|
|
4
|
成功
|
警告keep
|
|
5
|
成功
|
手動停用
|
|
6
|
成功
|
手動啟用
|
|
|
|
對應不到軟體集
|
|
11
|
成功
|
已手動刪除
|
從Console去刪除Name-User的項目
|
12
|
成功
|
更新Named-User為啟用
|
當csv有重覆的Named-User為停用時,會將它變更為啟用
|
13
|
成功
|
授權不足,已停用
|
針對Name-User有可能後來才安裝電腦軟體,造成授權不足
|
|
|
|
|
101
|
失敗: 申請單號為空
|
申請單號為空
|
|
102
|
失敗: 授權方式要為限定字串(Device、Concurrent、Named-User)
|
授權方式要為限定字串(Device、Concurrent、Named-User)
|
|
103
|
失敗: 找不到電腦名稱
|
找不到電腦名稱
|
|
104
|
失敗: 找不到使用者帳號
|
找不到使用者帳號
|
|
105
|
失敗: 找不到移轉前使用者帳號
|
找不到移轉前使用者帳號
|
|
106
|
失敗: 找不到軟體集名稱
|
找不到軟體集名稱
|
|
107
|
失敗: 軟體集非版權軟體
|
軟體集非版權軟體
|
|
108
|
失敗: 授權方式與之前設定的不相同
|
授權方式與之前設定的不相同
|
|
109
|
失敗: Named-User資料重覆
|
Named-User資料重覆
|
|
110
|
失敗: 軟體集不能在買高裝低的群組內
|
軟體集不能在買高裝低的群組內
|
|
111
|
失敗: 電腦尚未安裝軟體集內任何軟體
|
電腦尚未安裝軟體集內任何軟體
|
|
112
|
失敗: 使用keep或send-back停用時,無法找到對應的使用者帳號
|
使用keep或send-back停用時,無法找到對應的使用者帳號
|
|
113
|
失敗: 使用keep或send-back停用時,該使用者帳號原來已經停用
|
使用keep或send-back停用時,該使用者帳號原來已經停用
|
|
|
|
|
|
201
|
失敗: Device授權數量不足
|
Device授權數量不足
|
|
202
|
失敗: Named-User授權數量不足
|
Named-User授權數量不足
|
|
203
|
失敗: keep:
Named-User授權數量不足
|
keep: Named-User授權數量不足
|
|
|
|
|
|
2. sp_ProcessSwLegal功能是當使用者切換時,呼叫此sp(傳入電腦的uuid),可以將該電腦的Named-User 類型的軟體集做重新設定合非法的功能
呼叫方式請參考範例2
==============================
範例1:
IF
object_ID('tempdb..#Temp_SwApp') is not null
DROP TABLE
#Temp_SwApp
CREATE TABLE #Temp_SwApp(
id int IDENTITY(1,1),
applyid nvarchar(30),
pcname nvarchar(33),
username nvarchar(128),
swgroup nvarchar(64),
swversion nvarchar(255),
swgrouplictype nvarchar(30),
transferredusername nvarchar(128),
reapplyid
int,
result int
);
GO
INSERT INTO #Temp_SwApp (applyid, pcname,
username, swgroup, swversion, swgrouplictype, transferredusername,reapplyid) --Server reapplyid 一律填NULL
VALUES ('FA-201506-0001', 'WIN-2K8R2_CCW',
NULL, N'作業系統', '5.1.0.0', N' Device', NULL, NULL);
GO
INSERT INTO #Temp_SwApp (applyid, pcname,
username, swgroup, swversion, swgrouplictype, transferredusername,reapplyid)
VALUES ('FA-201506-0002', 'WIN-2K8R2_CCW',
NULL, N'NOD32', '5.1.0.0', N' Device', NULL, NULL);
GO
sp_ProcessSwApplication;
GO--記得自行將#Temp_SwApp刪除
=============================
範例2
DECLARE
@o int;
EXEC
sp_ProcessSwLegal @uuid='A7522CC3-395A-4F1B-BD94-097C83DD957A',@iResult=@o
output;
@iResult回傳值的內容如下:
1=成功
201=Device授權數量不足
202=Named-User授權數量不足
203=keep授權數量不足