[SQL Server][T-SQL]新增資料表欄位(Default Value加上Not Null)之續集(SQL冰魔法)

延續上週新增資料表欄位Default Value + Not Null是否會給舊資料預設值的題目。上一篇確認Default Value + Not Null會給也必須要給舊資料預設值,但為何相同資料量測試環境飛快但正式環境跑1小時?這種飛快,感覺不太真實,資料分頁真的有修改到?還是只有改定義?

...繼續閱讀 »

[SQL Server][T-SQL]新增資料表欄位(Default Value加上Not Null會不會自動將舊資料給預設值)

今晚的程式過版中,有一部分是大型資料表要加開10幾個欄位來跟上行動支付潮流,到家後接到客戶電話,DBA大人執行DDL Alter Table欄位新增語法(Add Column)時,執行了1小時(....)。印象中同事的語法沒有加With Values應該只修改到定義,沒有改到原始的資料分頁,另外,測試環境類似的交易量跑起來也很快,呼~~~

卡住的時候就是該重新測試填補SQL知識了,這篇先確認SQL是否會將舊資料給預設值,下一篇來查效能問題

...繼續閱讀 »

[SQL Server][DMV]新的sys.dm_os_host_info主機資訊(SQL Server 2017)

以往我們想要知道SQL Server裝在哪一個版本的O/S,這個時候打個電話請教SP,厲害的SP就會很快找到,然後精準的回覆我們O/S和DB的Version、Edition,甚至還會補充硬體資源的配置;但如果SP很忙,又沒有rdp權限時,以前我們會串SQL查dmv解決(dm_os_windows_info),今年SQL Server 2017多了新的DMV:dm_os_host_info 能同時提供 Windows 和 Linux 作業系統資訊,快來試試。

...繼續閱讀 »

[SQL Server]SELECT INTO ON FILEGROUP(SQL Server 2017)

資料庫初始檔案規劃時,除了主要的檔案群組(PRIMARY),我們通常會和DBA大人商量新增一到兩個檔案群組放到更快存取速度的磁碟,當新增資料表時,我們就可以依據資料表受歡迎程度(熱度)來設定不同的選擇,但如果遇到資料表是以SELECT INTO產生出來的,以往就只能放在預設的檔案群組(通常是PRIMARY),  如果想讓SELECT INTO的資料表要放到其他檔案群組,只能改資料庫的預設檔案群組來解決。
 

...繼續閱讀 »

[SQL Server][T-SQL]SQL語法夾帶全形空白導致語法錯誤

這週有個客戶的案子幾百隻程式上線,上線後的隔天早上,同事S回報了系統程式出現很基本的SQL語法錯誤,明明年輕的工程師都測試過,還是發生了。

為了要掩蓋自己對這次問題原因的了解不足(是相容性層級嗎?),趕緊掛上電話花幾分鐘簡單的測試,試試改相容性層級然後回報同事S,最後發現問題在於不同SQL版本對全形空白的解析有差異,這次和相容性層級無關,晚上看F1賽車不練跑,快來筆記這個全形空白問題。

...繼續閱讀 »

[SQL Server][T-SQL]CONCAT_WS串接分隔字元強化(SQL Server 2017)

如果打算將SQL查詢結果串接成逗號分隔的csv檔案,用ETL工具、BCP、用管理工具在查詢結果按右鍵等都可以實現,但如果想單靠SQL語法,MySQL可以用concat-ws()函式,在SQL Server我們就得用上很長的語法串接(+號 or CONCAT),今晚是新加坡F1夜戰第10年,一邊看賽車一邊來吃SQL 2017新的語法糖。

...繼續閱讀 »

[SQL Server][T-SQL]輸入全半形空白

來到周末前,客戶跑來同事的桌邊問了一個小問題,T-SQL要如何輸入全型空白(空格),為了工程師肉眼的可維護性,除了直接輸入這種' ',想找其他的解法,剛剛跑步時想到客戶的問題,想到幾種解法,快來筆記一下。

...繼續閱讀 »