All posts tagged 't-sql' | The Will Will Web

The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

SQL Server 快速產生還原資料庫 T-SQL 指令碼的技巧

去年曾經分享過一篇【觀念釐清:SQL Server 完整備份、差異備份、交易記錄備份】解釋 SQL Server 備份觀念,看懂的人應該能清楚理解資料庫的備份過程與依序還原資料庫的方法,我以往都會認為這種依序還原資料庫的方法實在太沒效率,真的遇到資料庫災難的時候需要花不少時間準備還原資料庫的 T-SQL 指令碼然後才能批次執行將資料庫還原,不過最近意外發現原來在 Management Studio 有個非常棒的小技巧可以幫我快速產生還原資料庫的 T-SQL 指令碼,讓你不管是本機資料庫還原異機資料庫還原都能非常快速的完成!

... 繼續閱讀 ...

SQL Server 如果本機管理者與 sa 帳戶都無法登入怎麼辦?

前天公司的開發用資料庫主機的硬碟異常,為了拯救資料所以我把整個資料庫主機重灌了,安裝好之後意外的把資料庫裡的本機管理者登入權限移除 (BUILTIN\Administrators),隔天公司其他人由於原本的帳號都登入不了,因此改用 sa 嘗試登入 (重灌後密碼變了),結果卻嘗試到連 sa 帳戶都被鎖定,你說我該怎樣解決呢?^^

... 繼續閱讀 ...

DBCC CHECKTABLE 無法檢查表格名稱中有小數點的情況

在我們代管眾多客戶的 SQL Server 資料庫中其中有個客戶的資料庫非常特殊,他們的資料表命名都會有小數點在內,例如:[dbo].[Order.Profile],至於為什麼這樣命名已經不可考 (我猜是為了讓表格在 Management Studio 裡排序的比較整齊吧?!),這樣的設計在開發上的確沒有什麼問題,只要適切的加上中括弧 ( [xxxx] ) 即可,但是在管理面來說,就不是那樣可愛了,像我昨天為了要執行 DBCC CHECKTABLE 來檢查資料表時就試了好久無法成功,直到詢問微軟技術支援中心才得到解答。

... 繼續閱讀 ...

如何清除 SQL Server 的 Database Mail 紀錄與發送失敗郵件

SQL Server 提供的 Database Mail 功能非常好用,設定也很簡單,不過有在使用的人一定會遭遇到運作記錄過大的問題 ( Database Mail 紀錄 ),因此當到了需要清除的時候,就可以參考此篇文章說明進行記錄清除等作業。另一個使用的機會就是當有大量 Database Mail 郵件被產生或因為 SMTP 異常導致失敗時若需要批次刪除這些大量郵件,也可以透過系統內建的預儲程序進行刪除,以下是我的資料庫管理筆記。

... 繼續閱讀 ...

取得 SQL Server 資料庫正在執行的 T-SQL 指令與詳細資訊

今天有個客戶的資料庫發生了異常的鎖定狀況,但並不是鎖死 (Deadlocked) 的情況,所以必須要進一步分析才能知道問題的主因,不過在分析的過程中卻遇到了一個問題,那就是雖然知道是哪一條連線(SPID)出問題,但卻不知道應該如何快速查出這條有問題的連線實際執行的 T-SQL 為何,唯有查出這條 T-SQL 實際執行的內容我才能找出應用程式中的哪一段程式出錯,這個技巧算是非常實用喔!

... 繼續閱讀 ...

如何刪除 SQL Server 資料庫中重複的資料 (兩種不同解法)

今天在客戶端發現資料庫中存留有一些重複的垃圾資料,因此想透過 T-SQL 指令直接刪除重複的資料,不過一般透過常見透過 GROUP BY 的方式刪除重複資料卻不適用於今天的狀況,因為我們資料表的主索引鍵 (Primary Key) 是 uniqueidentifier 類型,不能透過 MAX 彙總函示運算,這時就要利用 OVER 子句並搭配 PARTITION BY 語法才能幫我完成任務。

... 繼續閱讀 ...

如何快速搜尋整個資料庫中所有表格所有欄位中的所有資料

最近在研究 TFS2010 的東西,不過這幾天慢慢的後悔安裝 TFS2010 繁體中文版,有些翻譯實在讓我太痛苦了,因為我現在看的資料都以英文為主,但當操作介面翻譯成中文後有時卻難以對應出影片或文章中講的項目到底在我的 Team Explorer 中到底是什麼項目,因此設法搜尋資料庫中上百張表格的所有資料,看看到底有沒有可以修改的地方。

... 繼續閱讀 ...

重建資料表時應注意 Management Studio 選項設定是否完整

上星期我們有台 SQL Server 出了一些狀況,有個資料庫其中一個資料表發生了一些問題,主要是發生分頁錯誤的情況,由於資料類型是記錄檔,不是一定需要存在線上,但筆數有三百多萬筆非常佔空間,當確認資料匯出後想要將目前的資料全數刪除,決定先 DROP TABLE 再 CREATE TABLE 比較快,但使用 Management Studio 在做重建表格時必須特別注意選項設定是否正確!

... 繼續閱讀 ...

T-SQL 技巧:產生「固定長度前面補零的數字字串」

今天看到一則 T-SQL 語法,是用來產生固定長度前面補零的數字字串,例如你拿到一個數值為 123 而你要將其數字轉成 00000123 的字串格式,我剛看到這個語法突然楞了一下,因為看到一個我沒用過的 POWER 函式,我看到這串 T-SQL 後突然聞到一點點怪怪的味道,因此寫出了幾個不同的版本,各位可以參考參考。

... 繼續閱讀 ...

解決 SQL Server 資料庫無法啟用 Service Broker 的問題

我們今天有個案子遇到一個很緊張的狀況,因為正式機的 SQL Server 資料庫沒人管一段時間了 (因為網站還沒正式對外上線),結果資料庫的交易記錄竟然把硬碟給塞爆了,這導致資料庫再也無法寫入資料而網站也自然無法使用,我們得知狀況後立即告知負責管理資料庫的 DBA 處理狀況。

... 繼續閱讀 ...

讓 SQL Server 告訴你有哪些索引應該被重建或重組

我去年有一段時間睡覺前都在看 SQL Server 2005 證照的書(MCTS 70-431),從中學到許多資料庫實際運作的技術細節,例如: 索引的結構。當資料庫中的索引碎裂(index fragmentation)程度過高時,索引的效率就會大大降低,為了避免這個問題發生,就必須定時替資料庫健檢(維護資料庫),也就是進行索引重建(rebuild)或索引重組(reorganize)。

... 繼續閱讀 ...