我有一個封裝,會從遠端FTP下載XML檔案到本機,然後用Foreeach迴圈容器列舉下載來的檔案,將完整檔案名稱寫入filename變數,然後將filename傳入當參數對XML檔作一些檢核,檢核成功之後再傳入filename給執行SQL工作(呼叫SP用OPENROWSET)將XML檔案寫回資料庫。
原本排程執行都很正常的,突然之間發生錯誤,錯誤擷取訊息如下
無法大量載入,檔案"c:\file\20110509(X&X-DDD01).XM" 不存在。
2011年5月21日 星期六
2011年5月15日 星期日
你知道Update陳述式更新欄位值的同時可指派給變數值嗎?
你可曾注意到BOL關於UPDATE (Transact-SQL) 這章節裡,有下列這樣一行嗎?
SET @variable = column = expression
平常我為了取得Update後的某欄位值,通常會在Update之後再下一次Select去取得該欄位,但其實不用那麼麻煩
SET @variable = column = expression
平常我為了取得Update後的某欄位值,通常會在Update之後再下一次Select去取得該欄位,但其實不用那麼麻煩
2011年5月14日 星期六
在指令碼元件中寫回ReadWriteVariables中的變數
情況是在資料流程中,我有一SQL命令(OLE DB來源),中間利用多重傳遞,產生三個副本寫到三個不同的資料表ABC(OLE DB目的地),三個資料表ABC幾乎只有幾個欄位上的差異,一次只會傳遞一筆資料到三個資料表
三個目的資料表都有個InsuranceID欄位,但是只有資料表A是設成identity,資料表BC都沒有設,然後每次傳遞三個資料表的InsuranceID都要一樣才行,要不然前端程式會對應不到,所以在SQL命令中已使用( ident_current('資料表A')+1)先取得InsuranceID了,這樣產生的三個副本就都一致啦
我想順便取得這次的InsuranceID欄位值,方便我將InsuranceID值Update到另一個資料表去,但是我不想再下一次SQL命令啦,想到說我可以再用一個副本,然後用指令碼元件去接那個欄位,寫入變數供之後使用,這是我想到可以不用再下一次SQL命令做法,不知還有更簡單的方法嗎?
三個目的資料表都有個InsuranceID欄位,但是只有資料表A是設成identity,資料表BC都沒有設,然後每次傳遞三個資料表的InsuranceID都要一樣才行,要不然前端程式會對應不到,所以在SQL命令中已使用( ident_current('資料表A')+1)先取得InsuranceID了,這樣產生的三個副本就都一致啦
我想順便取得這次的InsuranceID欄位值,方便我將InsuranceID值Update到另一個資料表去,但是我不想再下一次SQL命令啦,想到說我可以再用一個副本,然後用指令碼元件去接那個欄位,寫入變數供之後使用,這是我想到可以不用再下一次SQL命令做法,不知還有更簡單的方法嗎?
問題來了,我想說只要在指令碼元件中寫一行code就行了,結果出現如下錯誤
在 PostExecute 外部無法使用已被鎖定進行讀取和寫入的變數集合。
ReadWriteVariables的設定如下圖
2011年5月6日 星期五
你知道SQL 2008有optimize for ad hoc workloads選項嗎?
今天不小心逛到個部落格Do You Enable “Optimize for Ad Hoc Workloads”?,看到作者作了個投票,調查使用SQL Server 2008的有多少人啟用optimize for ad hoc workloads 選項,結果不知道這個選項所佔的比例竟然最高呢,我也屬於不知道這個選項的人,因為我還在用SQL 2005啊,當然不知道有這個選項
不知道的沒有關係,重點是這篇文章衍生的幾篇文章,都是關於最佳化執行計畫快取的文章,我覺得都還滿有參考價值的,特此紀錄一下,也給各位參考,有興趣的自己點進去看吧!
不知道的沒有關係,重點是這篇文章衍生的幾篇文章,都是關於最佳化執行計畫快取的文章,我覺得都還滿有參考價值的,特此紀錄一下,也給各位參考,有興趣的自己點進去看吧!
訂閱:
文章 (Atom)