發表文章

目前顯示的是有「電腦軟體」標籤的文章

OpenRowSet和OpenQuery的問題

這次遇上的問題是,每當執行EXE [某個SP] 時, 程式會告訴你說沒有資料行或是沒有權限。 可是到了目標的SQL Server查了一下,對方的確有開OpenRowSet的權限, 換句話說問題不是出在權限開關那邊。 於是上網查了一下,發現只要在原本的連線字串裡面, 多加兩個指令就能搞定,分別是… SET NOCOUNT OFF SET FMTONLY ON 設定之後就能如預期那樣用SP查出東西了。 但值得注意的是,SET FMTONLY被列入不使用名單, 換句話說,往後新版本的MSSQL可能就會沒有這個指令, 可能的話還是用新指令去替換吧。

欄位資料切分與資料列增生

圖片
如果遇上一張表內的某個欄位儲存了多種狀態,而好死不死的這張表偏偏又是主要資料, 許多欄位不能隨意捨棄時,可以試試看這種做法。 起初的想法就是將欄位內的多筆狀態紀錄切開。 但是切開是切開了,那只是主要Table的其中一個Row啊! 天殺的還有千千萬萬個Row等著處理, 更麻煩的是,就算全切開了,其他欄位也跟人間蒸發, 想要Join找不到欄位Join,就像想吃火鍋端上來的偏偏都是刨冰。 於是就有了「既然要切開,那乾脆把切出來的這個數值掛上名牌」的想法, 如此一來就能知道這個被硬生生拆散的狀態數值的爸媽是誰。 上圖就是切分增生完的狀態。 主要資料表雖然資料量變多了,但資料欄位完整。 這種作法不知道有沒有正統的名稱,抑或根本沒人會這麼作, 但是客官就是要統計資料「鉅細靡遺」,大項也要細目也要, 在當下這顆菜比巴的腦袋裡只想得出這種方法,時間有限,就先這樣幹囉。 要做到這種效果,這裡使用的方法是找一段可以作出Split效果的Function。 這個Function在切分完欄位內的後,回傳的是Table型態,欄位為一個流水號和被切分出的值。 之後在預存程序裏面開始處理主要的Table。 只要利用迴圈和簡單的判斷式子就能作出這種效果, 之後要再Join其他Table也會比較順利,不怕沒欄位可以Join回去。

在win7上面匯入.bat檔到排程

圖片
選 擇建立新工作。 依照精靈的步驟一步步往下點, 會有一個地方可以指定執行的程式。 這個程式可以是一個.exe、 也可以是一個.bat。 指定完成後可以試跑一下。 在設定完成的排程上點右鍵>執行。 就能看到執行結果了。

LINQPad該怎麼設定?

圖片
LINKPad 是一款可以直接使用LINQ語法並且查詢資料庫的免費工具。 當然人家也有出付費版本,差在付費版本有自動完成。 而有了這工具,在 學習LINQ的時候不必開VS20xx、也不用特地寫測試網頁出來, 只要打開LINQPad、就能測試LINQ語法或是邏輯有沒有對。 開啟LINQPad時會發現左邊樹狀列有個add connection。 如果什麼都不設定直接next到最後,那LINQPad只會抓到系統資料庫,其他資料庫都不會出現在樹狀列表。這表示LINQPad無法跟其他資料庫連線。 這跟權限毫無關係,重點在於LINQPad預設的連線為(localdb)\v11.0 在add coonection的時候將連線位置改為127.0.0.1就可以讓LINQPad順利讀到本機資料庫。 如以下兩張圖: 如果直接本機登入、預設就可以了。 記得把Server那一攔的位址改為127.0.0.1 其他更多的LINQPad使用方法網路上都有介紹, 這裡只是筆記一下剛開使用時遇到的狀況。

唉歐ㄟ絲的VM實裝

圖片
看圖說故事,有問題社團問。 取得檔案是必須的。 如果沒有請洽DBA。 以下步驟是給不想自訂新環境的人用的。 首先進到目錄、會看到四個資料夾外加一個使用說明。 「使用說明」中有手動建立新環境教學。 其中第一個資料夾中是已經設定完成的VM環境。 在直接執行之前先去找unlock資料夾下的window目錄。 找到這個檔然後用系統管理員執行。 等跑好後,cd ../../Mac os x lion 找到一個看起來非常眼熟的logo。