SQL Server Management Studio(SSMS) で テーブルの CREATE 文を出力した際に、列の COLLATE(照合順序) が落ちるとどっかで見たので試してみました。
まずテーブルを作成します。
create table [Table1] ( [Id] int not null primary key, [NameEn] varchar(10) collate Latin1_General_BIN2, [NameJp] varchar(10) collate Japanese_BIN2 )
SSMSなので、GUI でもOKです。列のプロパティの下の方に、照合順序を設定出来る項目があります。
テーブルが出来たら、CREATE 文を出力してみましょう。
オブジェクト エクスプローラー から対象のテーブルを右クリック => テーブルをスクリプト化 => CREATE => 新しいクエリ エディター ウィンドウ で出力します。
USE [テスト] GO /****** Object: Table [dbo].[Table1] Script Date: 2013/10/18 10:30:02 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[Table1]( [Id] [int] NOT NULL, [NameEn] [varchar](10) NULL, [NameJp] [varchar](10) NULL, PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO
するとこんなスクリプトが出力されています。見事に COLLATE の指定が落ちていますね。
では、COLLATE も含めた正しい CREATE 文を出力することは出来ないの?となりますが、ちゃんと出力する方法は用意されています。
オブジェクト エクスプローラー から対象のテーブルを含むデータベースを右クリック => タスク => スクリプトの生成 をクリックします。
オブジェクトの選択で、テーブルから対象のテーブルを選択します。
次へを押して、スクリプト作成オプションの設定で、詳細設定をクリックします
オプション - 全般 - スクリプトの照合順序 の項目 が False になっていますので、True に変更し OK をクリックします。
スクリプト作成オプションの設定に戻るので、出力場所を選択 新しいクエリ ウィンドウに保存 にし、次へをクリックしていくと出来上がりです。
生成されたスクリプトはこちら
USE [テスト] GO /****** Object: Table [dbo].[Table1] Script Date: 2013/10/18 10:43:42 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[Table1]( [Id] [int] NOT NULL, [NameEn] [varchar](10) COLLATE Latin1_General_BIN2 NULL, [NameJp] [varchar](10) COLLATE Japanese_BIN2 NULL, PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO
若干面倒ですね!
2013/12/08 追記:SSMS 2012/2014 で確認しましたが、ツール => SQL Server オブジェクト エクスプローラー => スクリプト に、「照合順序を含める」というオプションがありました!
これなら、タスクから生成しなくても照合順序を含めることが出来ます。気付かなかった~!