2012年4月25日 星期三

如何刪除IBM DB2 ODBC DRIVER裡設定的別名?

        滿奇怪的設計,竟然不能直接刪,得下指令呢!

1.開啟DB2的指令視窗

2.輸入 db2

3.再輸入 UNCATALOG DATABASE TESTDB


連結伺服器"linked server"的OLE DB 提供者"IBMDADB2.DB2COPY1" 報告了錯誤。拒絕存取。

        當我建立好DB2的連結伺服器後,我試著使用SELECT語法去查詢連結伺服器的資料,結果出現如下錯誤

        訊息7399,層級16,狀態1,行1
        連結伺服器"linked server"的OLE DB 提供者"IBMDADB2.DB2COPY1" 報告了錯誤。拒絕存取。
        訊息7350,層級16,狀態2,行1
        無法從連結伺服器"DB2TEST" 的OLE DB 提供者"IBMDADB2.DB2COPY1" 取得資料行資訊。

2012年4月23日 星期一

使用IBM DB2 ODBC DRIVER,來建立DB2的連結伺服器

        如果想利用SQL Server來連結DB2,強烈不建議使用Microsoft OLE DB Provider for DB2喔!

        因為光是搞HostCCSID與PC code page這兩個編碼屬性我就快瘋了,弄了兩天我還是搞不定,不是中文顯示問號,就是變亂碼,再不然就是出錯,從1.0試到3.0,中英文版都試了也一樣

         後來使用Microsoft OLE DB Provider for DB2的資料存取工具去試試看到底支援哪些編碼,明明有950的啊,但偏偏設了就會出錯

錯誤一
         無法連接至資料來源 'DB2TEST':
        發生內部網路程式庫錯誤。要求命令包含了目標系統無法辨識,或不支援的參數值。         SQLSTATE: HY000, SQLCODE: -385
錯誤二
        無法連接至資料來源 'DB2TEST':
        處理命令時,發生一或多個錯誤。

        就在我要放棄的時候,我改用IBM DB2 ODBC DRIVER看看,結果上面那兩個屬性我根本不用設就OK了,中文顯示都很正常喔,真是白白浪費我兩天時間啊

2012年4月19日 星期四

[T-SQL]分組排名(SUBSQERY、CTE及用TOP))


        如何從銷售訂單資訊[SalesOrderHeader]資料表中,找出每個顧客[CustomerID]其應付總額[TotalDue]前三高的訂單[SalesOrderID],並顯示名次?呈現結果如下

        注意應付總額一樣的也要列喔

2012年4月14日 星期六

[DIY]RJ45轉RJ11

        最近很忙,都在維護公司客服的系統,連類比電話線都要自己DIY,我不是DBA嗎!怎麼愈來愈不像啦

        兩端都是RJ45網路線頭的,怎麼弄成一端是RJ45,另一端卻轉成四線的RJ11電話線頭呢?這用到的機會很少,現在交換機到IVR還在用類比內線的情況應該不多吧

 

2012年3月10日 星期六

利用IPSec建立內部防火牆以提升資料庫安全2

        上一篇介紹IPSECCMD的使用範例,本篇介紹可以用在Windows Server 2008上的Netsh IPsec命令吧,詳細使用方法請參見Netsh Commands for Internet Protocol Security (IPsec)
 
        Netsh IPsec比起IPSECCMD更好的優點有以下兩點(缺點是指令比較多行):
  1. IPSECCMD對篩選器清單的篩選器只會整個取代,而Netsh IPsec對篩選器清單的篩選器是可以一筆一筆附加的
  2. IPSECCMD對原則的每次變更都要先停用再啟用,變更的部分才會生效,而Netsh IPsec只要是對已經指派的原則所作的變更都是立刻生效 
       對了,忘了提使用IPsec不僅可當內部防火牆,還可順便對網路連線作加密!像你如果用Wireshark這類的封包分析軟體來擷取網路封包,未加密前是可以從封包中查出使用的T-SQL指令,但如果用IPsec加密後是看不出來的喔!

2012年3月6日 星期二

如何取出某段期間內的每個周日?

         MSDN上有網友在問,已經有高手利用CTE去解囉,小弟剛好在練習水平思考的技巧,在此提供另一種解法,就是利用SPT_VALUES提取列表去解

        小弟認為使用SPT_VALUES比CTE更直覺的去解這個問題,效能也許第一次不比CTE快,但第二次將SPT_VALUES載入記憶體後,就不輸CTE囉,而且重點是此方法從SQL 2000到SQL 2012 (RC0)都適用