ユーザーは、TCP/IP プロトコルを使用してリモートからSQL Serverに接続できない可能性があります
この記事は、TCP/IP プロトコルを使用してリモートからSQL Serverに接続できない問題を解決するのに役立ちます。
元の製品バージョン: SQL Server
元の KB 番号: 2018930
現象
Microsoft SQL Serverを使用すると、次の 1 つ以上の現象が表示される場合があります。
TCP/IP 経由で接続できるのは、 CONTROL SERVER アクセス許可を持つユーザー ( たとえば、syadmin 固定サーバー ロールのメンバー) のみです。 このアクセス許可を持っていないユーザーは、Windows または SQL Server 認証を使用して TCP/IP プロトコル経由でリモート接続することはできません。
注:
昇格されたユーザー接続は 、sys.dm_exec_sessions (Transact-SQL) 動的管理ビュー (DMV) にのみ表示されますが、 sys.dm_exec_connections (Transact-SQL) ビューには表示されません。
名前付きパイプ プロトコルを使用したローカル接続とリモート接続と、共有メモリ プロトコルを使用したローカル接続の両方が引き続き正常に動作します。
さらに、次のメッセージは、SQL Server Errorlog ファイルに記録されます。
起動時SQL Server:
エラー: 26023、重大度: 16、状態: 1。
サーバー TCP プロバイダーが ['any'ipv6< 1963> ] でリッスンできませんでした。 Tcp ポートは既に使用されています。
エラー: 9692、重大度: 16、状態: 1。
Service Broker プロトコル トランスポートは、別のプロセスで使用されているため、ポート 1963 でリッスンできません。失敗したログインの場合:
SQL Server 2008 以降のバージョン:
エラー: 18456、重大度: 14、状態: 11。
ユーザー 'MyDomain\TestAcc' のログインに失敗しました。 理由: トークンベースのサーバー アクセス検証がインフラストラクチャ エラーで失敗しました。 以前のエラーを確認します。
原因
このエラーは、SQL Server インスタンスが使用するように構成されているのと同じポートを使用して Service Broker の TCP エンドポイントを構成するときに発生します。 エンドポイントの一覧を取得するには、次のクエリを実行します。
SELECT * FROM sys.tcp_endpoints
注:
sys.tcp_endpoints (Transact-SQL) に関するオンライン ブックトピックで説明されているように、このビューには、SQL Server インスタンスが現在使用するように構成されているポートとプロトコルに関する情報は含まれません。 その情報を見つけるには、「SQL Server 構成マネージャー」を参照してください。
解決方法
方法 1: DROP ENDPOINT (Transact-SQL) コマンドを使用して、問題の原因となっているエンドポイントを削除します。
たとえば、という名前
TestEP
のエンドポイントを削除するには、次のコマンドを使用できます。DROP ENDPOINT TestEP
方法 2: ALTER ENDPOINT (Transact-SQL) コマンドを使用して別のポートを使用するようにエンドポイントを変更します。
たとえば、別のポートを使用するようにという名前
TestEP
のエンドポイントを変更するには、次のコマンドを使用できます。ALTER ENDPOINT TestEP as tcp (listener_port=1980)
詳細
同様の問題は、データベース ミラーリング用に作成された TCP エンドポイントなど、他の TCP エンドポイントでも発生する可能性があり、起動時SQL Serverエラー メッセージはそれに応じて変更されます。