最終更新日: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オフィシャルドキュメント
技術の進化についていけていないシステムエンジニア。浅く広く、何でも大体はこなせるエンジニアで重宝されてる(つもり)。でもやっぱり特化した武器欲しい。
備忘録として記事を投稿していますが、少しでも誰かの助けになればと思います。
最近はプロジェクトでReact(TypeScript )を触っています。
趣味でギター弾きます。