ページ

ラベル SQLServer の投稿を表示しています。 すべての投稿を表示
ラベル SQLServer の投稿を表示しています。 すべての投稿を表示

2013年2月7日木曜日

◆SQLServer データベースコピーウィザードを使う

データベースのコピーに「データベースコピーウィザード」なるものを使ってみた。(SQLServer2012)

本番のデータ移行ではmdfを直接コピーすることになると思うが、テスト的にデータを使ってみたかったのでオンラインでのコピーがしたかった。

SQLServerのウィザードなら素人にも使えるのかと思ったが、さにあらず。
それほど人にやさしいツールでは無かったので使い方をメモしておく。

  • 「SQLServer Management Studio」を起動
  • 「データベース」ツリーを展開し適当なデータベース上で右クリックし、コンテキストメニューから「タスク」「データベースのコピー」を選択
    (なぜにコンテキストメニューではなく通常のメニューに存在しないか疑問、コピー先インスタンスで操作する場合対象のDBが存在しないでしょうが・・・)
    image
  • 「次へ」
    image
  • 転送元のサーバー名を指定(Domain環境ならWindows認証が簡単か・・・)
    image
  • 転送先のサーバーを指定
  • 転送方法の選択で「SQL管理オブジェクトの方法を使用する」を選択(デタッチするくらいなら手作業でやった方が確実)
    image
  • 「データベースの選択」画面でDBの一覧が表示されるので対象のDBをチェック
    image
  • 「転送先データーベース構成」画面で上書きの可否を設定
    image
  • 「サーバーオブジェクトの選択」画面で追加オブジェクトが必要であれば指定(今回は指定しない)
  • 「パッケージ構成」画面で「パッケージ名」とログオプションを指定(エラーが起きる可能性が大なのでテキストの出力しておいたほうが見やすいと思われ)
  • 「パッケージのスケジュール設定」画面で「即時実行」か「スケジュール実行」かを指定する。「Integration Serviceプロキシアカウント」を選択するようになっているが「SQL Server エージェントサービスのアカウント」以外に選択肢がない・・・
    image
  • 「完了」ボタンをクリックすると実行される
    image

これでうまくいけば万々歳なのだが、素人がやるとまずうまくいかないだろう。

まずはこの処理自体は「SQL Server エージェント」サービスが担うようなので、このサービスが上がっていないといけない。(デフォルトで上がっているものでは無かったような気がする)

サービスが上がっていても今度はログインできないといったエラーが発生する。
ログを見ると、「ドメイン名\サーバー名」のようなありもしないユーザー名でアクセスしに行っているようだ。
良くは判らないが、サービスの実行ユーザーが宜しくないのだろう。

まぁ、しかしウィザード自体はちゃんとログオンできて相手先のテーブル名まで表示できているのだからいかようにでも出来るだろうに・・・。
少なくともウィザード実行時点でエージェントジョブがログインできない事は確認できるはず・・・。

ユーザーをドメインユーザーに変更して再実行。
今度は時間がかかっているので何やらうまくいきそう。

ありゃ、またエラー(><)

なんだかな~。

しかもログを見ても単に失敗したとしか出ていない。

あれ、いくつかのDBはコピーされているなぁ・・・。
一つだけ失敗だ。

何でしょう。

良く判らないのでログの出力先をテキストにして失敗したDBだけ再実行。

ありゃりゃ。成功だ。

タイミング?

なんかあまり信用できるツールでは無さそう。

試しに、SQLServer認証でもやってみたところ、ログイン自体は出来ているようだが、なにやら権限不足だと怒られている。

みのりがなさそうなのでここまで。

こんなツールが「ウィザード」を名乗っちゃだめだなぁ・・・。

2013年1月17日木曜日

◆SQLServerへの接続を許可するファイアウォール設定

  • 「コントロールパネル」の「Windows ファイアウォール」を開く
    image
  • 「詳細設定」をクリック
    image
  • 「受信の規則」を右クリックして「新しい規則」を選択
    image
  • 「新規の受信規則ウィザード」で「ポート」を選択して「次へ」
    image
  • プロトコルに「TCP」を選択し、「特定のローカルポート」に「1433」を指定して「次へ」
    image
  • 「接続を許可する」を選択して「次へ」
    image
  • 接続を許可したいプロファイルをチェックして「次へ」
    image
  • 「名前」と「説明」を記入して「完了」
    image

ちなみに、名前付きインスタンスの場合はポート番号が動的に決まるようなので「SQL Server Browser」経由での接続になるようだ。
特別セキュリティを気にするのでなければ固定ポートに変更してファイアウォール設定をするのが楽だと思われ・・・。

コマンドで設定する場合は(というかこっちのほうが楽)

>netsh advfirewall firewall add rule name="SQLServer1433接続許可" protocol=TCP dir=in localport=1433 action=allow profile=domain

2012年10月1日月曜日

◆VisualStudio2012でNorthwindを使う

一応以下のあたりに説明があるが、
http://msdn.microsoft.com/ja-jp/library/vstudio/8b6y4c7s.aspx
翻訳が頓珍漢で非常に滅入る。
自動翻訳にしては日本語らしい表現が多いし、自動じゃないとすればあまりに変な訳が多すぎる不思議なページ。

幸い、操作方法は英語に飛んでくれて、そちらの方が判りやすい。

 

2012からは、どうやらローカルのSQLExpressが不要になった風。
データベースファイルを直接使うには、以前だとSQLExpressに動的にアタッチしていたが、ComapctデータベースやAccessのmdbの様に、ファイルベースでそのまま扱えるようだ。

Northwindなど、昔のmdfはコンバート(アップグレード)して使う。

アップグレード方法は、以下に説明がある。
How to: Upgrade to LocalDB or Continue with SQL Server Express

手順だけ書くと

  1. サーバーエクスプローラで「データ接続」を右クリックして「接続の追加」を選択。
    image
  2. 「サーバー名」に「(LocalDB)\v11.0」と入力、「データベース接続」に「データベースファイルのアタッチ」を指定して「参照」ボタンから「Northwind.mdf」の場所をアサインする。
    image
  3. アップグレードを確認するダイアログが表示されるので「OK」をクリック
    image

 

 

「(LocalDB)\v11.0」なんておまじないを直接入力させるのはやめてほしいものだ・・・。

私が最近チェックした記事