SQLServer 2012/2014/2016

最終更新日: 2023年8月21日

仕様および制約

型のマッピング

Wagby で指定した型は、データベース内で次のように扱われます。

整数型 int
文字列型 nvarchar(255)
文字列型 (テキストエリア) nvarchar(1000)
日付型 date
時間型 time
日付時間型 datetime2
ファイル型(ファイル名) nvarchar(255)
1バイト整数 smallint
2バイト整数 smallint
4バイト整数 int
8バイト整数 bigint
4バイト浮動小数点数 float
8バイト浮動小数点数 double precision
固定値 (作成日/更新日) datetime2
その他 (URL型/メールアドレス型など) nvarchar(255)
文字列型は nvarchar を使います。varchar 型で指定する場合は「バイト」単位です。詳細は SQLServer のマニュアルでご確認ください。

JDBCドライバ利用時の注意

TCP/IP が有効になっていることの確認

JDBC で接続するためには、TCP/IP が有効になっている必要があります。

URLの指定方法

SQL Server をインストールしたときに、名前付きインスタンスでインストールしたときには、データベース接続 url に、インスタンス名またはインスタンスが起動しているポート番号を指定する必要があります。

「既定のインスタンス」では1433/tcp、「名前付きインスタンス」ではインスタンスの初回起動時に未使用の TCP ポート番号が動的に割り当てられます。

例) SQL Server 2005 Express Edition をインストールした場合

url="jdbc:sqlserver://192.168.6.75\SQLEXPRESS;databasename=sampledb"

または

url="jdbc:sqlserver://192.168.6.75:1433;databasename=sampledb"

と指定します。(上記例のIPアドレス部分である「192.168.6.75」は、お使いのLAN環境にあわせて適当に読み替えてください。)

Unicode文字への対応

文字列型の項目は SQL Server が用意する nvarchar を使います。nvarchar とすることで「"鴎"の旧漢字」や、サロゲートペア文字(例:魚のホッケ:魚へんに花)も格納できるようになります。

varchar として使いたい場合は、項目毎に「テーブル定義の型」を指定してください。

varchar と nvarchar の違いによる運用面の影響として、照合順序(ソートの順序)が変わることがあげられます。これは全角文字限定であり、半角文字のソート順は不変です。

バージョンアップ時の注意点

順序の扱い

旧 SQL Server 2000/2005/2008 などから 2012 以降へバージョンアップすると、新しい SQL Server では順序 (sequence) が利用できるようになります。

モデルの主キーが自動採番で順序を利用する設定のとき、旧版では seq というテーブルに順序値が格納されていました。しかしバージョンアップでは sys.sequences に順序値が用意されます。このとき sys.sequences 値は Wagby で設定した初期値(1000など) となっているため、データ移行後、順序がずれてしまいます。

この対応として、旧 seq テーブルに格納されていた値を sys.sequences に再設定してください。

例えば model1 の id 値に順序を使うとした場合、旧版では seq テーブルに model1_pkey_seq という名前と値が格納されていたとします。select * from seq where name = 'model1_pkey_seq'; というSQLを実行し、その値が1234だったとします。この場合、次のSQLを実行します。

ALTER SEQUENCE model1_pkey_seq RESTART WITH 1234 INCREMENT BY 1;

このように、すべての順序値を更新してください。

参考資料