データベースの照合順序の設定または変更Set or Change the Database Collation

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) 適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions)

このトピックでは、SQL Server Management StudioSQL Server Management Studio または Transact-SQLTransact-SQL を使用して、データベースの照合順序を設定および変更する方法を説明します。This topic describes how set and change the database collation by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. 照合順序を指定しない場合、サーバーの照合順序が使用されます。If no collation is specified, the server collation is used.

重要

Azure SQL Database に対する ALTER DATABASE COLLATE ステートメントはサポートされていません。ALTER DATABASE COLLATE statement on Azure SQL Database is not supported.

このトピックの内容In This Topic

はじめにBefore You Begin

制限事項と制約事項Limitations and Restrictions

  • Windows Unicode 専用の照合順序は、COLLATE 句で、列レベルと式レベルのデータの ncharnvarcharntext の各データ型に対して照合順序を適用する場合にのみ使用できます。Windows Unicode-only collations can only be used with the COLLATE clause to apply collations to the nchar, nvarchar, and ntext data types on column level and expression-level data. データベースまたはサーバー インスタンスの照合順序を変更するために、COLLATE 句で使用することはできません。They cannot be used with the COLLATE clause to change the collation of a database or server instance.

  • 指定した照合順序、または参照先のオブジェクトで使用される照合順序で、Windows でサポートされていないコード ページが使用されていると、 データベース エンジンDatabase Engine でエラーが表示されます。If the specified collation or the collation used by the referenced object uses a code page that is not supported by Windows, the データベース エンジンDatabase Engine displays an error.

推奨事項Recommendations

サポートされる照合順序名は、「 Windows 照合順序名 (Transact-SQL) 」と「 SQL Server 照合順序名 (Transact-SQL)」で確認できます。または、 sys.fn_helpcollations (Transact-SQL) システム関数を使用できます。You can find the supported collation names in Windows Collation Name (Transact-SQL) and SQL Server Collation Name (Transact-SQL); or you can use the sys.fn_helpcollations (Transact-SQL) system function.

データベースの照合順序を変更すると、次の変更が行われます。When you change the database collation, you change the following:

  • システム テーブル内の char 型、 varchar 型、 text 型、 nchar 型、 nvarchar 型、または ntext 型の列はすべて、新しい照合順序に変更されます。Any char, varchar, text, nchar, nvarchar, or ntext columns in system tables are changed to the new collation.

  • ストアド プロシージャおよびユーザー定義関数で使用されている charvarchartextncharnvarchar、または ntext の既存のパラメーターおよびスカラー値の戻り値はすべて、新しい照合順序に変更されます。All existing char, varchar, text, nchar, nvarchar, or ntext parameters and scalar return values for stored procedures and user-defined functions are changed to the new collation.

  • charvarchartextncharnvarchar、または ntext のシステム データ型およびこれらを基にしたユーザー定義データ型はすべて、新しい既定の照合順序に変更されます。The char, varchar, text, nchar, nvarchar, or ntext system data types, and all user-defined data types based on these system data types, are changed to the new default collation.

ユーザー データベースに作成される新しいオブジェクトの照合順序は、ALTER DATABASE ステートメントの COLLATE 句を使用して変更できます。You can change the collation of any new objects that are created in a user database by using the COLLATE clause of the ALTER DATABASE statement. このステートメントを実行しても、既存のユーザー定義テーブルの列の照合順序は 変更されませんThis statement does not change the collation of the columns in any existing user-defined tables. ALTER TABLECOLLATE 句で変更することができます。These can be changed by using the COLLATE clause of ALTER TABLE.

重要

データベースまたは個々の列の照合順序を変更しても、既存のテーブルに既に格納されている基になるデータは 変更されませんChanging the collation of a database or individual columns does not modify the underlying data already stored in existing tables. アプリケーションが異なる照合順序間でデータの変換と比較を明示的に処理する場合を除き、データベース内の既存のデータを新しい照合順序に移行することをお勧めします。Unless your application explicitly handles data conversion and comparison between different collations, it is recommended that you transition existing data in the database to the new collation. これにより、アプリケーションによってデータが誤って変更され、正しくない結果が発生したり知らない間にデータが失われたりするリスクが排除されます。This removes the risk that applications may incorrectly modify data, resulting in possible wrong results or silent data loss.

データベースの照合順序を変更すると、新しいテーブルだけが既定で新しいデータベースの照合順序を継承します。When a database collation is changed, only new tables will inherit the new database collation by default. 既存のデータを新しい照合順序に変換するには、いくつかの選択肢があります。There are several alternatives to convert existing data to the new collation:

  • 適切な場所でデータを変換する。Convert data in-place. 既存のテーブル内の列の照合順序を変換する方法については、「列の照合順序の設定または変更」を参照してください。To convert the collation for a column in an existing table, see Set or Change the Column Collation. この操作は簡単に実装できますが、大きなテーブルやビジー状態のアプリケーションで障害となっている問題になる可能性があります。This operation is easy to implement, but may become a blocking issue for large tables and busy aplications. MyString 列から新しい照合順序へのインプレース変換については、次の例を参照してください。See the following example for an in-place conversion of the MyString column to a new collation:

    ALTER TABLE dbo.MyTable
    ALTER COLUMN MyString VARCHAR(50) COLLATE Latin1_General_100_CI_AI_SC_UTF8;
    
  • 新しい照合順序を使用する新しいテーブルにデータをコピーし、同じデータベース内の元のテーブルを置換します。Copy data to new tables that use the new collation, and replace original tables in the same database. 現在のデータベースに、データベースの照合順序を継承する新しいテーブルを作成し、古いテーブルと新しいテーブルの間でデータをコピーしたら、元のテーブルを削除して、新しいテーブルの名前を元のテーブルの名前に変更します。Create a new table in the current database that will inherit the database collation, copy the data between the old table and the new table, drop the original table, and rename the new table to the name of the original table. これは、インプレース変換の操作よりも高速ですが、外部キー制約、主キー制約、トリガーなどの依存関係を含む複雑なスキーマを処理する場合には困難となる場合があります。This is a faster operation than an in-place conversion, but may become a challenge when handling complex schemas with dependencies such as Foreign Key contraints, Primary Key constraints, and Triggers. また、データが引き続きアプリケーションによって変更される場合は、最終的なカットオフの前に、元のものと新しいテーブルの間で最終的なデータ同期も必要になります。It would also require a final data syncronization between the original and the new table before the final cut-off, if data continues to be changed by applications. MyString 列から新しい照合順序への "コピーと変換" による変換については、次の例を参照してください。See the following example for a "copy and replace" conversion of the MyString column to a new collation:

    CREATE TABLE dbo.MyTable2 (MyString VARCHAR(50) COLLATE Latin1_General_100_CI_AI_SC_UTF8); 
    
    INSERT INTO dbo.MyTable2 
    SELECT * FROM dbo.MyTable; 
    
    DROP TABLE dbo.MyTable; 
    
    EXEC sp_rename 'dbo.MyTable2', 'dbo.MyTable’;
    
  • 新しい照合順序を使用する新しいデータベースにデータをコピーし、元のデータベースを置き換えます。Copy data to a new database that uses the new collation, and replace the original database. 新しい照合順序を使用して新しいデータベースを作成し、Integration ServicesIntegration ServicesSQL Server Management StudioSQL Server Management Studio のインポート/エクスポート ウィザードのようなツールを使用して、元のデータベースのデータを転送します。Create a new database using the new collation, and transfer the data from the original database via tools like Integration ServicesIntegration Services or the Import/Export Wizard in SQL Server Management StudioSQL Server Management Studio. これは、複雑なスキーマのためのより簡単な方法です。This is a simpler approach for complex schemas. また、データが引き続きアプリケーションによって変更される場合は、最終的なカットオフの前に、元のものと新しいデータベースの間で最終的なデータ同期も必要になります。It would also require a final data syncronization between the original and the new databases before the final cut-off, if data continues to be changed by applications.

セキュリティSecurity

PermissionsPermissions

新しいデータベースを作成するには、master データベースでの CREATE DATABASE アクセス許可か、CREATE ANY DATABASE または ALTER ANY DATABASE のアクセス許可が必要です。To create a new database, requires CREATE DATABASE permission in the master database, or requires CREATE ANY DATABASE, or ALTER ANY DATABASE permission.

既存のデータベースの照合順序を変更するには、データベースに対する ALTER アクセス許可が必要です。To change the collation of an existing database, requires ALTER permission on the database.

SQL Server Management Studio の使用Using SQL Server Management Studio

データベースの照合順序を設定または変更するにはTo set or change the database collation

  1. オブジェクト エクスプローラー で、 SQL Server データベース エンジンSQL Server Database Engineのインスタンスに接続して、そのインスタンスを展開します。次に、 [データベース] を展開します。In Object Explorer, connect to an instance of the SQL Server データベース エンジンSQL Server Database Engine, expand that instance, and then expand Databases.

  2. 新しいデータベースを作成する場合は、 [データベース] を右クリックし、 [新しいデータベース] をクリックします。If you are creating a new database, right-click Databases and then click New Database. 既定の照合順序を使用しない場合は、 [オプション] ページをクリックし、 [照合順序] ボックスの一覧から照合順序を選択します。If you do not want the default collation, click the Options page, and select a collation from the Collation drop-down list.

    データベースが既に存在する場合は、使用するデータベースを右クリックし、 [プロパティ] をクリックします。Alternatively, if the database already exists, right-click the database that you want and click Properties. [オプション] ページをクリックし、 [照合順序] ボックスの一覧から照合順序を選択します。Click the Options page, and select a collation from the Collation drop-down list.

  3. 終了したら [OK] をクリックします。After you are finished, click OK.

Transact-SQL の使用Using Transact-SQL

データベースの照合順序を設定するにはTo set the database collation

  1. データベース エンジンDatabase Engineに接続します。Connect to the データベース エンジンDatabase Engine.

  2. [標準] ツール バーの [新しいクエリ] をクリックします。From the Standard bar, click New Query.

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] をクリックします。Copy and paste the following example into the query window and click Execute. この例は、 COLLATE 句を使用して照合順序名を指定する方法を示しています。This example shows how to use the COLLATE clause to specify a collation name. この例は、 MyOptionsTest 照合順序を使用する Latin1_General_100_CS_AS_SC を作成します。The example creates the database MyOptionsTest that uses the Latin1_General_100_CS_AS_SC collation. データベースを作成したら、 SELECT ステートメントを実行して設定を検証します。After you create the database, execute the SELECT statement to verify the setting.

USE master;  
GO  
IF DB_ID (N'MyOptionsTest') IS NOT NULL  
DROP DATABASE MyOptionsTest;  
GO  
CREATE DATABASE MyOptionsTest  
COLLATE Latin1_General_100_CS_AS_SC;  
GO  
  
--Verify the collation setting.  
SELECT name, collation_name  
FROM sys.databases  
WHERE name = N'MyOptionsTest';  
GO  

データベースの照合順序を変更するにはTo change the database collation

  1. データベース エンジンDatabase Engineに接続します。Connect to the データベース エンジンDatabase Engine.

  2. [標準] ツール バーの [新しいクエリ] をクリックします。From the Standard bar, click New Query.

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] をクリックします。Copy and paste the following example into the query window and click Execute. この例は、 ALTER DATABASE ステートメントで COLLATE 句を使用して照合順序名を変更する方法を示しています。This example shows how to use the COLLATE clause in an ALTER DATABASE statement to change the collation name. SELECT ステートメントを実行して変更を確認します。Execute the SELECT statement to verify the change.

USE master;  
GO  
ALTER DATABASE MyOptionsTest  
COLLATE French_CI_AS ;  
GO  
  
--Verify the collation setting.  
SELECT name, collation_name  
FROM sys.databases  
WHERE name = N'MyOptionsTest';  
GO  

参照See Also

照合順序と Unicode のサポート Collation and Unicode Support
sys.fn_helpcollations (Transact-SQL) sys.fn_helpcollations (Transact-SQL)
sys.databases (Transact-SQL) sys.databases (Transact-SQL)
SQL Server 照合順序名 (Transact-SQL) SQL Server Collation Name (Transact-SQL)
Windows 照合順序名 (Transact-SQL) Windows Collation Name (Transact-SQL)
COLLATE (Transact-SQL) COLLATE (Transact-SQL)
照合順序の優先順位 (Transact-SQL) Collation Precedence (Transact-SQL)
CREATE TABLE (Transact-SQL) CREATE TABLE (Transact-SQL)
CREATE DATABASE (SQL Server Transact-SQL) CREATE DATABASE (SQL Server Transact-SQL)
ALTER TABLE (Transact-SQL) ALTER TABLE (Transact-SQL)
ALTER DATABASE (Transact-SQL)ALTER DATABASE (Transact-SQL)