surface pro 3にSQLServer2014をインストールしてて、いろいろと気づいたことがあったのでまとめておくことにした。
きっと誰かの役に立ってくれる、そう信じてる。

とりあえず、DBにつながらない

インストールしたはいいけど、なぜかサーバーにつながらない。そんな時はここら辺が怪しい。

SQLServer2014構成マネージャ

SQLServerのネットワーク構成→(インスタンス名)のプロトコルで、「名前付きパイプ」と「TCP/IP」を「有効」にしてること。
→TCP/IP接続でも、名前付きパイプを有効にしないとダメ・・・な気がする。とりあえずここを有効にしたらうまく行った。

ODBCデータソースアドミニストレータ

サーバー名は「(サーバー名)¥(インスタンス名)」にしてること。
→デフォルト設定かつ自分自身に接続するなら「localhost¥sqlexpress」でOK。ホスト名にすれば他PCからでも接続可能。

セキュリティが強化されたWindows ファイアウォール

参考:データベース エンジン アクセスを有効にするための Windows ファイアウォールを構成する
http://msdn.microsoft.com/ja-jp/library/ms175043.aspx

よーするに、ポート1433を開けろという話。
Windowsファイアウォールを無効化しててもやらなきゃいけない、と思う。

データの復旧作業

とりあえず、データベースのバックアップファイルを復元するまでが戦いなので、そこまで実際に作業を進めていく。

SQL Server Management Studioについて

とりあえず、コマンド調べるのも面倒ってことでインストールしたのはSQL Server 2008のManagement Studio。
・・・なぜか動かない。何かやろうとするとエラーが発生する。
結局、全部コマンドラインで実行することにした。面倒くさい。

データベースの作成

参考:SQL Server 2008 R2 Express コマンドでデータベースとテーブルを作成する(sqlcmd)
http://symfoware.blog68.fc2.com/blog-entry-646.html

まずはコマンドプロンプトを起動し、osqlでログインする。

osql -E -S [サーバー名]¥[インスタンス名]

そして次のコマンド。

CREATE DATABASE [データベース名]
ON
( NAME = [mdfの名称],
FILENAME = ‘[mdfファイルのパス]’,
SIZE = 100MB,
MAXSIZE = 500MB,
FILEGROWTH = 10% )
LOG ON
( NAME = [ldfの名称],
FILENAME = ‘[ldfファイルのパス]’,
SIZE = 10MB,
MAXSIZE = 50MB,
FILEGROWTH = 5MB ) ;
GO

ファイルのパスと名前は、DBを復元するならそれと全く同じにする必要がある。
DBのサイズは増加値はいい感じに調整してあげればOK。

データベースの復元

コマンド1つでサクッと簡単にできる。
ただ、復元する際に気を付けなければいけないのが、復元元PCのデータベースと同じファイルパスにDBファイルが存在しなきゃいけない。
復元した後に、パスを変更すればいいんだけども、ドライブ自体がない場合はUSBメモリや外付けHDDなどを使って無理やりパスを作るべし。
ただ、なぜかネットワークドライブだとうまく行かない。

restore database [データベース名] from disk =”[バックアップファイルのフルパス]”

データベースのファイルの変更

データベースのファイルは最低2つあるので、それぞれ移動させる。

参考:ユーザー データベースの移動
http://msdn.microsoft.com/ja-jp/library/ms345483.aspx

まずはコマンドプロンプトを起動し、osqlでログインする。

osql -E -S [サーバー名]¥[インスタンス名]

そしてデータベースをオフラインにする

ALTER DATABASE [データベース名] SET OFFLINE
go

続いて次のコマンド。mdfファイルとldfファイルをそれぞれ移動させる

ALTER DATABASE [データベース名] MODIFY FILE ( NAME = [mdfの名称] FILENAME = ‘[mdfファイルの新しいパス]’ )
go
ALTER DATABASE [データベース名] MODIFY FILE ( NAME = [ldfの名称], FILENAME = ‘[ldfファイルの新しいパス]’ )
go

ここまで正常に終わったら、mdfファイルとLDFファイルを新しいパスに移動させる。

最後に、次のコマンドを実行して完了。

ALTER DATABASE [データベース名] SET ONFLINE
go

これですべて完了。後は実際に接続できるか確認するべし。

何とかここまでやりきったが、長い戦いだった。