【SQLServer】データベースの照合順序を変更する

最終更新日:2024‐08-17

.net MVC5+SQLServerで作成する際に、データベースの照合順序をうっかり途中で変更すると以下のようなエラーが発生してしまいます。

equal to 操作の "Japanese_XJIS_100_CS_AS_KS_WS""Japanese_CI_AS" 間での照合順序の競合を解決できません。
SQL

これは、照合順序を変更前に作成したテーブルは、照合順序の設定をそのまま保持しているため、変更前と変更後のテーブルの照合順序が異なっているために発生するエラーです。

データベースの照合順序を変更するSQLは以下のとおりです。
照合順序を変更後、テーブルを再作成することで照合順序を合わせることができます。
要はテーブルを作り直しています。

----------------------
-- データベースの照合順序を確認
----------------------
USE master;
SELECT name, collation_name FROM sys.databases;
GO  
----------------------
-- データベースの照合順序を変更
----------------------
ALTER DATABASE HOGE_DATABASE
COLLATE Japanese_XJIS_100_CS_AS_KS_WS ;  
GO 
----------------------
-- データベースの照合順序を再確認
----------------------
SELECT name, collation_name FROM sys.databases;
----------------------
-- テーブルバックアップを取って、テーブルを作り直す
----------------------
SELECT * INTO TableHoge_bk from TableHoge;
DROP TABLE TableHoge;
CREATE TABLE [dbo].[TableHoge](
	[HogeCode] [char](2) NOT NULL,
	[HogeName] [nvarchar](128) NOT NULL
);
----------------------
-- 新しく作ったテーブルにバックアップからデータを入れ直す
----------------------
INSERT INTO TableHoge SELECT * FROM TableHoge_bk;
SQL

オフィシャルドキュメント

●照合順序の表示
https://docs.microsoft.com/ja-jp/sql/relational-databases/collations/view-collation-information?view=sql-server-ver15

●照合順序の変更
https://docs.microsoft.com/ja-jp/sql/relational-databases/collations/set-or-change-the-database-collation?view=sql-server-ver15

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です