The Will Will Web

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

如何解決 Azure SQL Elastic Pool 資料庫集區 Allocated space 已滿的問題

我公司有個 Azure SQL Elastic Pool 資料庫集區,我有 52 個資料庫,每個資料庫都蠻小的,最大的一個也才 5GB 左右,原本預設最大可用儲存空間為 50GB,但上周某一天開始就有個應用程式出現儲存空間使用量已滿等問題,讓我覺得十分詭異,查了一下資料庫用量也都還沒滿,還有許多剩餘空間才對,但就是有個資料庫要求更多空間,導致程式發生異常。今天我就來聊聊這個問題,以及我已經找到的解決方案!

... 繼續閱讀 ...

快速上手 SQL Server 的 JSON 操作能力

我們都知道 SQL Server 是一套強大的關連式資料庫系統,但從 SQL Server 2016 開始就加入了對 JSON 格式的支援,讓我們可以直接在 SQL Server 透過 T-SQL 就能處理 JSON 資料結構,讓我們有機會在關連式資料庫這種「結構化資料」中加入類似 NoSQL 這種「半結構化」的資料,增加了我們在架構設計與資料處理上的彈性,真的非常方便。這篇文章我就來帶大家快速上手,體驗一下如何在 SQL Server 操作 JSON 資料。

... 繼續閱讀 ...

如何修復 Microsoft SQL Server 毀損的 model 資料庫

在 Microsoft SQL Server 之中有好幾個重要的系統資料庫,其中有個 model 資料庫 主要用來作為 SQL Server 執行個體上建立之所有新資料庫的範本。因為 SQL Server 每次啟動時,都會重建 tempdb 資料庫,因此 model 資料庫一定要存在於 SQL Server 系統之中。然而我們前陣子有個客戶,因為 IDC 電源異常導致 model 資料庫毀損,進而讓 SQL Server 執行個體完全無法啟動,一卡就是 24 小時才打來求救。老實說這種狀況也不是經常會遇到,今天這篇文章我就來記錄一下重建 model 資料庫的過程。

... 繼續閱讀 ...

直接將 T-SQL 命令透過 STDIN 的方式傳入 SQL Server Linux 容器執行的方法

我先前寫過兩篇文章,一篇是 使用 Docker 執行 SQL Server on Linux 容器之常用工具與命令 分享各種常見的執行命令,另一篇則是 深入剖析 docker run 與 docker exec 的 -i 與 -t 技術細節 幫助我更加理解 Docker 處理 STDIN 與 Virtual Terminal (VT) 之間的關係。這讓我連結到一個長久以來希望被微軟實現的需求,如果我想直接透過 STDIN 將 T-SQL 傳入 SQL Server on Linux 容器執行,不想先把本機的 T-SQL 檔案複製進去,那該如何處理?想不到還真的給我研究出方法了!

... 繼續閱讀 ...

快速上手 Spring Data JPA 與 SQL Server 資料庫開發

我們在開發任何 Web 應用程式時,幾乎可以說 99% 的情境都需要存取資料庫。而在 Java 世界裡有個 JPA 標準規範,幫助你大幅簡化資料存取所需的程式碼。而 Spring 框架整合了 JPA 標準,幫助你更好的在應用程式中使用 JPA 來開發資料存取層的邏輯。今天這篇文章我就來好好釐清快速上手的過程。

... 繼續閱讀 ...

在 Docker 或 Kubernetes 執行 SQL Server Linux 容器應注意記憶體限制問題

前幾天一樣在客戶端進行 Kubernetes 教育訓練的時候,發現有少部分學員無法正確部署應用程式,我們的例子是一個 ASP.NET Core 網站,搭配一個 SQL Server Linux 容器,然而在練習實作 livenessProbe 的時候,卻發現有些人怎樣都無法將 SQL Server Linux 容器啟動,但是若將 livenessProbe 設定移除,服務可以啟動。若將 Pod 中容器記憶體限制移除,服務也可以順利啟動。是不是有點詭異?這篇文章我就來說說這個來龍去脈!

... 繼續閱讀 ...

介紹好用工具:mssql-scripter (自動將完整資料庫匯出成 T-SQL 的神器)

遷移 SQL Server 資料庫是一件感覺好像很簡單,但做起來可能會很麻煩的工作。其實透過 SSMS 就可以做到很多種不同的資料庫遷移方法,但我想找一個能夠更方便的方式,透過命令列的方式自動化整個遷移過程,最近我找到了這個 mssql-scripter 工具,完全可以符合我的需求。這篇文章我就來說說我的應用情境,以及 mssql-scripter 工具的使用方式。

... 繼續閱讀 ...

使用 SqlPackage 對 SQL Server 資料庫進行匯出/匯入/擷取/發行/編寫/報告

今天有同事來問我,他用 SQL Server 資料庫專案管理 SQL Server 資料庫的結構描述 (Schema),在開發環境與測試環境的更新與比對都沒有問題,但偏偏正式機上的 SQL Server 資料庫因為防火牆的關係,通常無法直接從本機直接連接,這導致他沒有辦法比對正式資料庫開發資料庫之間的差異,如果有人異動了正式資料庫,日後的資料庫更新就很容易出問題。這篇文章,我就來介紹這套 SqlPackage 命令列工具。

... 繼續閱讀 ...