15

この問題で 2 日間立ち往生しているので、助けていただければ幸いです。

シナリオ: 自分の開発マシン (および別の同僚) から SERVER\INSTANCE に接続できますが、別の SQL Server からは接続できません。私が得るエラーは、一般的な「...インスタンス名が正しいことを確認してください..」です。私が行ったこと/確認したこと:

  1. 宛先(およびソース)サーバーのファイアウォールを無効にして、ファイアウォールの問題であるかどうかを確認しました(マシンから接続できるため、これが最も可能性が高いようですが、これは役に立ちませんでした)。

  2. SQL Browser が動作していることを確認しました (開発マシンから接続できるためです)。

  3. 両方の SQL Server には複数のインスタンスとハードコーディングされたポートがあるため、競合が発生した場合に備えて、それらが異なるポートであることを確認しました (これは役に立ちませんでした)。

  4. SQL Server を再起動し、ブラウザ/インスタンス サービスが実行されていることを確認しました

  5. イベントログを確認しました - 特記事項なし

  6. 興味深いことに、インスタンス名を介して接続せず、2 番目のサーバーから動的ポート (つまり、SERVER、PORT) を介して接続すると、正常に動作します。これは、ローカルで正常に動作することを除いて、SQL Browser に問題があることを示唆しています。サーバーと私の開発マシンから。

アイデアや提案はありますか?ありがとう。

編集:コメントを明確にするために、データSQLサーバーをSQLAと非データSQLBと呼びます。

編集#2:テストケース/情報を追加:

情報: 上記のテストはすべて、データベースへの接続を確立するために SSMS インターフェースを介して行われました。関連するデータベースは両方とも 2012 です。

新しいテスト ケース: 代わりにリンク サーバーをセットアップするスクリプトを実行してみましたが、SQL Server 2005 ボックスでスクリプトを実行すると問題なく動作することがわかりましたが、SQL Server 2012 サーバー (SQLB) で同じスクリプトを実行すると、SQLA に接続できませんでした。エラー: SQL Server ネットワーク インターフェイス: 指定されたサーバー/インスタンスの検索エラー [xFFFFFFFF]。

編集#3:潜在的な問題を絞り込みました:

PortQry をダウンロードして実行し、開発ボックスから実行すると、UDP 経由で 1434 をクエリして返されたすべてのインスタンスを取得し、SQLB から同じクエリを実行してもインスタンスは返されず、開発ボックスでは LISTING として返されたのに対し、1434 はフィルター処理されていると表示されます。両方のマシンでファイアウォールを無効にしたことを除いて、これはファイアウォールに関連しているとしか思えません

4

9 に答える 9

6

これがあなたが探していた答えかどうかはわかりませんが、私にとってはうまくいきました。Windows ファイアウォールで車輪を回転させた後、SQL Server 構成マネージャーに戻り、SQL Server ネットワーク構成を確認し、使用していたインスタンスのプロトコルで TCP/IP を確認しました。デフォルトでは、私のものは無効に設定されているようです。これにより、ローカルマシンでのインスタンス接続は許可されますが、別のマシンでの SSMS の使用は許可されません。TCP/IP を有効にするとうまくいきました。

http://technet.microsoft.com/en-us/library/hh231672.aspx

于 2014-04-04T20:23:54.037 に答える
4

私はついにここで問題を見つけました。ファイアウォールは両方の場所でオフにされていましたが、SQLB データ センターのルーターが UDP 1434 をアクティブにブロックしていることがわかりました。これは、Microsoft の PorQry ツール ( http://www.microsoft.com ) をインストールすることで特定できました。 /en-ca/download/details.aspx?id=17148 ) を実行し、UDP ポートに対してクエリを実行します。次に、実際の接続の詳細を表示するために WireShark ( http://www.wireshark.org/ ) をインストールし、要求の転送を拒否している問題のルーターを見つけました。このルーターは SQLB のみに影響を与えたため、他のすべての接続が正常に機能した理由はこれで説明できます。

皆さんの提案と支援に感謝します!

于 2013-06-11T02:21:20.387 に答える
2
  1. SQL 構成マネージャー > TCP/IP でポートを指定する必要がありました
  2. ファイアウォールでポートを開きます
  3. 次に、「サーバー名\他のデータベース インスタンス (ポート番号)」を使用してリモート接続します。
  4. つながった!
于 2015-01-28T12:23:14.210 に答える
2

開発マシンで定義されたクライアント エイリアスはありますか? その場合は、SQLB でも同じように定義してください。具体的には、ポートを定義している InstanceName 形式のクライアント エイリアスがあり、実際のインスタンス名と SQL Browser の必要性を (部分的に) バイパスしていると思われます。ただし、クライアントエイリアスには他の可能性もあるため、それらが同じであることを確認してください。

SQL クライアント エイリアスを確認するには、SQL Server 構成マネージャーを使用します (microsoft SQLServer の [プログラムのスタート] メニュー)。そこで、クライアント構成に移動し、次に「エイリアス」に移動します。


その他の確認事項:

  1. SQLA と SQLB が同じドメインにあるか、それらの間に信頼の問題がないこと。

  2. SQLB で TCP/IP がクライアント プロトコルとして有効になっていることを確認します (これは SQL 構成マネージャーでも有効です)。


あなたの回答の中には、ドメインと信頼に関する私の声明のポイントを見逃しているかもしれないと思う. クライアントとサーバーの間に十分な信頼がない限り、SQL " Server\Instance "に接続できません。これは、SQL Sevrer が使用するインスタンス命名スキーム全体が、検出、場所、承認のために SPN (サービス プリンシパル名) に依存しており、SPN が AD に格納されているためです。したがって、クライアントが同じボックス上にない限り、インスタンスはその SPN を登録できる必要があり、クライアントは、サーバー インスタンスが SPN を登録した AD フォレストを参照できる必要があります。

それができない場合、インスタンス名は効果的に機能せず、代わりにポート番号 (またはパイプ名) を使用する必要があります。これは、私が今起こっていると疑っていることです。

于 2013-06-10T20:07:20.277 に答える
1

この問題を解決するために約10日を費やした後、今日ついにそれを理解し、解決策を投稿することにしました

スタート メニューで RUN と入力し、実行ボックスで SERVICES.MSC と入力して [OK] をクリックします。

これら2つのサービスが開始されていることを確認してください SQL Server(MSSQLSERVER) SQL Server Vss writer

于 2014-04-27T12:31:15.160 に答える
0

インスタンス名に接続するには、2 つのことを行う必要があります

1. Enable SQL Server Browser (in SQL server config manager)
2. Enable UDP, port 1434 trong file wall (if you using amazon EC2 or other service you need open port in their setting too)

SQLを再起動して完了

于 2015-08-22T10:06:23.943 に答える
0

これを解決するには、SQL Server をホストしているマシンで次の条件が満たされていることを確認する必要があります...

  1. Server Browser サービスが実行されていることを確認する
  2. ネットワーク経由で通信する各インスタンスで TCP/IP 通信が有効になっていることを確認します。 ここに画像の説明を入力
  3. 複数のインスタンスを実行している場合は、各インスタンスが異なるポートを使用していること、およびポートが使用されていないことを確認してください。たとえば、2 つのインスタンスの場合は 1433 (デフォルト インスタンスのデフォルト ポート、名前付きインスタンスのデフォルト ポートは 1435 です。 ここに画像の説明を入力
  4. ファイアウォールに、ポート1434UDPプロトコルを介した SQL Server ブラウザーとの通信を許可するエントリがあることを確認します。
  5. 手順 3 で割り当てられたポートで、TCPプロトコル を介して SQL Server インスタンスとの通信を許可するエントリがファイアウォールにあることを確認します。ここに画像の説明を入力
于 2017-10-31T06:44:34.640 に答える