SQL Server on Ubuntu16.04

SQL Server DeveloperエディションをUbuntu16.04にインストールしてみたので、その時のメモ。

参考URL:UbuntuにSQL Serverをインストールし、データベースを作成

前提条件

  • Ubuntu16.04
  • メモリ2G以上

インストール

GPGキーのインポート

リポジトリ追加

Linux に SQL Server 用のリポジトリを構成するも参照

インストール

セットアップ

mssql-confコマンドを実行する。
エディションは、Developerか、Expressを選択。
途中で、パスワードの設定や、ライセンス等に関する確認がある。

サービスの確認

systemctl statusコマンドで、サービスの状態を確認する。

コマンドラインツールのインストール

sqlcmdbcpのインストール

GPGキーのインポート

リポジトリの追加

インストール

コマンドラインツール実行パスの追加

ログインセッション用(必要に応じて)

Ubuntuでは、~/.bashrcはあるけれど~/.bash-profileがないので、上記設定をすると~/.bashrcが読まれないようになるので注意。~/.bash-profile~/.bashrcを読み込むよう指定する記述も必要。

非ログインセッション用

ローカル接続のテスト

プロンプト(1>)が出力されればOK。抜けるには、exit

照合順序の変更

このままだと、Sqlserverのインスタンスの照合順序(SQL_Latin1_General_CP1_CI_AS)と、データベースの照合順序(Japanese_CI_AS)が違っているため、いろいろ不具合が起きる。そのため、次のようにして照合順序を変更する。

すでに、データベースをバックアップファイルから復元してしまっている場合は、一旦デタッチしないと上記コマンドはエラーになる。

デタッチ

アタッチ

既存のDBを移行

Windows環境のSQL Serverで稼働しているデータベースを、Linuxに移行させる。

大まかな流れ

  • SSMSでbakファイル作成
  • WinSCPなどで、ファイルを転送
  • Linux上でバックアップファイルを復元
  • クエリ発行して、復元を検証

すでに、BAKファイル作成済みで、Linuxにも転送済みとします。

バックアップファイルの復元

sqlcmdを起動

SQLを発行

次のようなエラーを吐いた場合

この場合は、データベースにはセカンダリファイルが含まれています。これらのファイルが、RESTORE DATABASEMOVE句で指定されていな場合は、復元プロシージャは、元のサーバーと同じファイルパスに作成しようとします。

バックアップに含まれる、全てのファイルを一覧表示させるには、、

次のような結果を得ます。

この結果から、次のようにRESTORE DATABASEを実行します。

復元の確認