プロジェクト

全般

プロフィール

SQL Server

文字コード

照合順序

照合順序の確認

SQL

SELECT CONVERT (varchar(256), SERVERPROPERTY('collation'));

例えば、Japanese_CI_ASが返ってきます。

SSMS

左側ペインでデータベースを選択、右クリックで[プロパティ]を選択
メンテナンス項の照合順序に、例えば[Japanese_CI_AS]と記載

h5.照合順序の意味

  • Japanese
    辞書順に並び替える際は日本語辞書順
    非Unicodeデータ型は、そのコードページをCP932とする(Windows_31J、いわゆるShift JISの一種)
  • CI
    Case Insensitiveを示す
  • AS
    辞書順に並べる際、濁点・半濁点の区別をする(Sensitive)

照合順序の指定(列)

ALTER TABLE MyTable ALTER COLUMN MyCol varchar(10) COLLATE Latin1_General_CI_AS NOT NULL;

  • NOT NULL制約のある列の照合順序を変更するには、NOT NULL指定が不可欠

照合順序の変更(データベース)

SSMSで、左側ペインでデータベースを選択、右クリックで[プロパティ]を選択
「データベースのプロパティ」画面で、左側ペイン(ページの選択)で[オプション]を選択、右側ペインに照合順序のドロップダウンリストがあるので、選択肢から任意のモノを選択する。

コマンドライン環境

sqlcmd

コマンドプロンプトから、sqlcmdコマンドでSQL ServerへSQLの発行等ができます。

対話モードでsqlcmd実行

接続するサーバー、データベース、認証情報をコマンドのオプションに指定します。

  • 統合認証を使用する場合
C:\> sqlcmd -S localhost -E -d mydatabase
1> 
  • SQL Server認証を使用する場合
C:\> sqlcmd -S localhost -U sqluser -P xxxxxx -d mydatabase
1>

SQLの実行は、SQL文を入力、改行し、goを入力します。

1> SELECT name FROM sys.databases
2> go
name
----------------------------------------------
master
tempdb
model
msdb
mydatabase
(5 行処理されました)
1>

SQL文を記述したファイルを実行

C:\> sqlcmd -S localhost -E -d mydatabase -i myquery.sql

データベースの一覧と利用

データベース名の一覧を表示するSQL
1> SELECT name FROM sys.databases
2> go
name
---------------
master
tempdb
model
msdb
mydatabase
使いたいデータベースを選択

使いたいデータベースを指定してsqlcmdを起動しなかった場合、そのデータベースにあるテーブルが識別できません。

1> SELECT * FROM MassDrivers
2> go
メッセージ 208、レベル 16、状態 1、サーバー EARTHFEDERATION、行 1
オブジェクト名 'MassDrivers' が無効です。

useコマンドでデータベースを指定します。

1> USE Jaburo
2> go
データベース コンテキストが 'Jaburo' に変更されました。