從 Oracle 轉 SQL 資料發生 PK 重複

透過 Linked Server 回 Oracle 查失敗的紀錄,在 Oracle 的資料表內顯然有使用者輸入時,可以敲入 FF 導致眼睛看不到,但卻重複兩筆的 PK

select * from openquery(LinkedServer,’select utl_raw.cast_to_raw(PKCol) b, PKCol from Schema.Table where PKCol like “%DuplicateKey%"‘)

image

走過

農曆年底,深夜醒來上廁所,再躺回床上時,他可以睡得著了。

上個農曆年底,合夥的公司因為擴充過快,找不到有效的營運方式而連虧了三年,當初合夥的股東朋友紛紛離去,同時把人帶走,四十人的公司兩個月內走了十人。在去年尾牙的當天,前任董事長無預警突然辭去,也不願再做保人,隨口要他接下董事長。這將造成公司完全無法貸款,而他並沒有什麼錢。詢問公司的幹部對公司繼續下去有信心嗎?三位主要幹部都說有,他詢問了妻子是否支持,妻子深知他放不下其他那三十位同仁及其背後的家庭,公司就是因為他們才有意義,妻子表達了義無反顧地支持。

沒錢的他接下了董事長,並抵押房子貸款借錢給公司。

進行中的專案可能無人可做而有毀約背信之虞,資金隨時有缺口,業務青黃不接,面對接踵而來的困境,他失眠了,雖然理智上深知醒著何用,明日一早需要好脾氣、清楚的頭腦以迎接各種挑戰,但翻來覆去就是難以入眠,潛意識裡,他有揮不去的恐懼。

透過年節與個人假期,會計在未交接的情況下離去,善良而體貼的會計師適時提供了支援,並鼓勵他說:接下總經理,腦袋會變大。接下董事長,心臟會變大。

但他仍怕少了會計作業將發不出薪資,從而學習嘗試跑銀行。在同仁介紹好友接下會計業務後,才解除了他另一個失眠因子。

三個開發案的人一起走了,但始終應徵不到新人,在缺人的情況下,所有重擔壓到了留下的工程師身上,一位工程師毫無怨言地接下了這三個案子,日以繼夜地努力,他站在工程師的身後,除了感激外幫不上忙,但這位工程師獨立完成了這些案子。

另一個大型專案正如火如荼地進行,開發團隊的 leader 捉襟見肘地調度人力,一肩扛起所有的突發狀況,裡面有著主要專案外,其他不同客戶的大小需求,還要支援年輕工程師或業務同仁。Leader 邀請了他們一起共事過的同仁加入團隊,漸漸補齊了人力。然而 Leader 從未報加班、補修、費用。這讓他深切感受到友誼與義氣,也看到了工程師對自己良善的要求。

在此同時大型專案的 PM 同仁也身兼 SA,在專案的後期用盡夜晚與假日,只為達交而心力交瘁直到完成。

在沒有第二位保人的狀況下,沒有銀行願意提供合理的企業貸款,一位股東好友知道狀況後,願意出面當保人,他深知這份人呆的勇氣與義氣,這同時代表著一個家庭的相挺。

某日一位好友來找他聊天,問他為何留得住人,因為這位好友非常欣賞他公司內的另一位同仁,曾經開出更高的薪水請同仁去這位好友那工作,但同仁回答等公司賺錢後再說,賠錢時要一起努力。大家彼此間都是好友,他對離去的人向來只有祝福,但對留下的人更是感激。

一年來公司的挑戰不斷,在整體經濟下滑的大環境裡,不管專案、駐點、授課、顧問、維護…都面臨更苛求的客戶與更吃緊的預算。但三十多位同仁戮力減少開支,僅有的一位銷售人員負責與客戶的各種聯繫,折衝案子裡客戶與同仁的爭執。同仁們越來越有相互支援的默契,不懼挑戰也不拒困難,他們默默地吃下了各種麻煩,完成了多種領域的專案、駐點、導入、授課、顧問、維護、升級、移轉、整併。他們的足跡踏遍金融、製造、電信、醫療、政府、機構、學校、流通、電商…他們的專業涵蓋網站開發、資料庫、BI、Portal、DevOps、Infra、公有雲和私有雲…,難能可貴地,他們完成了所有的使命。從年初的危殆,經過一年重新地協同合作,他們留下營運持平的成績。這個團隊臨危不亂,有為有守。

同仁們的努力慢慢凝結出成果,在各大企業征戰的經驗刻畫在一本本的 OneNote 內,再慢慢集結成工具程式、腳本指令碼、SOP、專案文檔,同仁們益發地有自信面對困難,能快速而周全地解決。隨著一次次到客戶端參與協商,他聽到對各位同仁的讚譽,心中充滿了驕傲。當他聽到客戶端的 IT 工程師讚賞說:"你們的人好厲害",當他聽到客戶端的使用者在開會中一再重申感謝同仁的耐心與體貼,當他看到同仁同時處理突發的多個案子而能協調資源,讓多個案子都能圓滿解決,他的自信回來了,因為他有了依靠。

新的一年裡,這群好同仁重新給了他平和,晚上終於敢喝水;而不怕夜晚醒來上廁所後一夜難眠。

浮世繪

尾牙

星期六晚上,賣知識的公司尾牙,販賣知識者因塞車而晚到,悄悄滑入販賣知識者桌。

他排拒了服務生倒酒,對同桌的同事們傻笑。台上解說技術20年後,眾人場合中若與專業無關,他已忘了如何說話,僅能傻笑以對。

業務拚酒的氣氛隨著抽獎金額漸升而酣濃,販賣知識者不知所措,他不懂為何業務要與公司同事拚酒,其他的知識販買者為何要彼此拚酒。

看著輪流上演著扶出場的喧鬧,販賣知識者遙想著入行時的尾牙,滿眼青澀,可能無限,聊著想像與企圖,混著稚氣與志氣。沒有什麼獎金也買不起酒。

回神看著滿座大叔,沒人談今日與明日,勸酒中等著下一支籤的唱名。

坐在旁邊的同事欣喜地迎來了福氣,賣知識者疑惑地看著紅包袋上的名字。

賣知識者:為何獎金是每位小主管提供的?他領的薪水或許沒有我們這群台上者賺得多吧?

同事:這應該是公司策略,誰知道,可能公司提供然後掛他的名字。

賣知識者滿心疑惑這個規矩,去年抽中他時,多年來第一次中獎的他第一次正眼看了這家公司的紅包,他注意到了封面上有個名字,腦中浮起某位小主管的臉。他問了緣由,在台上一臉愧疚地說感謝,並立刻宣布要將紅包還給提供者。這造成了另一場尷尬,小主管機智地回應,他感謝賣知識者提供他捐兩次的機會。

賣知識者起身悄悄滑出了儀式場合,投身到夜晚台北的街道,收起了傻笑。

 

面試

晚上 8 點,一位 43 歲的蒼老男性,瘦弱,倦容,鬍渣,微禿,滿手新舊傷痕,黯淡的衣著,十隻手指似乎長年用力而變形,抖動。提著半透明的老舊塑膠袋,裡面似乎裝著類似滑鼠鍵盤的周邊。孤零零地站在辦公室門外,等著兩位面試官。

面試官:你換了好多工作,至多做 2~3 年,絕大多數都是幾個月,每次都做該工作所需的技術,所以 Unix、Linux、Windows、Oracle、SQL、MySQL、Java、C++、C#、VB、Web、Win Form、Console…每一項都沾過,但我不知道你會什麼。

中年老者無言。

面試官:為何要離開現在的工作呢?

中年老者:因為這家公司經營困難…

面試官:為何之前要離開那家金融業呢?

中年老者:因為主管覺得我表現得不夠好。

面試官:你喜歡開發新程式還是維護舊系統。

中年老者:維護舊系統。因為開發新系統一定有一堆錯誤,我喜歡修正這些錯誤。我知道這理由很怪…

面試官問了些技術問題,中年老者回答了泰半存在的架構與程式物件名稱,駁雜地近似。雖不盡然對,但中年老者應該可以靠 Google 修正自己將造成的錯誤。

面試官:你想要的薪資?

中年老者:依公司規定。

面試官:你現在工作的月薪多少?

中年老者:3 萬多。

一位面試官心中淒然,對於中年老者何以致此滿心問號,無力感讓他不敢問也不想問。自己大對方五歲,對方卻比自己蒼老。中年老者誠實,或許也能解決日常問題,但那平均待不到一年的過往工作經歷,憔悴的面容與一雙不像敲鍵盤的手讓面試官們卻步。這家網路服務公司付得起一倍以上的薪資給這個職位,但這位面試官完全不敢嘗試任用他。因為面試官怕改不了 43 年留在他身上的烙印。而亞洲文化下的 IT 開發與維護是高度地團隊工作,強調合群與同質,具有排他性。

 

救火

任職大型傳產集團的 IT 顧問一早受命去救集團子公司的系統,子公司的 RAID 掛了,需要從備份救回 SQL Server 2000 和 ASP。

進了廠房,穿過機具與料件,步上 2 樓辦公區,昏暗的燈光道盡了省錢經營。鐵皮、塑膠、挑高一樓廠區,低矮二樓班公樓層、毫無裝飾。白鐵長桌配著凳子的餐廳,遠方有一台播新聞台的電視,正報導著台灣無時無刻都有的車禍。標準傳產的廠房,大量生產著日常不起眼的東西,裡面有和氣的老員工,靠著省下的一分分錢獲利。

時光在這裡停滯,推滿物件的資訊室,無殼的 PC、乘載著過往技術的舊書、叢叢雜亂的網路線和散落的滑鼠鍵盤周邊,像殘留的蛛網與蜘蛛聚在不同的角落。進入窄小的機房,唯一的機櫃拉出了去除上蓋的伺服器,宛若史前人面巨石吐出了佈滿舌苔的舌頭,冷冷地等待急救。

顧問的中指在沒有滾輪的滑鼠上習慣地滑著,等待老畫面喚醒他過往。

當廠 IT 拿出 3.5 吋 1.44 M 磁片找尋系統設定時,顧問在螢幕呈現 A 碟檔案的瞬間,大笑說能不能用手機拍張照,見證歷史,也回憶青春。廠 IT 尷尬地笑著,拒絕拍照。

記憶點點滴滴回來,顧問嫻熟這些技術,救回了執行 15 年的系統可救的部分,還原與設定 SQL 2000、COM/COM+/ASP。這是傳產賺錢的秘密,紮紮實實地一分一分攢,沒有輕狂,沒有傲氣,也沒有幻想。誠實,勤儉,重複,老去。

無題,效能調教標本

純粹留紀念

image

寄不出去的信

再次感受到底層公務員的恐懼換成服膺文字。 傳達獨立思考,自由美好的文字變成僵固。
 
對我而言,內在價值高於其他。我的價值是盡己之力做好,既忠於我的團隊,也忠於這份工作,這個專案。
 
這幾十年來追求自我卓越,本質是放下利害,單純學習知識與技術。對個人而言比較容易。但面對公司團隊,必須計較生存。學習折衝制約,從與人無涉的智轉成以人為本的仁。

若我們追求成長,將永遠處在一個未準備好的狀況,domain 不熟,技術變更,對方人事的利害關係,或許,重點是轉為自己面對痛苦的心態。換句話說,我們追求的是處理痛苦。有很多技巧要學習,但本質是自我的價值觀。

外在的談判過程我視為技巧學習,何時表現憤怒都是技巧。但我深層在乎的是對人的關懷。遠近親疏有程度,但本質的關懷要小心維護。計較轉憎恨,是漸進地僵固,看到計較的老人總讓我悲哀,鎖在心牢是無法釋放的。

我相信上帝丟骰子,也信服老莊。我不相信現世的價值觀會讓自己心靈自由。人的一生沒有目的,隨機的境遇由心解釋。我想去我換得自由。

Skype 2016 for Business 的 Error — 作業系統目前未設定或執行此應用程式

image

https://chentiangemalc.wordpress.com/2015/07/10/case-of-the-skype-for-business-2015-operating-system-is-not-presently-configured-to-run-this-application/

無題

記不得多少日子過去了,今天得以在家洗碗,洗衣服。緩緩地做家事,一併清洗心中的無奈。

自認是個可以做架構的人,卻在"庸碌的急"中,胡亂地湊數,我心期盼重構卻不可得,一開始的架構是雛形,需要實證、檢討再實證。每個專案都有其特殊,不可能直接套用。但一旦掛上上百個物件,散出去要周邊的人做,就收不回來了。早期不小心修剪,它將蕪蔓龐雜。

無語地看著自己做得又髒又亂,踩著 BI 系統的大忌往前,將有工程師們浪擲光陰在巨量的錯誤中,滿眼蹣跚、破碎、龐雜與脆弱。

從業以來,看到值得珍惜的千里馬被損耗,總難過不已,總想有個環境讓其馳騁。膨脹斗膽接下集英,但卻看著自己珍視的千里馬被人當作駑鈍,雖困頓可砥礪其心志,但青春與熱情有限。唯其技、志並進,才不會隨時間而庸碌喪志。

千里馬常有而伯樂不常有?對難得的人才,沒資源的自己能怎麼做?無人可問,可得幫助。年輕的英才,無盡美好的未來,我多盼看到卓然成家,自信光彩。

客戶甘於趕進度,忽視基本架構,訕笑我對人的願與盼。近 30 年的從業經驗,我已接受這是常態。這就是世態,大事小者不仁,小事大者唯詐。我本無求,但若失己立立人之樂,此生樂趣幾希。

SSIS 專案部署時的版本說明

若要為每一次部屬的版本加上說明:

image

一是為專案加說明

image

另一是直接修改系統資料表 internal.object_versions

image

要注意的是改完之後,一直開啟的 SSMS 若要看到這些文字,需要先退版一次,就看得到

image

串接授權與拒絕

簡單範例:

use tempdb
create table t(c1 int)
create user u without login
create user u2 without login
grant select on t to u with grant option
exec(‘grant select on t to u2 as u’) as user=’u’
exec(‘select * from t’) as user=’u2′
deny select on t to u cascade
/*
Msg 229, Level 14, State 5, Line 18
結構描述 ‘dbo’,資料庫 ‘tempdb’,物件 ‘t’ 沒有 SELECT 權限。
*/
exec(‘select * from t’) as user=’u2′

drop table t
drop user u
drop user u2

透過 SSMS 可以看到授予者

image

不到一個星期,IT 團隊能提供什麼保證

收到我個人任職顧問的公司同仁夜裡發的訊息:"服務使用商將有活動,要我們保證系統品質"。但什麼是品質,又如何保證?

要保證品質,需要及早準備,不同的品質定義,準備的成本不同,這包含購置軟/硬體與人力,且需要訂合約時載明,如何量化目標與罰則,否則只是口語而已。

而我們提供的服務部分委外,委外商擁有 Domain know how,但對技術掌控能力有限,維護系統品質的意願也不高,這個從客戶端的品質規範要合約化地貫徹到委外商,更需要多方折衝。

然而,整體品質上的驗證有一定的困難度,因為這是多個服務商上中下游地整合服務,就當下的情境,有四個主要系統團隊各屬不同公司完成一個及時商業流程,還不包括數個 IDC 機房的 IT 團隊以及非即時的線下服務團隊,涵蓋 7 個以上的大小公司。

我們最常做的壓力測試在當下只能分段進行,但因為分段,很難有高的涵蓋率,且要偕同 IDC 的朋友一起完成,自主性受限。而我們僅能了解在自己這一段的壓力,模擬來源端並隔絕對目的下游服務商的呼叫,未能從最上游的來源需求一次壓到最下游的服務供應者。只有靠日常監控分析。

在整個流程的監控也有問題,我們很難跨越到對方去監控,基本上也不可能。因為一但幫別人監控,那責任就落到自己身上,跨團隊、部門都有障礙,何況跨公司。但監控與應變能力就在供應鏈內受損,尤其服務供應商力有未逮時,重傷整個供應鏈。換句話說,即時線上服務對供應鏈的挑戰更甚以往。

 

 

現今,不到一個星期,除了增加設備,排人力到時全天監控多個效能瓶頸點外,能做的不多。然而,突然的活動之特性我們不清楚,尖離峰時間不明,要 7*24 緊繃待命並非當下團隊的人力規劃。其實,很難談未量化與質化的口頭保證…