SQL 臨時表 定序衝突 (COLLATE)

Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Chinese_Taiwan_Stroke_CI_AS" in the equal to operation.

建立臨時表時會以資料庫伺服器預設定序來建立

當伺服器(比如 LocalDb or Azure SQL)預設定序(SQL_Latin1_General_CP1_CI_AS)

與當前資料庫(資料表或預存程序)不一致(Chinese_Taiwan_Stroke_CI_AS)時,就會報錯

CREATE TABLE #tmplist (
name nvarchar(15), 
desc nvarchar(128));

需要將原本每個 nvarchar 後面都加上要使用的定序 (COLLATE Chinese_Taiwan_Stroke_CI_AS)

CREATE TABLE #tmplist (
name nvarchar(15) COLLATE Chinese_Taiwan_Stroke_CI_AS, 
desc nvarchar(128) COLLATE Chinese_Taiwan_Stroke_CI_AS);

結論

新專案請使用 Code First

參照

SQL Server的 排序规则(collation)冲突和解决方案 - LanceZhang - 博客园 (cnblogs.com)

PS5