SQL Server データベースの照合順序を変更するにはどうすればよいですか?

SQL Server データベースの照合順序を変更するにはどうすればよいですか?

すべてのデータベースを単一の照合順序、Latin1_General_CI_AS (標準照合順序) に標準化しようとしています。SQL_Latin1_General_CP1_CI_AS にあるデータベースがいくつかあります。

ALTER DATABASE を使用してデータベースの照合順序を変更できることはわかっていますが、これは新しいオブジェクトにのみ影響します。既存の列を変更する唯一の方法は、すべてのテーブルの各列に対して ALTER COLUMN を実行することだと理解しています。また、そのためにもすべてのインデックスを削除して再作成する必要があります。

おそらく次のようになると思います:

DROP INDEX indexname ON tablename

GO

ALTER TABLE tablename ALTER COLUMN columname varchar(50) COLLATE Latin1_General_CI_AS NULL

GO

CREATE CLUSTERED INDEX indexname ON tablename (columname ASC)

これをデータベース全体のvarchar、char、text、nvarchar、nchar、ntextの各列に対して繰り返します。巨大なSQL スクリプト。

これを行うより簡単な方法はありますか、またはこれを行うための SQL スクリプトの作成を自動化する方法を提案してくれる人はいますか?

答え1

KB325335 翻訳データベース全体とすべての列に対してこれを行う方法に関するオプションがあります。

基本的に:

  1. スクリプト データベース テーブル (新しい照合順序を使用)
  2. DTS/SSIS データ (照合順序の監視)
  3. 制約を追加する

答え2

多少の調整が必要かもしれませんが、「SQL Server 2000 Collat​​ion Changer」ユーティリティを使用して成功しました。 http://www.codeproject.com/KB/database/ChangeCollat​​ion.aspx

答え3

残念ながら、これは SQL Server では簡単な作業ではありません。

既存のデータベース オブジェクト (テーブル、ストアド プロシージャ、ビューなど) には、Redgate の SQL Compare などのスクリプト ツールを使用できます。ライセンスがない場合は、無料試用版を使用できます。適切な照合順序で新しいデータベースを作成し、スクリプトからオブジェクトを再構築したら、SSIS を実行して、あるデータベースから別のデータベースにデータを転送できます。データが大量にある場合は、T-SQL 一括挿入を使用します。

そのサーバー上の将来のデータベースに適切な照合順序を設定するには、サーバーの既定の照合順序を変更します。次の MSDN の記事では、ALTER DATABASE および ALTER TABLE の COLLATE 句を使用して何が変更されるかについて説明しています。

データベース照合順序の設定と変更 (SQL Server 2008 オンライン ブック)

ユーザーデータベースに作成された新しいオブジェクトの照合順序は、COLLATE句を使用して変更できます。データベースの変更ステートメント。このステートメントは、既存のユーザー定義テーブル内の列の照合順序を変更しません。これらは、COLLATE句を使用して変更できます。他の机

データベースの照合順序を変更すると、次の内容が変更されます。

  • データベースのデフォルトの照合順序。この新しいデフォルトの照合順序は、データベースでその後作成されるすべての列、ユーザー定義のデータ型、変数、およびパラメータに適用されます。また、SQL ステートメントで指定されたオブジェクト識別子をデータベースで定義されたオブジェクトに対して解決するときにも使用されます。
  • システム テーブル内のすべての char、varchar、text、nchar、nvarchar、または ntext 列は、新しい照合順序に変更されます。
  • ストアド プロシージャとユーザー定義関数の既存の char、varchar、text、nchar、nvarchar、または ntext パラメーターとスカラー戻り値はすべて、新しい照合順序に変更されます。
  • char、varchar、text、nchar、nvarchar、または ntext システム データ型、およびこれらのシステム データ型に基づくすべてのユーザー定義データ型は、新しい既定の照合順序に変更されます。

答え4

このユーティリティをお試​​しくださいソース データベースを指定すると、ターゲット データベースに適用する必要があるすべてのスクリプトが生成され、照合順序が安全に変更されます。

関連情報