發表文章

如何以SQL指令作Performance Tuning

圖片
一般而言SQL 的Performance Tuning 可使用SQL Profiler , 但是如果要調教的機器上SQL Server上並未安裝SQL Profiler 或使用者不會使用SQL Profiler時, 則可用指令的方式執行. 本案例的狀況是: 對方的機器是SQL Server 2008 且未安裝SQL Profiler. 筆者手上的機器只有SQL Server 2005 , 但有安裝SQL Profiler . 1.建立SQL Profiler 的指令檔. 1.1 開啟SQL Server 2005 , 進入SQL Profiler.   1.2. 選擇追蹤的事件    可設定常用的事件, 包括 RFC:Completed, SP:StmtCompleted,SQL:BatchCompleted 1.3.設定資料行篩選,     可設定篩選條件例如針對Reads 的次數大於1000以上才記錄. 1.4. 設定完成後, 點選執行後, 在將其停止, 並匯出指令檔. 1.5. 產生的SQL 如下: (若上述的追蹤項目可用, 可直接使用以下的SQL 追蹤) -- Create a Queue declare @rc int declare @TraceID int declare @maxfilesize bigint set @maxfilesize = 5 -- Please replace the text InsertFileNameHere, with an appropriate -- filename prefixed by a path, e.g., c:\MyFolder\MyTrace. The .trc extension -- will be appended to the filename automatically. If you are writing from -- remote server to local drive, please use UNC path and make sure server has -- write acce...

比對SQL Server 資料庫Schema

圖片
  下載位址: http://www.dbcomparer.com/ 版權: Free 適用資料庫版本: Microsoft SQL Server 2008 (and 2005) 功能說明: DBCompare 可以比對SQL Server 2008 與 2005 的資料庫的Schema,其比較的項目包括整個Schema 所有項目.   1. 安裝DBcomparer 2. 輸入兩個資料庫的位置與認證資訊 3.設定比對項目 點選Compare Options 可以選擇比對的項目. 3.開始比對 點選Compare Now 開始執行比對. 4.比對結果   上方視窗顯示兩個Schema 的差異 5.差異說明 黑色字表是兩者相同 紅色與欄色字皆表示可能有差異 差異可能是欄位也可能是索引, 因此可以展開有差異的檔案逐一檢視.

選擇適合的流程平台

BPM、SOA、Workflow、電子表單 打開Google 輸入BPM、SOA、Workflow、電子表單任何一個單字,至少可你看到數十種以上得產品,包括ultimus、K2、AgilePoint、華苓(AgentFlow)、超義(Power Process)、新人類(FlowMaster)甚至Oracle、IBM、Mircosoft…等等都有相對應的產品,早期最常被客戶問到的是BPM與Workflow 有什麼不同?要導入SOA或BPM呢?現在大家已經不在意這個問題了, 因為現在所有的產品都說是自己是BPM或SOA. 每個產品都號稱自己功能強大, 只要簡單的拖拖拉拉工作就完成了,真的是這樣嗎?如果導入了一個錯誤的產品, 簡單的需求當然沒有問題, 但是面對複雜的問題時, 因為東西已經買了, 要退貨或解約, IT 主管不只要面對廠商, 也要面對內部老板的壓力, 在這種情形下只好改變公司的流程去迎合產品. 有句話說不管黑貓白貓能抓的到老鼠的就是好貓,同樣的不管叫SOA或BPM只要能符合企業需求的就是好流程. 為了避免導入不適合的產品, 在導入前應該更審慎的評估, 先了解本身的需求, 再評估那一個產品適合自己的企業, 可是面對市場上琳瑯滿目的產品或平台該如何選擇呢? 企業應該導入一個BPM產品(電子表單系統)或SOA的架構? 在評估適合產品時,我們可以先看一下兩個最常見的產品類別,不論是Workflow或電子表單我們統一叫作BPM, 另一類是屬於較完整的架構的我們稱為SOA.  導入SOA 在一個SOA的平台中不論外掛或整合都會含有BPM的模組, 目前市場上所看的到的SOA平台都是屬於資訊界的大廠所推出的產品. SOA平台(含BPM 模組)其特點是平台架構完整, 因此具有未來擴充性, 同時SOA的平台通常可以用程式語言開發流程所需要用到表單與各種整合的元件,可是導入一個SOA的平台不是只由技術層面來考量, 還要由公司整體IT發展的策略來看, 因此架構完整的另一個義意, 代表了覆雜, 因此很難短時間內看到成效. 通常SOA的平台較擅長的是在自動化流程或系統整合部份, 面對華人地區覆雜的簽核流程時組織簽核的功能通常較弱, 我常開完笑講在歐美是符合規則就不用簽, 在台灣是符合規則就要簽, 而且這個規則的彈性很高, 其實台灣的企業都...

AgilePoint逐級簽核與指定簽核層級範圍

圖片
  循序簽核 企業流程中, 大部份的行政流程都採用申請者逐級簽核的方式進行, 由申請者開始依組織的層級逐級向上簽核,當導入BPM或Workflow時也會面臨同樣的問題, 一般常見的作法是逐一繪出組織層級與流程. 上述的流程雖然很清楚的呈現簽核者的層級與流程, 可是問題也不少,因為一般流程的訪談都是以最基層的員工為主, 因此很容易發生以自己為出發點去設計流程,試問 1.如果經理自己申請是否要自己核准, 如果協理申請是否要給經理簽 ? 2. 如果有一個部門沒有協理怎麼辦 ?一個流程如果要適用於生產部門的工廠與行政支援部門, 通常其組織結構是不同的, 傳統的作法是把每個組織了流程劃出來, 整個流程密密麻麻. 逐級簽核 新的流程設計通常改用逐級簽核的方式, 以類似迴圈的方式判斷是否達到核決的權限, 如未達到則在找上一階主管, 已達到則離開迴圈, 不論申請者是何層級或組織階層為何皆可執行.   AgilePoint 提供很有彈性的逐級簽核的判斷,可在單一條件的流程元件(Single Condition) 是否達核決權限中判斷指定的流程變數(圖中IsPrivileged)為True或False, 因此只要在流程中依組織的核決規則去設定流程變數值即可. 判斷是否達核決權限的判斷有許多種方法, 第一種是在人工簽核作業元件中設定判斷的基准,該元件會依設定的內容指定流程變數的值. 內件元件可以依人員或部門甚至流程變數的值作判斷, 判斷的方法有特定的值(等於某個層級), 特定欄位值是否符核該層級的區間(經理可准假幾天, 協理可以核准採購金額多少),上簽幾階等不同的方式. 如果內建的內容無法滿足時,亦可在表單上運算然後將結果(True/False)直接設定給流程變數, 不過我們通常不建議將判斷寫於表單上, 比較建議的方法是寫成一個流程元件(AgilePart), 其優點除了簡化表單的設計外, 另一個好處是可以重覆利用這個元件, 達到組合流程的目的. 資產處分流程中, 依資產使用年限與殘值決定核決層級, 以AgilePart 製作核決權限判斷元件. 設計一個可參數化的流程元件直接設定所需的核決層級. 透過上述幾個案例, 可以發現逐級簽核有兩個重點, 一個是需要一個樹狀...

如何將SQL Server 的查詢輸出寫入文字檔

圖片
  SQL Server 預設會將執行結果顯示於畫面上,可設定將其輸出寫入外部檔案,此項設定只針對新開啟的視窗有效. 以下範例是針對SQL Server 2005 . a. 開啟SQL Server Management Studio b. 點選工具à選項 c. 設定查詢結果,選擇將結果存檔 d. 開啟新的執行視窗,並執行指令. e. 選擇輸出檔案名稱. 雖然預設副檔名為 .rpt , 但其內容為文字檔,因此可用文字編輯開啟.

如何查詢AgilePoint 版本升級資訊

圖片
AgilePoint 版本記錄 AgilePoint Server 升級的記錄會寫入Registry, 其路徑為              HKEY_LOCAL_MACHINE\SOFTWARE\Ascentn\Upgrade 可看到每個版本有一個更新記錄的目錄, 右側視窗亦有一個TimeStamp 記錄升級的時間.   AgilePoint 4.0 版以後的命名格式為 主版本(2位).次版本(2位).ServicePack(2位)Hotfixed(2位) 由以下記錄可以看出這台機器歷史久遠, 由AgilePoint 3.204 patch1 net11 到 3.204 patch2.0. 再升級為 4.0 , 一直到最新版的 AgilePint 4.7 service pack 2 hotfixed 4 (04.070204) 這個記錄也是一個AgilePoint由過去版本(3.204)升級為最新版本(4.7sp2), 基本上升級的過程都很順利, 只要直接安裝新的版本, 一個按鍵系統就自動將所有安裝的產品(AgilePoint Sever/Developer/envision …)都升級. 如何重新安裝ServicePack 或Hotfixed ? 如果需要重新安裝特定版本的Service Pack或Hotfixed  , 若該版本已經安裝過, 安裝時系統會出現已經安裝過的訊息, 例如: “The upgrade has already been applied on …” 如果需要重新安裝已經安裝過的版本, 可以將Registry 刪除, 在重新安裝即可.

如何修改流程資料庫中使用者帳號的Domain

注意: 以下方法建議用於測試資料庫, 使用於正式資料庫需注意其中的風險 感謝Gemtek 的 Fred 提供相關指令. AgilePoint Server 系統中所有的資料都是存在流程資料庫中, 若測試主機與正式主機兩者採用相同的帳號, 則只需將正式機的資料庫複製至測試機上則可以模擬相同的流程情境, 必要時可將測試機採用Form 認證, 並設定為測試模式(只輸帳號不輸密碼) 則很容易的模擬流程中各角色簽核情形.   但若測試機與正式機兩者網域不同時則需修改使用者帳號中的domain, 過去我有寫過一段SQL 作為Update 相關Table 的domain , 不過因為是用取出字串重新組合的方式, 有一個很大的缺點是得算出新舊帳號的長度, 然後取substring()再組合, 自己也覺得不是很方便, 因此只留著自己用. update  WF_REG_USERS set USER_NAME = 'APDEV02'+substring(user_name,12,20),   USER_NAME_UPCASE = 'APDEV02'+substring(user_name_upcase,12,20) where User_Name like 'vpc-ap-main%' 今天由另一個客戶某科技大廠的同仁 Fred, 手中看看一個不錯寫法, 用Replace 的方式來寫, 只需將舊的Domain Replace 成新的Domain , 因此徵得他的同意提供給大家參考. --AgilePoint 預設的流程資料庫 update WF_EVENTS set SENDER=replace(SENDER,'PORTAL','PORTAL-TEST') update WF_MANUAL_WORKITEMS set LAST_MODIFIED_BY=replace(LAST_MODIFIED_BY,'PORTAL','PORTAL-TEST'),USER_ID=replace(USER_ID,'PORTAL','PORTAL-TEST'),ORIGINAL_USER_ID=replace(ORI...