Troubleshooting Connectivity #5 – セッション確立までの動作

    高橋 理香 SQL Developer Support Escalation Engineer   こんにちは。 四半期に一回のペースでしかアップできていないのですが、この Troubleshooting Connectivity シリーズはまだネタはあるので、もう少し続けたいと思います。   さて今回ですが、Troubleshooting Connectivity #1 でご説明した接続 3 過程のうちの OS レベルのセッション確立の試行までの動作についてご紹介します。わかりやすくするために、TCP/IP プロトコルを使用した場合を例に説明します。   TCP/IP のセッションを確立するために必要な情報とは何か (復習) TCP/IP プロトコルを使用して SQL Server との間にセッションを確立するためには、SQL Server が動作するサーバーの IP アドレス (フェールオーバー クラスタ構成の場合には、SQL Server 用に割り当てた IP アドレス) と待ち受けているポート番号が必要です。 SQL Server 7.0 までは、そもそも同一マシン上に複数インスタンスをインストールする機能はなかったので、SQL Server のポート番号といえば 1433 でよかったのですが、SQL Server 2000…

1

[SQL Database] 接続タイムアウトの発生を改善したい

  高原 伸城 Support Escalation Engineer   皆さんこんにちは。 SQL Server/Windows Azure SQL Database サポートを担当しております 高原 です。 今回は、Windows Azure SQL Database に関するお問い合わせの中で、よくあるお問い合わせの一つを紹介したいと思います。   [質問] オンプレミス上のマシン(Web サーバー) や、Windows Azure 上の Web ロールから Windows Azure SQL Database へ接続する場合に、接続タイムアウト (Connection Timeout) が発生する場合があるが、接続タイムアウトの発生を軽減させる方法はあるか?   [回答] Windows Azure SQL Database へ接続するアプリケーション側で、接続タイムアウト値を延ばす ことにより、接続タイムアウトの発生を軽減させることが可能となります。 Windows Azure SQL Database は、マルチテナント構成となっており、複数のお客様により、Windows Azure SQL Database 物理マシンのリソース…

0

[Linux] BCP で 2GB 以上のサイズのファイルをインポートするには

横井 羽衣子 (よこい ういこ) SQL Developer Support Engineer 皆さんごきげんよう。本日は、Microsoft ODBC Driver 11 for SQL Server – RedHat Linux に含まれる BCP についてのお話です。 これまで、以前のバージョンに含まれる BCP では、インポートファイルのサイズが 2GB を超えたファイルについては、分割の上インポートする必要がありました。これに対し先日、11.0.2270.0 がリリースされ、2GB 以上のファイルを一括してインポートすることができるようになりました。 Microsoft® ODBC Driver 11 for SQL Server® – RedHat Linux http://www.microsoft.com/en-us/download/details.aspx?id=36437 Version: 11.0.2270.0 Date published: 1/15/2013 Linux ベースの OS において、BCP で大容量ファイルを取り扱われる際は、上記に差し替えていただき、ご対応ください。 参考 1 : 文字コードにご注意ください SQL Server…

0

Windows Azure で、Web ロールで特定のバージョンの SQL Server Native Client を常に使えるようにする方法

  横井 羽衣子 (よこい ういこ) SQL Developer Support Engineer 皆さんごきげんよう。今日は、みんな大好き Windows Azure で、Web ロールで特定のバージョンの (Guest OS に入ってるより新しいバージョンなど) SQL Server Native Client を常に使えるようにしたいときにはどうしたらいいか?というお話しをご紹介します。 PHP などで、ODBC 接続を使いたいシナリオがあります。こんな時、SQL Server Native Client を使って接続します。Windows Azure SQL Database のポータルで接続文字列をコピーするときも、いろいろ選べますが、SQL Server Native Client が文字列に入っています。しかし、オンプレミスの OS 上で動作するアプリケーションと異なり、Windows Azure であることを考慮したポイントがあります。今日はそれらの注意点などを踏まえながら、SQL Server Native Client を使えるようにする方法を見ていきましょう。 最初に : Windows Azure のロールとゲスト OS の関係 Visual Studio で…

0

Troubleshooting Connectivity #4 – 接続エラーの調査方法

  高橋 理香 SQL Developer Support Escalation Engineer   こんにちは。 SQL Server への接続シリーズも今回で 4 回目となりました。だいぶ時間空いてますけど、その点はご容赦ください。。。 それでも、少しでも、読んでくださっている皆さんのお役に立っているといいなと思う今日この頃です。 Troubleshooting Connectivity #1 – SQL Server への接続 Troubleshooting Connectivity #2 – エラー情報からわかる失敗原因 Troubleshooting Connectivity #3 – 予期しない接続切断 さて今回は、これまでの Troubleshooting ではなんとかならなかった、もしくは、きちんと裏を取ってから対処を行いたい、という場合にどんな情報を採取したらよいかについてご紹介したいと思います。また、実際のログなどを例に調査ポイントを説明します。 1. SQL Server への接続失敗についてまず確認すること 基本的には一般的なトラブルシューティングの場合と同様に 5W1H で考えてみましょう。 ログ採取は時には負荷を伴う場合もありますので、そういった場合には、これらの情報を頼りに、採取すべき情報の最小化を検討することになります。 WHAT (発生している現象) : どのようなエラーが発生するか。もしくは、何を見て接続の問題と判断したか。 WHERE (現象発生環境の範囲) : ツールやアプリケーションをどこで実行しているか。(SQL Server が動作しているサーバー上か、それとも、リモートのクライアントか。) クライアントも複数存在する場合にはそれら全部かそれとも一部のみか。…

1

[SQL Connectivity] Case Study : クラスタ化された構成の SQL Server 2008 Service Pack 1 以前のバージョンの名前付きインスタンスに Windows Vista 以降から接続できない

横井 羽衣子 (よこい ういこ) SQL Developer Support Engineer – Data Access 皆様ごきげんよう。本日は、「クラスタ化された構成の SQL Server 2008 Service Pack 1 以前のバージョンの名前付きインスタンスに Windows Vista 以降から接続できない」という現象についてお知らせいたします。 【今日のお題】 名前付きインスタンスが動作しているクラスタ化された SQL Server の環境に対し、Windows XP からは正常に接続ができるのに、Windows Vista 以降では接続時に以下のエラーが発生してしまう。なお、SQL Server Browser サービスを用いて接続することを想定している。 SQL Server のバージョンは、2005 と、2008 サービス パックなしの環境でも同一の事象が発生する。 接続できませんでした。 SQLState: ‘01000’ SQL Serverエラー: 11004 [Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]ConnectionOpen(Connect()) 接続できませんでした。 SQLState: ‘08001’ SQL…

0

[SQL Connectivity] Case Study : 認証 DC ダウン時の SSPI エラーについて

横井 羽衣子(よこい ういこ) SQL Developer Support Engineer 皆様ごきげんよう。今日は、接続できない系問題の一つをご紹介いたします。 【今日のお題】 複数台ドメイン コントローラ (DC) がある環境でサーバーメンテナンスをした。その時一台の DC だけが再起動処理に入ったタイミングで、ドメイン内の SQL Server に Windows 認証で接続を試みたら、なぜか “SSPI コンテキストを生成できません” エラーが返されて接続できなかった。 せっかく DC が複数台あるんだから、一台が使用不可の場合においても、自動的にその他の稼働中の DC に接続し、処理が行われるものじゃないの? なんで DC が複数台あってこんな現象が発生するの?? これは「SQL Server が最初にアクセスする認証 DC がダウンしているタイミングで認証処理をしにいくと、生存中の他の DC へ問い合わせを切り替える動作に時間がかかるのでタイムアウトしちゃう」という話となります。 DC がダウンしている状況下において SQL Server に対して接続を実施したり、ADSI などの DC で認証を行うアプリケーションなどで一般的に発生し得る現象です。例えば、SharePoint など、SQL Server をバックエンドに持つ環境でも影響を受けます。 はじめに : SSPIエラーとは SQL Server に…

0

Microsoft SQL Server JDBC Driver は Android OS をサポートしない

横井 羽衣子(よこい ういこ) SQL Developer Support Engineer 皆様ごきげんよう。今日は、Microsoft SQL Server JDBC ドライバは Android OS で動くか?という点についてお送りします。 【今日のお題】 Microsoft SQL Server JDBC ドライバを使って SQL Azure とかにつなぎたいの!出来る?出来ない? 端的に申しますと、残念ながら弊社 JDBC ドライバは Android OS 上では事実上使うことが出来ません。 また、製品として使用されることも想定されていません。将来的にサポートされる予定も現時点ではありません。(2012/10 月現在) Microsoft JDBC Driver 4.0 for SQL Server http://www.microsoft.com/ja-jp/download/details.aspx?id=11774 サポートされているオペレーティングシステムは、上記リンクにてご確認いただけますが、下記の通り Android OS は含まれておりません。 システム要件 サポートされているオペレーティング システム: Linux, Unix, Windows 7, Windows Server 2008 R2,…

0

[ADO.NET/SNAC] イニシャル パートナーがダウンしている場合、フェールオーバー パートナーに接続できる確率を高める方法

佐藤 靖典 SQL Developer Support Engineer こんにちは。 ADO.NET (System.Data.SqlClient) や SQL Server Native Client (SNAC) から、データベース ミラーリング構成の SQL Server を利用したシステムを開発・運用されているお客様はたくさんいらっしゃいます。 この記事では、データベース ミラーリング構成の SQL Server  を使用したシステムの可用性を、クライアント アプリケーションの設定で更に高める方法を紹介します。 1. シナリオ イニシャル パートナーのマシンをシャットダウンしている状態で、アプリケーションからデータベース ミラーリング構成の SQL Server に接続試行した場合、接続エラーが発生することがあります。 ADO.NET では、次のような例外を受け取ります。 System.Data.SqlClient.SqlException サーバーへの接続を確立しているときにエラーが発生しました。SQL Server 2005 に接続しているときときにこのエラーが発生した場合は、SQL Server の既定の設定がリモート接続を許可しないようになっていることがエラーの原因である可能性があります。 (provider: 名前付きパイプ プロバイダ, error: 40 – SQL Server への接続を開けませんでした) 開発者・運用者の方は、SQL Server をミラー構成にしているんだから、フェールオーバー…

0

Troubleshooting Connectivity #3 – 予期しない接続切断

  高橋 理香 SQL Developer Support Escalation Engineer   またまたご無沙汰してしまいました。もしお待ちくださっていた方がいらしたならすみません。 前回の 「Troubleshooting Connectivity #2 – エラー情報からわかる失敗原因」では、SQL Server へ接続できない場合に発生するエラーについてご紹介しました。そのエラーの対処も済み、確立した接続を使ってクエリの実行もできる状態であったとしても、いまだ接続エラーは発生する可能性はあります。そこで、SQL Server へのアクセスにおける接続関連エラーのトラブルシューティング 3 回目の今回は、前回予告した「一度確立した接続が切断される場合」について解説します。     SQL Server への接続が成功した後に切断される主な原因は? 「Troubleshooting Connectivity #1 – SQL Server への接続」で説明したように、SQL Server へのログインやデータベースへのアクセスは、TCP/IP や名前付きパイプなどの OS レベルのセッションが確立できている状況で初めて可能となります。以降の SQL 文の実行やその結果の受け取りなども、必ずこのセッションが確立している状況でなければなりません。つまり、SQL Server への接続確立後にセッションが失われると、以降の SQL Server へのアクセスは失敗することになります。 では、一度確立した接続が失われるのはどのような原因によるのでしょうか。お問い合わせで判明した原因を大別すると、だいたい以下の 6 点が原因で切断されているようです。   A. ネットワーク中継機器に何らかの問題があり、一定時間内に必要な応答が得られなかった。 ネットワーク中継機器の問題に関しては、Scalable Network Pack…

1