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
これですべて完了。後は実際に接続できるか確認するべし。
何とかここまでやりきったが、長い戦いだった。