ソフマップ・ドットコム

Windows Server での仮想環境( Windows Server 2012 と SCVMM )での検証や勉強した事を書き綴る技術色の強いブログです。

SCVMM で SQL Server データ層アプリケーションを展開した時のエラー検証をした。


前回、SCVMM で SQL Server のデータ層アプリケーションを展開するも失敗した。の記事で発生したエラーについて検証をしてみました。

いろいろ可能性を考えてみました。例えば、データ層アプリケーションフレームワークのインストールをしていない。リモートの接続設定がおかしいなどなど。

結論から言うと、インスタンス名の指定ミスだったのですが、知らないとハマるパターンもあるかなと思い、エラーの再現と、正常に展開に成功する場合の違いを検証します。

まず、エラーが発生した時の SCVMM でのジョブ画面でのエラーメッセージのエラー番号は以下の通り。

サマリーを確認

SCVMM エラーコード:22521
SQL Server への接続を確立しているときに、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないかアクセスできません。インスタンス名が正しいこと、および、SQL Server がリモート接続を許可するように構成されているかを確認してください。

このエラーから推測できることは以下の 3 つと考えられる。

  1. SQL Server 側でファイアウォールの設定でポート解放( TCP 1433 / 1434 )していない。
  2. 構成マネージャーで TCP / TP の設定を無効にしている。
  3. インスタンス名を間違っているか指定されていない。

上記のうち、2 つに関しては SQL Server 展開時に使用する、インスタンス準備済みマスタ VHD で解放済み、また構成マネージャーで TCP / IP は有効に設定をしてから sysprep を実行しているため、除外する。

となると、インスタンス名が無効という事になる。しかし、インスタンス準備済みマスタの設定時にインスタンス名は SQLDB と設定している。SQL Server データ層アプリケーション展開時の SQL Server 構成画面でも前述のインスタンス名を指定している。

インスタンス名

上記画面のように、インスタンス名を SQLDB に設定しているにもかかわらず、インスタンス固有のエラーが発生するという事は、SQL Server 構成画面で、別のところにインスタンス名をしている箇所があると推測するが、そんなところあったとは記憶していない。

が、よく見てみると、触ったところのない個所を発見した。アプリケーションの構成画面で SQL Server データ層アプリケーションの
設定画面で下にある、詳細ボタンを発見した。このボタンをクリックした覚えはなかった。

アプリケーションの構成画面

詳細ボタンをクリックしてみたところ、以下のウインドウが表示された。
この画面、見覚えがない。よく確認してみると、SQL Server インスタンス名という項目を発見。

こんなところに、インスタンス名を指定する箇所があったとは知らなかったな。とりあえず、この箇所を空欄にしたまま、展開を進めてみることにする。このまま進めると、以前の通り展開エラーが発生するはず。

インスタンス名を入力する箇所

テンプレートデザイナーに戻り、下記の構成のまま展開する。

展開図

展開先にクラウドを選択する。

クラウドへ展開

展開名に「 インスタンス目を省略した場合 」と名付けて展開を開始した。

サービスの進捗状況

予想通り、SQLDAC( SQL Server データ層アプリケーション )のインストールで失敗している。インスタンス名が一致しないためだろう。

SQLDAC のインストールに失敗

ジョブの画面でエラー内容を確認する。
同じエラーコード:22521 が発生しているが、多少、文言が違う。ログファイルを確認してください。とのことだが、エラーコードが同じなため、インスタンス名が一致しないために起きたエラーと予測する。

エラー内容の確認

次は、インスタンス名を指定して展開をしてみる。
使用しているテンプレートをコピーして、v 1.35 → v 1.36 とする。

テンプレートをコピー

マシン層で右クリックをして、アプリケーションの構成画面へ移動する。

右クリックしてプロパティ

アプリケーションの構成画面でアンインストールモードの下部にある、詳細ボタンをクリックする。

詳細ボタンをクリック

詳細設定 – SQL Server データ層アプリケーションのウインドウで SQL Server インスタンス名の箇所で、設定してあるインスタンス名:SQLDB を入力する。

インスタンス名を指定

念のため、SQL Server 構成画面でリモート接続に TCP / IP を使用するにチェックが入っているかを確認する。
以下の画像ではちゃんとチェックが入っている。これにチェックが入っていないと展開エラーとなる。

TCP / IP にチェックを入れる

とりあえず、天下の準備が出来たので、以下の構成で展開する。

展開図

今回もクラウドへ展開する。名前は「 インスタンス名を入力した場合 」と名付けて、展開を開始しました。

クラウドへ展開

展開が無事に成功しました。やはり、先ほどの画面で、インスタンスを入力しないと、展開に失敗するようです。
しかしスムーズに展開が進み、SQLDAC のインストールに成功しているのがわかる。

展開に成功

次にジョブの変更履歴のタブへ移動し、SQL Server データ層アプリケーションの項目を確認します。
SQL Server データ層アプリケーションの名前や DAC インスタンス名、SQL インスタンス名、認証方法などの情報が確認できます。

変更履歴

サービスの一覧画面でもきちんと展開済みとなっており、実行中になっています。

サービスの一覧

展開したサーバへログオンし、SQL Server Management Studio からデータの確認を行います。

サーバへ接続

SQL Server Management Studio を起動して、ログオンします。

SQL Server へログオン

データベースを開いて、別の SQL Server から DAC として抽出したデータがテーブルに格納されているのが確認できます。

データが格納されている

これで、検証は終わりです。
結局は、インスタンス名が原因で展開できなかった、という事です。
以外に、ハマっている人も多いかな?と思ったので、検証記事を書いてみました。備忘録的な感じですがね。

原因ってのはわかってみると、「 何だ、そんなことかよ! 」って思うことが多いですよね。しょっちゅう見ている画面だったのに、詳細ボタンの存在を知らず、悩んでいたとは、いやはや情けない。


, , ,


Facebook ページへの「いいね!」もお願いします。 Facebook ページで最新記事のお知らせと、外部サイトの紹介を行っています。
是非「いいね!」をしていただき、最新の情報を Facebook で受け取ってください。



Comments are currently closed.