Skip to main content

Posts

Showing posts with the label SQL Server

[Raspberry pi] 陽台的老鼠偵測器

前言: 話說前陣子爸爸家陽台不斷出現米奇老鼠,立刻清理陽台所有東西,然後又跟市政部門反映問題,可是情況還沒有好轉,米老鼠來完一隻又一隻,我爸陽台在老鼠界應該是網紅打卡聖地(誤),要不然就是米奇老鼠版米奇林三星餐廳(?) 雖然我們抓到了三隻,到上兩個禮拜為止還有至少一隻一直抓不到,每天淩晨還會來吃事後煙留下老鼠屎,真_北。 這隻老鼠對傳統攻擊有抗性,有IT9朋友前陣子用Raspberry pi自製了一台electric mouse trap ,用pi的超聲波雷達放在鞋盒裡,鞋盒裡有一堆食物,底部佈了鐵網,偵測到有老鼠進去以後立即關門通9V電,通個1分鐘再放牠離開,大推我自己也造一台 (Youtube片搜尋一大堆,人類真變態啊,朋友好變態啊)。可是我覺得這樣又好像有點太殘忍,不如先偵測牠們什麼時候來,嚇嚇牠們看看有沒有效果再說吧。 目的: 用Raspberry pi及手上有的感測器弄一隻放陽台用來偵測和嚇嚇老鼠的東西,並把紀錄圖像化到雲端給老爸使用。 邏輯及設計: 當老鼠進入偵測範圍,Motion Sensor偵測到生物活動Raspberry pi 處理來自Motion Sensor的訊號,如果夠強的話開始準備作出回應 Raspberry pi在Angry cats sounds中隨機選出叫聲,再經由Speaker輸出貓叫聲 Raspberry pi指示強光元件發出強光束照射目標 把偵測計數上傳到雲端圖表 材料: Sensor 在網路上看了一些Raspberry pi wild animal camera ,很多也是用Motion Sensor先偵測動物再來,我用的是PIR Motion Sensor被動式紅外線感測器,有低耗電成本便宜的好處。[1],而且可手動調整靈敏度及反應時間。  PIR Motion Sensor就是下面這個 圖片來源: learn.adafruit.com 可手動調整敏感度還有反應時間,這個有點不好調,要試好多遍才找到最佳位置。 可以在Raspbian中輸入pinout查詢GPIO避免插錯 圖片來源: learn.adafruit.com . 一台Raspberry pi 這次使用較舊的Raspberry pi model B+ 萬一老鼠生氣被咬爛錢包也不太痛 . ...

[SQL Server] Availability Group 無法正常運作復原筆記 (連案例測試)

案例分析: 前幾天公司一台SQL Server突然掛點導致大停工,筆記一下這一次的經驗及研究。 SQL Server軟體部分由 兩台Replicas 及 一個Share File Witness 所組成,硬體部分兩組Replicas分別位於兩台完全沒有關連的伺服器上。 用Ping確認兩台伺服器 生存 情況,發現Secondary Replica沒有回應,到伺服器房間發現Secondary Replica硬體發生故障 連呼吸燈都沒了 ,可是好奇Secondary Replica當掉為什麼整個服務會死,進入Primary Replica看看情況。 在Primary Replica中: AlwaysOn Dashboard已經沒有回應,並且錯誤,如下: 在Object Explorer中,AlwaysOn的目錄發現Availiability Groups狀態為Resolving。Primary Replicas同樣顯示為Resolving,如下。 再進入Windows的FailOver Cluster manager,發現整個node的選項都不見了,只剩下Cluster Events可以讀取,打開來看,發現Cluster整個掛了 背脊涼涼的 ,並且出現去不到File Share Witness的情況。 解決流程: 由於Cluster已經沒有功能 已經有壯士斷臂的決心 ,以儘快救回服務為前題。 在Primary的伺服器上進入Services,把Cluster Service Disable掉。 然後進去Failover Cluster manager,嘗試 Force Cluster start without a Quorum,成功之後在Quorum Configuration中出現"Cluster is running in ForceQuorum state. brabrabra.." 資料庫還是不能連接。 按照此篇 文章 的設定,手動設定node weight, 全國最大的線上 資料庫上線啦。 重新測試AG設計: 事情發生後我在測試環境模擬了各種情況,結果如下: 總結: 這次經驗令我重新review了AG的技術,得出了以下的結論: AlwaysOn技術真的是Always...

[SQL Server] 在AG下如何更快匯入資料和Rebuild Index? (使用Import/Export Wizard)

背景: 公司的測試環境需要匯入Production資料庫的所有資料,然後必須Rebuild Index。資料庫規模約150GB; 匯入測試環境要求在兩個小時內完成。 測試環境使用SQL Server 2012技術,Primary跟Secondary硬體效能上有明顯落差( Secondary差很多 )。 之前經驗在測試環境的Primary中使用Import/Export wizard 匯入大量資料發現很慢。 測試環境Primary跟Secondary之間使用Sync Commit Mode。 估計匯入資料很慢可能的原因: 發現每次進行資料匯入時,Secondary的I/O出現破表的情況。Rebuild Index時也同樣出現此情況。最大原因是因為選攞了Sync Commit Mode,由於兩台硬體速度上的差異,出現大量HADR_SYNC_COMMIT 拖慢進度。 小弟之解決方案: 先把需要匯入資料的測試環境資料庫從AG中移除。 在Primary中使用Import/Export Wizard匯入資料,會明顯發現速度快了接近200%。 匯入完畢以後, 在Primary中Rebuild Index。 在Primary中進行full backup。 把資料庫重新加進AG。 總結: 利用先把資料庫從AG中移除再加回去這種方式匯入資料會比之前速度快了一倍多,對於缺乏預算硬體又不好的測試環境效果比較明顯,後來小弟在Production用同樣方法,由於Production Primary跟Secondary兩台機器也是開外掛的級數,加上Fiber加持所以匯入速度沒有很充分的理據需要這樣弄,畢竟年關將近,Production的設定還是少碰為妙....

[SQL Server] 在Availability Group中同步兩台Replicas中的SQL Logins,Linked Servers

問題: 公司的SQL Server導入了AlwaysOn 技術,當failover發生的時候出現無法登入SQL Server的情況。 研究: 跟Microsoft了解以後AlwaysOn技術Primary跟Secondary兩台伺服器的Database Objects是完全獨立而且不相通的,那就是說無論Logins、 Linked Server、 Agent Jobs也要在兩台伺服器分別建兩份。 解決方法: Logins: 使用Domain account: 可直接解決問題。不過歷史的問題小弟不能選擇這個方案(灑花) 使用Contained Database: 原理就是把Database的所有相關東西打包變成一個Object,就不會發生Data同步,Database Object不同步的問題,可是很SAD,我也不能用這個方法。 手動同步兩台伺服器的Logins: 由於每一個 Login 有一組獨一無二的SID,所以就算在Secondary建一個使用者名稱跟密碼也一模一樣的Login,當failover發生時也會出現無法登入的情況。要手動同步兩邊的Login可以看 Microsoft的官方教學 。重點是同步兩台伺服器的Login SID,UserMapping部分不需要手動同步。 不過萬一Primary的Login更改了密碼,就無能為力需要利用以上方法再同步一次了。(哀) Linked Server: 很抱歉,你需要手動在Primary那邊的Linked Server一個一個的產生SQL,然後放回Secondary,而且每次增加Linked Server也要這樣做。 結論: 顯然AlwaysOn技術集中關注資料的部分,Server Object,包括SQL Logins對於Primary跟Secondary兩台伺服器來說是完全獨立的東西需要分開來建立跟維護,想導入AlwaysOn技術的大大需要注意,不過可分開獨立Storage存放兩份data是小弟選擇它的原因之一。 同場加映: 如何找出已經失效或者沒有連結任何資料庫的使用者帳號? 參考這條SQL

[SQL Server] 解決SQL Server進行HA後遠端使用Management Studio登入出現「Cannot generate SSPI context」錯誤之問題

新年快樂,先祝大家伺服器健康(無誤)!剛剛的週末在公司為一台SQL Server安裝Availability Group遇到一些問題,筆記了起來希望對大家有用。 Case: 已安裝Availability group 的SQL Server 無法利用PC Client上的SQL Server Management Studio使用Virtual Host name進行登入(AD帳號),並出現「Cannot generate SSPI context」(無法產生 SSPI 內容) 。 原因: 根據 Microsoft的說明 : 「 Security Support Provider Interface (SSPI) is a set of Windows APIs that allows for delegation and mutual authentication over any generic data transport layer, such as TCP/IP sockets. Therefore, SSPI allows for a computer that is running a Windows operating system to securely delegate a user security token from one computer to another over any transport layer that can transmit raw bytes of data.  The "Cannot generate SSPI context" error is generated when SSPI uses Kerberos authentication to delegate over TCP/IP and Kerberos authentication cannot complete the necessary operations to successfully delegate the user security token to the destination computer that is running SQL Server. 」 總括來說, 就是無法把Client端的...

[SQL Server] 解決log檔(ldf file)過度膨脹的實戰經驗

背景: 公司最近把一套每天有相對大量交易 (之前公司更大很多很多倍) 的系統轉移到SQL Server去,不到一個月交易檔(ldf)已經貼近數據檔(mdf)的size,真的好可怕啊。 身為SQL Server的DBA當然  要替月行道,警惡懲奸  不能讓這種情況繼續下去。 解決方案選擇: 第一個我想到的方法是把Database的Recovery model設成Simple,簡單來說就是不需要交易記錄,對於Insert Delete Update 很少的系統勉強還說得過去,不過對於交易量大的系統來說就不行了,沒有交易記錄萬一資料庫突然往生,總不能用full backup還原然後要User重新輸入一天的交易吧。 第二個方法是定時進行備份。為什麼log大小跟備份有關係呢? 簡單來說,資料庫的ldf檔就是用來儲存Full Backup後所發生的所有交易。如果你從今天從來沒有為資料庫進行過備份, 理論上ldf檔會無限的膨脹下去 ,而且利用Shrink指令也無法把交易檔壓縮。因為沒備份的話就等於ldf檔裡面的東西統統有用,當然沒辦法壓縮了。所以要保持交易檔案的size就是要持續保持備份,在每次備份完了以後自動把交易檔Truncate成初始大小,這樣可以長期保持相對小的交易檔。 所以,最後我選擇了方案二。 實作流程考慮因素: SQL Server的backup model一定要一份full backup再塔配其他備份檔一起使用( SQL Server的備份model解釋在此 ),要達到控制ldf檔案大小的目的,備份可以每天只是Full Backup,也可以是Full->T-log,也可以是最複雜Full->Diff->T-log,我考慮使用那一種的因素主要有以下: 資料庫本身只是約55GB不是太大; 每天交易量不多,每分鐘約10筆交易; 使用者允許少量的data loss,一天Data loss肯定不行; 資料庫只是辦公時間才會用。 我個人認為Backup Plan越簡單越好,發生狀況的時候已經很緊張,複雜的Backup只會令事情更糟。反正今天硬碟實在是太便宜,天天備份幾次也無所謂,因此在儘量簡化備份流程的前題之下,小弟傾向 每天Full BackUp一次,每小時備份一次T-lo...

[SQL Server] 資料遺失後的檢討

前言: 公司的SQL Server有不同的Job(工作)每天負責把AS400的資料匯入到SQL Server。身為DBA當然要確保這些Job是OK。由於這些Job是由業務系統的管理員提供需求再由我來寫,對於Job的內容其實全不知情,這就是問題所在(哀)。 上星期接到業務部門投訴在公司網站上找不到一個多月前的申請,同事叫了我去查資料庫,果然出了意外。這個資料表每天給AS400的舊資料覆寫,造成新紀錄只能在SQL Server內存在一天。又剛好我們的第三方備份只保存一個月,又剛好我們沒有使用SQL Server內建的備份功能,當然,我就是回不去了.... 至於結果,人家部門才不會理你是你的錯還是其他人的錯,總之資料不見了就是DBA的問題。最後好不容易堐過了幾場補救方案的會議.... 問題: 只有一個月的備份足夠嗎? SQL Server只有Transaction log可以把資料救回來嗎? 研究 第一點: 個人建議三個月是比較穩妥的做法。之於我們公司不知為什麼硬碟空間少得非常可憐,可以考慮每星期Full backup, 然後每天Diff的做法。總之,只備份一個月的確有很多難以估計的風險。 第二點: 不行,死心吧 。Transaction Log是交易的Delta資料,如果最初的時候沒有做一次Full Backup, 因為沒有被參照的完整備份,光有Transaction log是沒用的。如果你的SQL Server選擇的是Full Recovery, 可以看下這張圖,這張圖清楚說明先有Full backup後面的log才有意義。清楚的說明可以參考Microsoft 這篇文章 。 同學,死心吧... 總結: 異質資料庫資料同步的確是個很難搞的問題,會有很多不可預期的因素,因此個人是認為資源許可的話還是把備份時間盡量拉長,如果空間不足可以選擇Diff BackUp把備份時間再保持多一點點... 參考資料: Differential Database Backups

[SQL Server] 如何轉換Collation?

歷史久遠的老品牌公司嘛,就是歷史包袱很多經常要考慮相容性的問題。因為公司舊的Sql server不是使用預設的Collation,如果我在新資料庫硬要使用新的Collation,很多使用HKSCS big5碼的香港字符就會爛掉(例如啱,嘅)。最後為了趕工加上老闆的決定要轉回用舊的collation。改Collation這回事....很抱歉是沒有GUI可以使用(噗)。 先把SQL Server 2012安裝光碟mount到SQL Server. 例如我把整個image放在C:\sqlserver. 打開cmd, 把位置移到C:\sqlserver, 然後輸入 Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS=administrator /SAPWD=<你sa的密碼> /SQLCOLLATION=Chinese_Traditional_Stroke_Order_100_CS_AS_KS_WS_SC 在這裡 /SQLSYSADMINACCOUNTS一定要輸入administrator, 輸入sa不知道為什麼無法確認admin帳號 囧, 確認無誤後按Enter. 沒有問題的話大概跑個五分鐘, 從新看到C:\sql server就完成了 (M$一點提示都沒有真陽春) 接下來當然是把之前備份的設定慢慢重灌回去囉(哀)

[SQL Server]Linked Servers中的login mappings問題

話說前陣子同事打算利用SQL Server 內我已經設定好的Linked Server更新AS400的資料表(table). 出現不能更新的錯誤. 發現原來設漏了東西....囧. 以連接AS400為例子, 如果有大大跟我一樣是用ODBC做連結, 並且在AS400那邊有獨立登入名稱跟密碼的話. 當連結完了以後還要進行user mapping的動作, 否則可能會因為權限不夠更新不到. 在設定之前要先考慮這個Linked Server是否給全部SQL SERVER的使用者使用, 還是只是某些使用者才有權限進行存取. 如果Linked Server打算只開放給某些使用者存取的話: 首先選擇目標的Linked Server, 按右鍵-> "Properties" 轉到 "Security"頁面-> 按一下"Add", 在"Login Login"中選擇一個SQL Server的帳戶, 例如你打算從ABC資料庫存取Linked Server的話, 最好是使用ABC資料庫的使用者帳號. 然後在"Remote User"跟"Remote Password"中輸入AS400那邊的帳號跟密碼按OK. 如果你打算開放Linked Server給所有SQL SERVER的用戶存取的話: 首先還是跟上面一樣進入到Properties的畫面->Security的部分, 往下找到 "For a login not defined in the list above, connections will" 這一欄. 選擇 "Be made using this security context:" 輸入AS400中打算用來登入的名稱跟密碼然後"OK." 那麼所有SQL SERVER的使用者也可以存取AS400的資料庫囉...

[SQL Server] 關於發送電子郵件(email)例子

今天小弟需要在SQL Server 2008上建立一個每天定時執行的Jobs(作業), 而這個Job出現問題的時候會發出email告訴DBA. 由於公司的SQL Server並沒有設好mail server, 所以今天在網路上整理了一下資料, 分享給有需要的大大參考: 先設定DataBase Mail: funkent大的 SQL Server 無敵手冊第十三篇-設定SQL Server的Database Mail  講得很詳細, 小弟就不多說明了. 設好以後可以按"Send Test E-mail" 做下測試. 再來把DataBase Mail 連結到SQL Server Agent: funkent大的另一篇  SQL Server 無敵手冊第十四篇-設定SQL Server Agent使用Database Mail  也有很詳細的說明怎樣弄. 在SQL Agent底下建立Operator帳號: 同上也有介紹怎樣設定. 最後在作業(Job)中的Notifications頁面, 在e-mail中選擇剛剛建立的Operator. 完成. p.s:  funkent關於資料庫的文章寫得很不錯, 要用的幾乎都寫到了, 所有文章可以到這裡 看看

[SQL SERVER] 找出LOCK方法懶人包

話說休假回公司才不到兩天SQL SERVER就出狀況 Orz 昨天同事跟我說文件系統不能存取ID, 第一件事當然想到是存放ID的資料表LOCK住了. 要查出LOCK方法其實有很多, 以下是小弟歸納的網路資源, 希望幫到大家 什麼是LOCK? 德瑞克大的解釋很詳細:  http://sharedderrick.blogspot.com/2007/12/blocked-lock-connectoin.html sp_lock: 使你對系統中發生的LOCK有深入的了解。它會從master資料庫中的syslockinfo中截取與LOCK相關的大量訊息[1]. 不過我認為由於這個功能的資訊太多, 而且資料沒有好好的做sorting, 所以在危急關頭未必有閒去慢慢看. 在sp_lock會看到spid、dbid、objid、indid、type、resource、mode和status共八個欄位[2]. spid: 連線ID. 可配塔sp_who找出用那些用戶和該連線(spid)有關連. dbid: 資料庫的唯一編號 Objid: 資料表的唯一編號, 可用 select object_id('<table name>') 找到資料表相關Objid 其他的欄位可以在 這裡 找到相關意思. sp_who2 sp_who的加強版本. sp_who主要提供 Microsoft SQL Server Database Engine 執行個體中有關目前使用者、工作階段和處理序的資訊[3]。而sp_who2比較像是sp_who的view, 把sp_who的資料整理得比較好. 小弟經常用它來找出那台PC的發出的process產生了LOCK.  然後毆飛那個user 列出最初導致一連串其它處理序被鎖住的起始源頭(Blocking locks) 很多時候LOCK住的原因是其他的LOCK引發的, 要找出這種關係可以用下面網址的SQL 列出最初導致一連串其它處理序被鎖住的起始源頭 http://www.dotblogs.com.tw/karen0416/archive/2011/11/18/58623.aspx 或者是德瑞克大寫得好好用的SQL http://sharedderrick.blogspot.co...

[SQL Server] 移動資料庫檔案

有使用SQL SERVER的大大也知道SQL SERVER的資料庫其實只是一個檔案(感覺好虛). 最近公司要把資料庫檔案移到新硬碟, 寫下了一些T-SQL順便筆記一下步驟: 首先把要移動的資料庫離線(OFFLINE), 例如我的資料庫是dbABC ALTER DATABASE dbABC SET OFFLINE WITH ROLLBACK IMMEDIATE WITH ROLLBACK IMMEDIATE 跟據 這裡 的解釋是說把所有在跑的transaction全部ROLLBACK.   如果發現不行的話, 可以用下面的指令把佔用database的process殺掉: exec sp_who2 ( 把所有資料庫在跑的sessions列出來) kill <process_id> (幹掉它)   移動資料庫檔案及log file到新硬碟去: ALTER DATABASE GEE MODIFY FILE ( NAME = ABC , FILENAME = 'D:\dbABC.mdf') ALTER DATABASE GEE MODIFY FILE ( NAME = ABC_log , FILENAME = 'D:\dbABC_log.ldf')   重新啟動資料庫: ALTER DATABASE GEE SET ONLINE   喝淡定紅茶

[SQL Server] 利用Linked Server轉移大量數據到SQL Server之方法(以AS400為例)

[20140110] 新增OLE DB版本 上次提到當我們進行異質資料庫的資料轉移,使用SQL Server內建的工具經常會發生很多不明的錯誤(例如Column size太大)。那怎麼辦呢?總不可能把資料全部變成insert Statement吧?經過爬文以後小弟最後選用了SQL Server裡的Linked Server功能. 也成功轉移了超過2000萬筆資料的資料庫,雖然可能並不是好方法也希望對大家有幫助 :-) 什麼是SQL Server 的Linked Server? Linked Server (連結的伺服器) 根據 msdn的解釋 , 就是 "可讓 SQL Server Database Engine 對 SQL Server 執行個體外部的 OLE DB 資料來源執行命令。" 再說白一點, 就是可用T-SQL查詢其他品牌的資料庫。 來源資料特性: 資料在老舊的V5R4 AS400上. 很多資料表(Table)的欄位(Columns)很多,接近50個欄位以上。 欄位的size很大, 長度達3000或以上, 而且因為是char的關係就算改成varchar也沒用. 資料量大, 很多Table超過200萬筆. 準備工作: 由於這次使用的是AS400的ODBC或OLE DB, 所以在SQL Server端一定要先安裝IBM iSeries Client Access. 在SQL Server中先建立一空的資料庫 需要有SQL Server SA權限的帳號 動手做: 建立Linked Server 打開SQL Server Management  Studio, 登入後到Server Objects->Linked Servers->按右鍵新增Linked Server 如果你用的是ODBC 在"Linked Server"中填入此Linked Server的名字, 任意也OK, 由於這次對象是AS400, Server type要選擇Other data source, 由於這次使用的是ODBC connection, 所以Provider一欄要選擇 "Microsoft OLE DB Provider for ODBC Drivers...

[AS400] 小量數據轉移數據到SQL Server之方法 (2013/07/11更新)

這幾天要幫公司把data從老舊的AS400轉移到SQL Server上面去。 由於之前沒有任何經驗所以先問一下古哥。 很多大大也是使用SQL Server內建的Import Export Wizard。 以下是我利用odbc的方法成功移轉的經驗,未必是最好不過希望給大家參考一下。 準備工作: 先在目的SQL Server建立一空的資料庫, 例如"AS400" 由於我用的是ODBC,所以目的地端的SQL SERVER一定要先設好IBM的Client Access,我的版本是V5R4M0。最後要設好連接到成功連接到AS400的ODBC連接字串。 另外檢查一下Client Access中有沒有設定使用者名稱,不然等一下會連不到喔。 在ODBC資料來源管理員中選擇AS400的連接,按"設定" 在"General"頁面中按"Connection Options" 在"Use the user ID specified below"中輸入登入名稱,按"OK" 步驟: 在剛剛建立的空資料庫按右鍵-> Tasks-> Import Data,彈出匯入和匯出精靈後按下一步。 接下來是 "選擇資料來源" 頁面: 資料來源選擇".Net Framework Data Provider for Odbc" Dsn填寫ODBC中連接AS400的字串名稱,如我的ODBC字串是AS400ODBC,填寫的就是這個名稱。並不是Dsn=AS400ODBC;uid=terence 這種喔。 填寫完以後按下一步。 如果連接成功會來到"選擇目的地"頁面,不然就會出現謎一樣的錯誤,小弟試過的錯誤包括: DSN格式錯誤 在Client Access中沒有指定使用者名稱。 在選擇目的地畫面設好目的地的資料庫,如我目的地的資料庫叫AS400,設好以後按下一步。 選擇"從一或多個資料或檢視表複製資料"或"寫入查詢來指定要傳送的資料",我選的是第一頁,按下一步。 接下來選擇需要匯入的資料表,要注意的是在準備工作中提到的在Client Access中的User權限是否足夠。選擇好以後按下一步。 ...

[SQL Server] 關於香港常用字(或難字)的字元儲存問題

哎。又是歷史交給我們偽DBA的問題。 最近有很多big-5碼的資料從AS400轉移到SQL Server上去。 把Big-5的資料轉到SQL Server其實並不難(可參考小弟的 這篇 文章) 問題是資料中有很多Big-5編碼的香港字(或叫難字,造字,增補字,罕用字), 當這些字放到只有相容Unicode的資料型別(Data Type)的時候就會變成問號。 加上將來公司鐵定會慢慢放棄使用Big-5編碼改成Unicode,就算今天A眼開B眼閉,面對全民Unicode的趨勢早晚也是 單拖 要面對囧。現在做點研究,也許將來就省點事吧。 所以剛剛小弟就做了點小測試,首先建立一個Table包含以下data type的四個欄位,然後在每一個不同data type的欄位中新增同一筆含有香港字的數據。 char nchar varchar nvarchar 測試過程小弟就不多說了,結果如下圖: 結論: 如果資料欄位需要支援 Unicode,必須使用 nchar,nvarchar或ntext 型態。 nchar,nvarchar在同一欄位同一筆資料中可同時存在big-5或Unicode的香港字。 當存取Unicode的香港字的時候,請記得在Insert statement中加入N字,不然將無法存取。( 說明在此 ) 將Big-5編碼的香港字變成Unicode會是一種非常爆肝的過程(無誤)

[分享] 系統改善方案企劃書例子

如果今天老闆要你對某系統提出改善方案, 很多工程師包括我也不知道從那裡著手開始寫. 剛好遇到這次機會花掉了我畢生腦  精  力寫好一份SQL Server改善方案, 把小弟的文章部分內容分享一下希望對各位同業有幫助. 部分內容因為公司機密有所刪減, 請見諒 (公司要用英文寫, 抱歉沒中文版本= =") ------ Introduction: This study will focus on how can we improve existing SQL Server to provide more reliable, more secure and improve capacity in order to fulfill future usage. Current Status overview: Operation System: windows Server 2003 SP2 32bits with 3.75 GB ram. SQL Server version: SQL Server 2005 standard edition. numbers of databases: 18. Performance evaluation: We capture the sample data from 23/07/2012 to 27/07/2012. evaluating 8 indicators[1] covering memery, CPU, and harddisk performance. here is the result: Existing issues: Security:  Accounts level: XX% databases using administrator as its login account. That's mean using one account can access several databases. All developers known SQL Server admin username and password. Operating system level: According to M...

Popular posts from this blog

[軟體] 在Windows7 安裝骨灰級學倉頡軟體--快快樂樂學倉頡

前言: 話說我們這些用電腦宅齡超過十五年以上的挨踢人聚在一起的時候總喜歡提一些當年的技術,Duron鉛筆超頻這種骨灰級方案在圈裡是常識吧XD。 突然有朋友提到"快快樂樂學倉頡"這套DOS 1.0年代用來學打字的軟體,應該是很多港澳挨踢人的集體回憶吧。 有沒有方法在Windows7上回憶一下呢?答案當然是有啦! 方法: 這次我們會用到DOSBox這套軟體。根據官網說法" DOSBox is an emulator that recreates a MS-DOS compatible environment"。顧名思義DOSBOX就是一台MS-DOS的虛擬機器囉。安裝好以後在裡面安裝快快樂樂學倉頡基本上就OK了。 準備工作: 根據貴用戶的要OS, 先到 這裡 下載相對應的DOSBox版本,我裝的是Windows版本。 快快樂樂學倉頡的執行檔。(沒有的話可以私下問我) 步驟: 裝好了以後按下圖示開啟 進入到DOSBox主畫面 由於這裡是MS-DOS的虛擬機器,當然不會有任何其他檔案,接下來我們要把裝住 "快快樂樂學倉頡" 的資料夾掛載(Mount)到虛擬機器去。這裡裝住軟體的資料夾叫 "HPCJ",所以在浮標上輸入 mount C: C:\Users\xxxxx\Documents\Software\HPCJ 這句的意思是mount a disk called "C:", and its location is "C:\Users\xxxxx\Documents\Software\HPCJ",搞定以後按確定。就會出現已經mount好的訊息。 接下來可以直接存取"快快樂樂學倉頡" 資料夾的內容了。先輸入C: 然後按確定跳到剛掛載的C: 直接輸入"快快樂樂學倉頡"的exe名稱按確認。例如我的是Open.exe,按enter。 登登~!!成功了。 打了這麼多年,其實我打字速度也不快就是了。囧rz

[SQL Server]Linked Servers中的login mappings問題

話說前陣子同事打算利用SQL Server 內我已經設定好的Linked Server更新AS400的資料表(table). 出現不能更新的錯誤. 發現原來設漏了東西....囧. 以連接AS400為例子, 如果有大大跟我一樣是用ODBC做連結, 並且在AS400那邊有獨立登入名稱跟密碼的話. 當連結完了以後還要進行user mapping的動作, 否則可能會因為權限不夠更新不到. 在設定之前要先考慮這個Linked Server是否給全部SQL SERVER的使用者使用, 還是只是某些使用者才有權限進行存取. 如果Linked Server打算只開放給某些使用者存取的話: 首先選擇目標的Linked Server, 按右鍵-> "Properties" 轉到 "Security"頁面-> 按一下"Add", 在"Login Login"中選擇一個SQL Server的帳戶, 例如你打算從ABC資料庫存取Linked Server的話, 最好是使用ABC資料庫的使用者帳號. 然後在"Remote User"跟"Remote Password"中輸入AS400那邊的帳號跟密碼按OK. 如果你打算開放Linked Server給所有SQL SERVER的用戶存取的話: 首先還是跟上面一樣進入到Properties的畫面->Security的部分, 往下找到 "For a login not defined in the list above, connections will" 這一欄. 選擇 "Be made using this security context:" 輸入AS400中打算用來登入的名稱跟密碼然後"OK." 那麼所有SQL SERVER的使用者也可以存取AS400的資料庫囉...

[Windows7] 跨距磁碟區, 等量磁碟區, 鏡像磁碟區之區別

話說前兩天用來備份的USB硬碟無緣無故去領便當了. 大幸的是我一直有好好備份, 資料至少存在兩顆硬碟上, 所以備份硬碟掛了損失也不大(錢包除外). 所以昨天下班以後趕緊去買一顆seagate的2TB內置硬碟回家(感覺USB硬碟還是不太安全), 裝好以後突然想到一個問題: 現在我桌機總共有5顆硬碟, 首先是剛買回來的2TB, 1顆80G SSD, 1顆640G, 1顆320G, 1顆160G. (真多舊硬碟囧), 關於硬碟的部分Windows 7比XP多了一些選項, 應該選那個才對? 讓我自己先分析一下: 那麼零碎的硬碟應該選擇合拼方案為主 關於合拼的方案Windows7有三大選項, 分別是 跨距磁碟區 ;  等量磁碟區;  鏡像磁碟區三種, 應該怎樣選呢? 說穿了那三種其實就是軟體的RAID方案, 硬要改一些好像很簡單又不簡單的中文字 . 其實: 跨距磁碟區 = JOBD,  就是簡單把幾顆硬碟變成一顆大的邏輯硬碟,  資料的存放機制是由第一顆硬碟開始依序往後存放,即作業系統看到的是一個大硬碟(由許多小硬碟組成的)。但如果硬碟損毀,則該顆硬碟上的所有資料將無法救回。若第一顆硬碟損壞,通常無法作救援(因為大部分檔案系統將磁碟分割表(partition table)‎存在磁碟前端,即第一顆)[1] 等量磁碟區 = RAID 0 把資料分散在幾顆硬碟, 存取的速度比較快, 不過壞一顆又是全部壞掉. 鏡像磁碟區 = RAID 1 顧明思義有兩份data, 超安全, 不過由於write的時候也要write兩份, 所以速度會慢. 更詳細的解釋 這裡 [2] 魚仔大有好好的解釋說明三種功能, 小弟就再不說了. 總結: 那我要怎麼辦? 最後我選擇的是.... 什麼都不做 , 80G的SSD留給OS及程式專用, 640G的用來放照片/動畫/影片/影像檔, 320G的用來放文件還有裝一些不重要的應用程式(遊戲啦,遊戲啦,還有一些遊戲之類的), 160G的用來裝音樂還有.......你懂的. 至於2TB的那顆就是當成上面所有硬碟的mirror, 用sync工具即時備份. 為 什 麼 ? 因為JORB不是不好, 不過把那幾顆舊硬碟變一顆有很大的風險, ...