2013年3月10日 星期日

[sp_send_dbmail]將TABLE輸出成有隔行換色效果的HTML

        用Embed的CSS來實現比較簡便,但缺點不是所有的的收信應用程式都有支援,像Gmail就無法正常顯示,除非改用Inline的CSS囉

        像下圖這樣的隔行換色效果,看起來比較美觀,也比較專業


2013年3月5日 星期二

Security Change Snapshot2取得安全性權限的資訊

    參考Nate Hughes的Security Change Snapshot這篇,可以取得SQL Server Logins, Database Permissions and Role Members的安全性資訊,還可用日期取得異動的紀錄,這想法很不錯,但少了伺服器層級的安全性資訊,於是自己加了上去,並改成SP就放上來啦,很感謝Nate Hughes的分享


2013年1月28日 星期一

出現大量Network I/O等待

        之前有啟用SQL 2008R2的資料蒐集,也安裝SQL Server® 2012 Performance Dashboard Reports,一直想說有了這些好看的報表可以幫我看到什麼?今早就看到了奇怪的東西了,伺服器統計表的SQLServer等候出現大量的Network I/O等待,如下表,點進去發現是ASYNC_NETWORK_IO的比例最高

2013年1月10日 星期四

DBCC CHECKDB出現2570一致性錯誤

    最近升級到SQL 2008 R2 x64版,在備份資料庫前加了資料完整性檢查的排程,隔天發現完整性檢查排程執行失敗,執行的指令如下

DBCC CHECKDB (test) WITH NO_INFOMSGS, ALL_ERRORMSGS, DATA_PURITY

    依據DBCC CHECKDB裡錯誤報告一節指出,每當 DBCC CHECKDB 偵測到損毀錯誤時,都會在 SQL Server LOG 目錄中建立傾印檔案 (SQLDUMPnnnn.txt)。

    在SQL Server記錄檔裡也可以看到傾印檔案的位置,如下圖


2012年11月29日 星期四

[SQL2008R2]非sysadmin如何以最小權限執行舊版DTS?

        在SQL 2008之前的版本,像是SQL 2000,由於系統預設就把DTS 系統預存程序的「執行」權限授與 PUBLIC,所以只要有SQL登入帳號,就可以取得DTS封裝的清單;到了SQL 2005,用SSMS至管理/舊版/展開Data Transformation Services,會檢查是否有sysdtspackages的查詢權限,預設是沒有所以就看不到;SQL 2008更為了增加DTS封裝的安全性,已經撤銷 PUBLIC 對於 DTS 系統預存程序的「執行」權限呢!可參考保護儲存在 SQL Server 中的 DTS 封裝安全此篇的說明

2012年10月14日 星期日

連結伺服器 "linked_server_name" 的 OLE DB 提供者 "IBMDADB2.DB2COPY2" 提供了不一致的資料行中繼資料。

        最近透過Linked Server以SELECT 使用 4 部分名稱去查詢DB2的資料,如下範例

SELECT * FROM DB2.TEST.SCHEMA1.TABLE1

        結果出現下列錯誤:

連結伺服器 "DB2" 的 OLE DB 提供者 "IBMDADB2.DB2COPY2" 提供了不一致的資料行中繼資料。回報物件""TEST"."SCHEMA1"."TABLE1"" 的資料行 "Column1" (編譯時間序數 7) 在編譯時間有 14 的 "DBTYPE",而在執行時間有 131。

2012年10月7日 星期日

Database Mail的錯誤:5.5.1 SMTP AUTH is required.

        有天一早到公司竟發現我所有SQL Server上的作業幾乎都失敗了,真是嚇到我了,查看作業的歷程紀錄,發現都是失敗在發送信件的元件那裏,印象中公司用的Exchange前一陣子有升級,但怎麼會突然無法發送郵件呢?

        一開始我先用簡單的VBS在Server上發測試信看看,結果可以成功寄信!接著我測試SSIS封裝裡用VB.NET寫的發信程式,結果會拋錯,再接著我用Database Mail試試,結果收不到信,Database Mail紀錄有出現錯誤訊息,如下圖