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' に変更されました。