[創意料理] 單純對資料表簡單的 CRUD 讓 Chef.DbAccess.SqlServer 來協助我們

Chef.DbAccess.SqlServer 這個套件是小弟本人開發的,在 ORM 工具盛行的現在,後端工程師能有一套像是 Entity Framework 的資料庫存取框架來協助開發工作,是件很幸福的事情,但是無奈因為環境的關係、政策的關係、仇恨的關係、...blah blah 的,無法盡如人意,在這種情況之下只好自立自強,於是這個套件就誕生了。

...繼續閱讀 »

[小菜一碟] Entity Framework Core 如何在單一查詢中跨資料庫查詢資料?

如果資料庫都隸屬於同一台伺服器,資料庫之間要 JOIN 彼此的資料表是相對容易的,在有權限的前提下,只要在資料表的前面加上「[資料庫名稱].[結構描述]」,就能存取得到其他資料庫的資料表,就像這樣:[DB].[dbo].[Table]

但是在 Entity Framework Core 中,似乎沒有那麼容易,通常一個資料庫會建成一個 DbContext,當我們直接把隸屬於不同 DbContext 的 DbSet 拿來做 Join,我們得到以下的錯誤訊息:

Cannot use multiple context instances within a single query execution. Ensure the query uses a single context instance.

...繼續閱讀 »

[小菜一碟] Microsoft SQL Server 2017 所有支援的繁體中文定序清單

每每要在 Azure SQL Database 建立資料庫,設定定序這一關一定都會卡住,我必須用鍵盤輸入定序的完整名稱,可是完整的名稱有幾個人能記得住?而它那個尋找定序的功能又不太好用,再加上官方又沒有 SQL Server 所有支援的定序資訊,所幸我就來把跟繁體中文相關的定序放到部落格上,以後要查就有。

...繼續閱讀 »

[料理佳餚] 使用 SQL Data Sync Agent 同步 Azure SQL Database 到地端的資料庫

先前有寫過一篇文章 - 如何匯出/匯入 Azure SQL Database 的資料庫?,透過這種方式,我們可以將 Azure SQL Database 資料庫的資料還原到地端,除此之外還有其他的方式可以將雲端資料庫的資料弄一份到地端,此篇文章要來介紹另一種方式是使用 SQL Data Sync Agent 來同步資料。

...繼續閱讀 »

[小菜一碟] 如何在 SQL Server Management Studio(SSMS)不撰寫 SQL 指令碼刪除所有資料表?

有時候我們在測試環境想刪除所有的資料表,但不想要重建資料庫,因為 SSMS 的物件總管無法多選資料表的關係,所以我都是用寫 SQL 指令碼的方式來做這一件事情,直到我無意中翻到了 StackOverflow 的這篇貼文才知道不用寫 SQL 指令碼也能做得到。

...繼續閱讀 »

[小菜一碟] 善用 SQL Server 唯一條件約束(UNIQUE Constraints)來避免因併發產生重複的唯一值

講到資料庫的唯一值,第一個我們會想到就是主索引鍵(Primary Key),那同一個資料表內除了主索引鍵之外會不會有其他的唯一值?我之前遇過的一個需求就有,它是一個部落格的功能,讀者可以收藏文章,同一篇文章不能重複收藏,而讀者可以對已收藏的文章進行任意的排序,所以「讀者 ID + 文章 ID」就成了資料表的主索引鍵,而「讀者 ID + 序號」就是資料表中的另一組唯一值。

...繼續閱讀 »

[廚餘回收] 在 SQL Server 中新增大量資料後又刪除的副作用

這天客戶跑來跟我說「資料庫壞了,無法新增資料!」,出現了下面這段錯誤訊息:

Could not allocate space for object 'dbo.XXX'.'PK_XXX' in database 'YYY' because the 'PRIMARY' filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup.

很明顯,這段訊息告訴我們是儲存空間已滿,可是我前幾天才維護過,按照資料增加的速度,不會那麼快才對,來問問看使用者做了什麼事?

...繼續閱讀 »

[廚餘回收] 嘗試解決 SQL Server 查詢處理器無法為平行查詢的執行啟動必要的執行緒資源(The query processor could not start the necessary thread resources for parallel query execution.)的問題

這陣子我們系統的錯誤通知出現了一個沒看過的訊息:

The query processor could not start the necessary thread resources for parallel query execution.

翻成中文是「查詢處理器無法為平行查詢的執行啟動必要的執行緒資源」,簡單來說就是「資料庫很忙,執行緒不夠用。」,而且根據幾個關鍵字 ThreadParallelQuery,我們也大概能知道是平行處理的問題,知道了方向就可以開始著手調查了。

...繼續閱讀 »

[小菜一碟] 如何匯出/匯入 Azure SQL Database 的資料庫?

一個專案的結束,總不能船過水無痕,得留下些什麼。除了原始碼,資料庫內的資料也經常是需要被封存的對象,在地端的 SQL Server 通常只要將 MDF、LDF 檔案封存起來就可以搞定了,而雲端的 Azure SQL Database 沒有 MDF、LDF 檔案,取而代之,我們可以改用「匯出(Export)」的方式,將整個資料庫的資料給弄出來。

...繼續閱讀 »