トラブルシューティング手法とサポートサービス

システムで何らかのエラーが発生したという場合や、やりたいことができないといった場合に、トラブルシューティングを行うことになりますが、その際の一般的なトラブルシューティングの流れについてご紹介します。私たちサポートチームもだいたいこのようなフローの考え方をもとに調査を行っています。また、テクニカルサポートでは、インシデント単位で承っているプロフェッショナルサービスと、時間単位で承っているプレミアサービスがあります。トラブルシューティング内容に応じた、それらのサポートサービスの違いについても、参考としてご案内します。 大きく、運用でのエラー発生、開発時の How-to では考え方も異なりますので、それぞれ分けて見ていきます。 エラー発生 A) いま事象が発生しているか これは一番重要なポイントになります。いま事象が発生している場合には、すぐに対処が必要なため緊急度は高くなり、できることも多くなります。復旧優先で対処となりそうな対応をすぐに行ったり、原因調査のためにいったん情報も採取してから対処を行うといった対応があります。 一方、いま発生していないけれども、過去発生していたエラーをさかのぼって調査することもあります。この場合には、どれだけ手掛かりとなる情報が残っているかが重要です。 B)エラーメッセージやログから調査 いま事象が発生している場合には、エラーメッセージやログを確認します。 SQL Server を例にとると、既定で出力されている情報として参考になるのは、下記があります。 既定の情報 SQL Server エラーログ (ERRORLOGファイルや、同じフォルダにあるデフォルトトレースやダンプファイル等) Reporting Services ログ (ログファイルや同じフォルダにあるダンプファイル、ExcecutionLog ビュー) Analysis Services ログ (msmdsrv.logやフライトレコーダー) イベントログ その他、事象に応じて、次のような情報を採取することもあります。 追加情報 ブロッキング情報 動的管理ビュー サーバートレース 拡張イベント パフォーマンス カウンター 問題ステップ記録ツール BID トレース ネットワークトレース ダンプファイル プロフェッショナルサービス、プレミアサービスのいずれでも、これらの情報からの調査は承っています。違いとしては、下記があります。 プロフェッショナルサービス これらの情報から、対処方法を調査してご案内します。 プレミアサービス これらの情報から、対処方法を調査してご案内します。また、必要に応じて原因追及の調査も行うことが可能です。 追加情報の中でも、BIDトレース、ネットワークトレース、ダンプファイルを採取する必要がある事象については、環境依存の問題の可能性が一般的には高いと言えます。その場合にはプレミアサービスでのみ調査可能です。   C) 発生状況の切り分け 事象によっては、情報採取よりも、事象が発生するパターン、発生しないパターンを切り分けることによって、問題点が特定できる場合があります。また、発生しないパターンが確認できると、それが対処方法に直結する場合もあります。例えば、次のような切り分けがあります。 特定の環境で発生する、もしくは複数の環境で発生する 特定のクライアントで発生する、複数のクライアントで発生する 特定のユーザーで発生する、複数のユーザーで発生する…

0

SQL Server 2012/2014 をインストールするために必要な .NET Framework について

皆さん、こんにちは。 SQL Server/Microsoft Azure SQL Database サポートチームです。 今回は、SQL Server 2012/2014 をインストールするために必要な .NET Framework について紹介します。   SQL Server 2012/2014 をインストールするために必要な .NET Framework については、以下の Books Online で公開していますが、本 Blog の中で、.NET Framework の要件について補足したいと思います。 SQL Server 2014 のインストールに必要なハードウェアおよびソフトウェア SQL Server 2012 のインストールに必要なハードウェアおよびソフトウェア     .NET Framework  バージョン  補足説明  .NET Framework 3.5 SP1  データベース エンジン、Reporting  Service、SQL Server Management Studio などの 機能/ツールをインストールする場合に必要  .NET Framework…

1

[SQL Database] 新バージョン(V12) へのアップグレード用 PowerShell コマンドレット

  SQL Server/Microsoft Azure SQL Database サポート 福原 宗稚 Microsoft Azure SQL Database では、Basic/Standard/Premium エディションの環境で、新バージョン V12 へのアップグレードが可能になっています。これまでもポータル画面から、手動でアップグレードや、アップグレードの状態確認ができましたが、新しい Windows Azure PowerShell によって、PowerShell コマンドレットからも実施可能になりました。また、PowerShell コマンドレットでは、ポータル画面からできないアップグレードのキャンセルも可能という利点があります。   Start-AzureSqlServerUpgrade : 新バージョン V12 へのアップグレードを実行します。アップグレードは、バックグラウンドで行われるため、アップグレードを開始した後もデータベースはオンラインのまま使用可能です。 Get-AzureSqlServerUpgrade : 実行中のアップグレードの状態を確認します。 Stop-AzureSqlServerUpgrade : 実行中のアップグレードをキャンセルします。上記の通りアップグレード開始後もデータベースは使用可能ですが、万が一何か予期しない問題が発生した場合や、誤ってアップグレードを開始してしまったので改めて後日やり直したいといった場合に使えます。   手順 1.  Microsoft Web Platform Installer から、最新の Windows Azure PowerShell をインストールします。 ※すでに Azure PowerShell のバージョンが、2015年5月リリースの 0.9.1 以上であれば、新たに Windows Azure…

0

[SSRS] HowTo:詳細レポートを別ウィンドウで開く方法

  SQL Server Developer Support チーム 須田 恵 こんにちは! 今日は比較的よくあるお問い合わせについてご紹介いたします。 SSRS では、メインレポートのリンクをクリックすると詳細レポートが開くよう設定することが可能です。 出展:詳細レポート (レポート ビルダーおよび SSRS) テキストボックスや画像などのプロパティ画面にて [アクション] をクリックし、[レポートに移動する] ラジオボタンを選択し、移動先のレポートを指定します。 参考情報:レポートへのドリルスルー アクションの追加 (レポート ビルダーおよび SSRS) 上記設定では、メインレポートのリンクをクリックすると、詳細レポートは同一ウィンドウで開かれます。 リンクを右クリック [新しいウィンドウで開く] を選択しても、空白のページが開くのみです。 メインレポートと詳細レポートを別ウィンドウにして、メインレポートもそのまま参照できるようにしたい場合はどうすればよいでしょうか?   別ウィンドウで開くには? アクションの設定を [レポートに移動する] から、[URL に移動する] に変更し、かつ JavaScript を組み合わせることで実現可能です。 1) テキストボックスのプロパティ画面にて [アクション] をクリックし、[URL に移動する] ラジオボタンを選択します。 2) [fx] ボタンをクリックし、[式] ウィンドウを表示し設定します。 基本的な構文は下記です。 =“javascript:void(window.open(‘“+ <移動先のレポートのURL > + “‘,’_blank’))”…

0

[SQL Database] Web および Business エディションの終了に伴う、新エディションへの移行について (Microsoft Azure SQL Database)

  皆さん、こんにちは。 SQL Server/Microsoft Azure SQL Database サポートチーム です。 既にご存知の方も多いかと思いますが、Microsoft Azure SQL Database (以下 MASD) の 旧エディション (Web および Business) が、2015年9月以降、利用できなくなります。 本サービスの終了に伴い、現在 旧エディション (Web および Business) をご利用のお客様は、新エディションへの移行 (アップグレード) が必要となります。 そのため、本サービスが終了するまでに、計画的に新エディションへの移行 (アップグレード) をお願いします。 尚、新エディション (Basic/Standard/Premium) への移行 (アップグレード) は、Windows Azure 管理ポータル から オンライン処理 で実施することが可能です。※ 新エディションへの移行中も、お客様データベースへのアクセス (SELECT/UPDATE/DELETE/INSERT) が可能です。   [新エディションへの移行手順] 1) Windows Azure 管理ポータルにログインします。 2) 移行対象 (アップグレード対象) のデータベースを選択します。…

0

Kerberos認証を用いてファイル共有上のデータを基にBulk Insertするとアクセス拒否で処理が失敗する

  横井 羽衣子 (よこい ういこ) SQL Server Developer Support Engineer 皆さん、ご機嫌よう。今日は共有フォルダ上のファイルをソースとして Bulk Insert を実行した際、アクセス拒否エラーが発生する現象についてご紹介します。 エラー : メッセージ 4861、レベル 16、状態 1、行 1 ファイル “<CSV ファイル名>” を開けなかったので、一括読み込みできません。オペレーティング システム エラー コード 5(アクセスが拒否されました。)。 発生条件 : ・Active Directory 環境であること ・Windows 認証 を使うこと ・Bulk Insert のソースは SQL Server 構成マシンとは別のマシン上に配置されていること ※ SQL Server 認証ユーザーで実行される場合は、問題は発生しません。 ※ Always ON / シングル構成に限らず発生します。 図 : File…

0

Analysis Services のデッドロックとブロッキングの確認方法

はじめに Analysis Services データベースにおいてもデッドロックやブロッキングが発生することがあり、SQL Server Profiler を使って発生状況を確認する事が可能です。 Profiler の起動方法についてはこちらをご覧下さい。SQL Server も Analysis Services も Profiler の起動方法は同じです。Profiler の接続先を Analysis Services インスタンスに指定することで、Analysis Services のトレースを取得できます。 ※Profiler を GUI で使用すると、スクリプトで取得する場合と比較して負荷が大きくなります。そのため、運用環境で情報を取得する場合は、スクリプトで取得する事をお勧めします。スクリプトでの取得方法は、[SSAS] SQL Server Analysis Services トレース採取方法 をご覧ください。 — 参考情報DO’s&DONT’s #1: やらない方がいいこと   運用環境で、Profiler GUI を使用してトレースする デッドロックの確認方法Analysis Services のデッドロックは SQL Server Profiler の Deadlock イベントで確認することができます。Deadlock イベントでは、デッドロックを検知した際に、XML の構造でその情報を取得します。どのセッションがどのオブジェクトに対してロックを獲得していて、どのセッションがそのオブジェクトへのロック獲得を待っているのかを確認することができます。 Deadlock イベントは既定で有効になっていないため、トレースのプロパティで [すべてのイベントを表示する] オプションから…

0

[Data Access] ODBC カーソルライブラリ非推奨に伴う Visual Studio 2012 以降のバージョンの MFC における実装変更とその動作について

横井 羽衣子 (よこい ういこ) Microsoft SQL Developer Support Engineer みなさんごきげんよう。本日は、Visual Studio 2012 の MFC CDatabase クラスにおける実装変更と、それに伴う挙動の変化についてご紹介します。この挙動は、レガシー テクノロジの一つである ODBC カーソル ライブラリが非推奨になったことに伴う変更です。 ODBC カーソル ライブラリをはじめ、いくつかの古くから存在するデータアクセス テクノロジには時代の変化に伴い、非推奨となった機能があります。今回の記事では、そうした非推奨となった機能についての情報を今後確認頂くための情報などもご紹介します。 【現象】 Visual Studio 2012 より前のバージョンの MFC の CDatabase クラスで以下の条件で処理を実行した場合と、Visual Studio 2012 以降の同クラスを用いた場合で接続先の SQL Server のバージョンに関わらず、処理の結果が異なる。 実装の流れは以下の通り。 1. CDatabase::OpenEx() のオプションに、CDatabase::useCursorLib を指定してデータベースをオープン 2. CRecordset::Open() でレコードセットタイプ (nOpenType) を明示的に指定しないか、あるいは CRecoredset::snapshot(※) を指定して Edit() メソッドを実行する 結果は以下の通り。 Visual…

0

[SSIS] パッケージログの出力方法

    こんにちは。 SQL Server Integration Services (以下 SSIS) でのログ出力方法についてご案内します。 今回は、3 つの方法をご紹介します。 1. パッケージ開発ツールでのログ出力設定 2. dtexec パラメーター指定でのログ出力  3. SSISDB データベース内のログを参照する  ※SQL Server 2012 以降のバージョンでのみ利用可能 *** SSISDB について補足 *** SQL Server 2012 より新機能としてプロジェクト配置モデルという実行形態が導入され、配置先に SSISDB が利用できるようになりました。 これに伴い、パッケージ開発ツールも一新されています。SQL Server 2012 以降は従来の SSIS パッケージの開発/実行形態をレガシ SSIS と呼び区別しています。   レガシ SSIS 機能 SSISDB の利用 開発ツール SQL Server 2005 〇 X SQL…

0

[Info] .NET Framework アプリケーションをリモート配置した場合に SQL Server への接続がタイムアウトすることがある

今回の記事では、SQL Server データアクセスを行うアプリケーションについて、その実体の配置場所によって処理の遅延が発生し、接続処理がタイムアウトしたという事例について紹介いたします。もし、身近に同様の事例や、経験をお持ちの方は、以下の内容がご参考になれば幸いです。   事例 : 「ファイル共有に配置したADO から ADO.NET アプリケーションに移行したら遅くなった」 ADO 経由で SQL Server に接続しデータアクセスを実行するアプリケーション(*.exe)を共有フォルダ上に配置し、クライアントには共有フォルダ上のアプリケーションのショートカットをダブルクリックしてアプリケーションを実行していたシステムを、.NET Framework で再構成し、ADO.NET 経由で SQL Server に接続するようにマイグレーションしたところ、SQL Server への接続が高確率でタイムアウトするようになった。 接続文字列で、”Connection Timeout” プロパティを 120 秒程に延長してみたが、状況は改善しなかった。処理の序盤ではタイムアウトせず、だんだんタイムアウトしていく確率が上がっていくような動きになっている。そこでアプリケーションをクライアント ローカルもしくは SQL Server と同じ環境に配置したところ、タイムアウトは一切発生しないことがわかった。 検証結果から、アプリケーションの配置場所がローカルか、リモートかという違いのみ、動作に影響しているようであるが、以前の ADO 経由のアプリケーションでは問題が発生しなかった。 発生例) Visual Basic 6.0 アプリケーションから Visual Basic (.NET Framework ベース) に移行した場合など   この事例での対処 この問題は障害ではなく、以下の二つの要因により接続処理のすべてのフェーズが接続タイムアウト期間中に完遂していない可能性が高いという判断に至りました。このため、この件ではアプリケーションの配置を各ローカルに変更することにより、問題を解消することができました。 1. 非同期で読み込まれていくアプリケーション実行関連のファイル(DLL、EXE、ini、config ファイルなど)のネットワーク伝送およびネットワーク伝送処理における IO のオーバーヘッド 2….

0