SQL Server Express 2012のリモート接続を有効にする


403

SQL Server Express 2012をホームサーバーにインストールしました。デスクトップPCからVisual Studio 2012に接続しようとすると、よく知られているエラーが繰り返し表示されます。

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

これを修正するために私がやったこと:

  • サーバーでSQL Server構成マネージャーを実行し、SQL Serverブラウザーを有効にする
  • ローカルサブネットのTCP、ポート1433および1434のサーバーにWindowsファイアウォールの例外を追加します。
  • デスクトップとしてログインしているユーザーのSQL Serverインスタンスにログインしていることを確認します。
  • SQL ServerインスタンスでWindows認証を使用していることを確認します。
  • SQL ServerとDangサーバー全体を繰り返し再起動します。
  • 髪を全部抜いて。

SQL Server 2012 Expressでリモート接続を許可するにはどうすればよいですか?


7
SQL Server Browserサービスを有効にすることで解決しました:D。投稿いただきありがとうございます。
alansiqueira27 2014年

1
1433 UDPポートのロックを解除すると助かります!
マイケル

1
また、Azure VMを使用している場合は、Azureの管理ポータル(VM自体のファイアウォールへの外部ファイアウォールとして機能する)からもポートを開くことを忘れないでください。:そのようなstackoverflow.com/questions/34251382/...
jleach

Sql

回答:


731

さて、私が尋ねてうれしいです。私が最終的に発見した解決策はここにありました:

SQL Server Expressを構成して、ポート1433でリモートTCP / IP接続を許可するにはどうすればよいですか?

  1. SQL Server構成マネージャーを実行します。
  2. SQL Serverネットワーク構成> SQLEXPRESSのプロトコルに移動します。
  3. TCP / IPが有効になっていることを確認します。

これまでのところ、とても良く、完全に期待されています。しかしその後:

  1. [TCP / IP]を右クリックし、[ プロパティ ]を選択します
  2. IP2の下で、IPアドレスがローカルサブネット上のコンピューターのIPアドレスに設定されていることを確認します。
  3. IPAllまでスクロールします。
  4. TCP動的ポート空白であることを確認します。(鉱山は5桁のポート番号に設定されていました。)
  5. TCPポート1433に設定されていることを確認します。(私は空白だった。)

(以下の手順を実行する場合にも、それはだていない SQL Serverブラウザを有効にする必要があり、あなただけのポート1433、いない1434を許可する必要があります)

これらの追加の5つの手順は、以前のバージョンのSQL Server、Express、またはその他で実行しなければならなかったことを思い出せません。デフォルトのインスタンスの代わりにサーバーで名前付きインスタンス(myservername \ SQLEXPRESS)を使用しているため、これらは必要だったようです。こちらをご覧ください:

特定のTCPポートでリッスンするようにサーバーを構成する(SQL Server構成マネージャー)


7
SQL Server Expressが唯一のインスタンスではない場合、他のインスタンスでポート1433をUNASSIGNする必要がある場合があります。2008 R2のデフォルトインスタンス(MSSQLSERVER)があり、外部から両方に接続できる唯一の方法は、ポート1433を2012インスタンス(上記)に割り当て、古いデフォルトインスタンスのポート割り当てをTCP動的に変更することです。ポート= "0"およびTCPポート= ""(空白)。それを逆に行うと、デフォルトのインスタンスにのみアクセスが許可されます。
ロバートカルホーン

17
そのIPAll設定は救世主のアドバイスでした!鉱山はあなたのもののようでした...:D
レニエル・マッカフェリ

18
それが他の誰かを助ける場合に備えて...これは助けになりましたが、SQL Server Browserサービスを開始するまで接続できませんでした。(注:何らかの理由でSQL Server Browserサービスのスタートアップの種類が「無効」だったため、これを行うにはWindowsの「サービス」アプリケーションにアクセスする必要がありました。スタートアップの種類を「自動」に変更し、サービスを開始してから、接続できます。)
Mercurial

9
Windows 8およびSQLEXPRESSインスタンスにインストールされたSQL 2012 Express SP1では、動的ポートを空白以外に設定する必要がありました(削除した場合は0に設定すると、新しいランダムポートが再計算されます)。また、両方のTCPを開くAdvanced Firewallコントロールパネルの1433およびUDP 1434着信ポートルール。動的ポートが空白の場合、SQL Serverは起動時にハングしました。
トニーウォール

10
感謝と賛成を言いたかっただけです。あなたは私をたくさんの時間を節約しました。正しい接続構文で投稿を更新してもよろしいですか?myserver\sqlexpress,[portnumber]ブラケットなしで使用する必要があります。それがあることに注意してください,ではなく:
マルコ

105

(UDPポート1434を開いてSQL Serverブラウザーを有効にせずに)リモートSQL Serverに接続する正しい方法は、名前付きインスタンスの代わりにipとポートを使用することです。

名前付きインスタンスの代わりにipとportを使用すると、攻撃対象領域が減少するため、より安全です。

たぶん2枚の写真が2000語を話します...

このメソッドは指定されたポートを使用します(これはほとんどの人が私が信じているものです)。

ここに画像の説明を入力してください

この方法では、UDPポート1434を開き、SQL Server Browserを実行する必要があります。

ここに画像の説明を入力してください


これが「正しい」方法であると言って、あなたが何を意味するかについて詳しく説明できますか?
Ryan Lundy 2013年

3
@Kyralessa Ha!...リモートインスタンスに接続しようとして4〜5時間髪を引っ張った後、再び冷静になったので、ここで「正しい」とは私のコンテキストから読み取られることを意味することを説明する必要があります。SQL Server Browserを有効にしていないため、インスタンス名を使用して接続するのは「正しくありません」。
Rosdi Kasim 2013

誤解を避けるために、回答にいくつかの説明を追加しました。
Rosdi Kasim 2013

1
ありがとう;)ブラウザサービスを実行するためのアクセス権がない場合は、ポートを指定する必要があります。
Arman McHitarian 2014年

3
プラス1は、MSがポート番号の区切り文字として列の代わりにカンマを使用することを示す
Jorj

32

もう一つ...

Kyralessaは素晴らしい情報を提供していますが、この記事の後でさえ困ったところに、もう1つ追加することがあります。

[SQL Serverネットワークの構成]> [サーバーのプロトコル]> [TCP / IP有効]の下。TCP / IPを右クリックし、プロパティを選択します。IPアドレスの下で、使用している接続タイプごとに有効をはいに設定する必要があります。

ここに画像の説明を入力してください


18

これを使用して、この問題を解決できます。

[スタート]> [実行]に移動し、CLICONFG.EXEを実行します。

名前付きパイププロトコルがリストの最初になります。降格して、TCP / IPを昇格させます。

アプリケーションを徹底的にテストします。

これがお役に立てば幸いです。


うわぁ、なんと宝石…ありがとう。存在することさえ知らなかった。
Louis Van Tonder

1
これにより、サーバーではなくTCP / IPを使用するようにクライアントが構成されます。
mcr 2016年

OMG、うまくいきました!ログインしてこの回答に投票してください。感謝
Aki

15

設定することもできます

すべてをNOで聞く

プロトコルダイアログでIPアドレスIP1で(たとえば)

有効に設定してはい、

年のIPアドレスを定義し、

TCPダイナミックをブランクに設定し、

1433(またはその他)へのTCPポート


SQL 2012 Express SP1がインストールされたWindows 8.1でこれを行うと、SQLが起動時にハングアップしました:(
Zhaph-Ben Duguid

すべてのIPエントリ1、2、...を有効+アクティブ、消去された動的、消去されたポートに設定し、IPAllポートを1433に設定した後、ファイアウォールでTCP 1433およびUPD 1434を開くルールを追加する必要がありました(1434名前を使用しない場合は不要ですが、ポート番号のみ)。
Mordachai 14

11

この記事は私を助けました...

SQL Serverでリモート接続を有効にする方法

SQL Serverのすべてが構成され、ファイアウォールがポート1433をブロックしていたことが問題でした


誰もが知っている、または簡単にAzureの許可されたポート構成に出くわします。WINDOWS VMファイアウォールによってポートがブロックされている可能性があります。ありがとう。+ 1
2b77bee6-5445-4c77-b1eb-4df3e5

11

最近この問題が発生しました。2015年8月

SQL Server構成マネージャーを開いて解決

  • SQL Serverネットワーク構成-> SQLEXPRESSのプロトコル
  • TCP / IPのプロパティ-> [IPアドレス]タブ
  • すべてがデフォルトのままで、IPALLのみを設定:TCPポートを1433に設定

SQL Server Managerを使用してマシンに接続できます:[hostaddress]、1433

例:

ここに画像の説明を入力してください


6

デフォルト設定でインストールされたSQL Server 2012 Developer Editionのインストールでは、SQL Server構成マネージャー-> SQL Serverネットワーク構成-> MSSQLSERVERのプロトコルをロードし、TCP / IPを無効から有効に変更するだけでした。


1
簡単なメモ:これはうまくいきませんでした。何らかの理由で間違ったIPがそこにありました。しかし、Kyralessaのステップは、IPの更新を引き起こしたため、うまくいきました。
ブライアンマッケイ2013年

これは私のサーバーの1つでは機能しますが、他のサーバーでは機能しません。
Cheny

5

ファイアウォールの受信ポートルールを追加して、UDPポート1434を開く必要がありました。これは、SQL Server Browserがリッスンするものです。


3

「Rosdi Kasim」はIPでの詳細な構成を必要としないため、私はその方法を好みます。

別のサーバーをもう一度起動しようとすると、間違いなく再び忘れてしまいます。

Sql Server Browserサービスを有効にし、サーバーを接続するときにIPの後ろに\ SQLEXPRESSを追加するだけで、Kit It Simple Stupid(KISS)を維持できます。

「\ SQLEXPRESS」を使用せずにIPを直接使用すると、デフォルトのポートを使用しないため、失敗の原因でした。

ありがとう。


3

SQL Server 2014でローカルにインストールされた名前付きインスタンスで同じ問題が発生しました。を使用した接続FQDN\InstanceNameは失敗しますが、私のhostname\InstanceName作業のみを使用した接続は失敗します。例:接続は機能しmycomputername\sql2014ましたが、使用mycomputername.mydomain.org\sql2014は機能しませんでした。DNSは正しく解決され、TCP / IPはSQL構成マネージャー内で有効になり、Windowsファイアウォールルールが追加され(そして、ファイアウォールをオフにして、何もブロックされていないことを確認しました)、どれも問題を修正しませんでした。

最後に、SQL ServerでSQL Server Browser」サービスを開始する必要があり、接続の問題が修正されました。

SQL Server BrowserサービスがSQL Serverの接続を実際に支援していることに気づかなかった。「browse for more」サーバーをクリックして接続するときに、ドロップダウンに値を入力するのに役立つだけだという印象を受けましたが、実際には、ポート番号が明示的に割り当てられていない場合に、使用する正しいポート番号でクライアント要求を調整するのに役立ちます(同様のWebサイトバインディングが、複数のWebサイトをホストするIIS Webサーバーで同じ問題を軽減するのにどのように役立つかを説明します)。

この接続項目は、SQL Server Browserサービスについての手がかりを与えたものです:https : //connect.microsoft.com/SQLServer/feedback/details/589901/unable-to-connect-on-localhost-using-fqdn-machine-名前

  • サーバー名としてwstst05 \ sqlexpressを使用すると、クライアントコードはマシン名をインスタンス名から分離し、wstst05がnetbios名と比較されます。それらが一致しても問題はなく、接続はローカルと見なされます。そこから、我々は必要な情報を取得なし問題なく共有メモリを経由してSQLブラウザおよびSQLインスタンスに接続を連絡します。
  • wstst05.capatest.local \ sqlexpressを使用すると、クライアントコードは名前(wstst05.capatest.local)とnetbios名(wstst05)の比較に失敗し、接続を「リモート」と見なします。これは仕様によるものであり、将来的には改善することを検討します。いずれにせよ、リモート接続とそれが名前付きインスタンスであることを考慮すると、クライアントは名前解決にSQLBrowserを使用する必要があると判断します。wstst05.capatest.local(UDPポート1434)でSQLブラウザーに接続しようとしますが、明らかにその部分は失敗します。したがって、エラーが発生します。

TechNetの「SQL Server Browser」サービスの理由(強調は私が追加):https ://technet.microsoft.com/en-us/library/ms181087( v=sql.120 ) .aspx

「SQL Server Browserの使用」セクションから:

SQL Server Browserサービスが実行されていない場合でも、正しいポート番号または名前付きパイプを指定すれば、SQL Serverに接続できます。たとえば、ポート1433で実行されている場合は、TCP / IPを使用してSQL Serverの既定のインスタンスに接続できます。ただし、SQL Server Browserサービスが実行されていない場合、次の接続は機能しません

  • すべてのパラメーター(TCP / IPポートや名前付きパイプなど)を完全に指定せずに名前付きインスタンスに接続しようとするコンポーネント
  • 後で再接続するために他のコンポーネントが使用できるserver \ instance情報を生成または渡すコンポーネント。
  • ポート番号またはパイプを提供せずに名前付きインスタンスに接続する
  • TCP / IPポート1433を使用しない場合は、名前付きインスタンスまたはデフォルトインスタンスへのDAC。
  • OLAPリダイレクタサービス。
  • SQL Server Management Studio、Enterprise Manager、またはQuery Analyzerでのサーバーの列挙。

クライアントサーバーシナリオでSQL Serverを使用している場合(たとえば、アプリケーションがネットワーク経由でSQL Serverにアクセスしている場合)、SQL Server Browserサービスを停止または無効にすると、各インスタンスに特定のポート番号を割り当てて、常にそのポート番号を使用するようにクライアントアプリケーションコードを記述します。このアプローチには次の問題があります

  • クライアントアプリケーションコードを更新して維持し、適切なポートに接続していることを確認する必要があります。
  • インスタンスごとに選択したポートがサーバー上の別のサービスまたはアプリケーションによって使用されている可能性があり、SQL Serverのインスタンスが使用できなくなります。

また、「SQL Serverブラウザーのしくみ」セクションの同じ記事の詳細情報:

ので、SQL Serverののインスタンスは1つだけのポートまたはパイプを使用することができます、SQL Server Expressを含む名前付きインスタンスには、異なるポート番号とパイプ名が割り当てられています。既定では、有効にすると、名前付きインスタンスとSQL Server Expressの両方が動的ポートを使用するように構成されます。つまり、SQL Serverの起動時に使用可能なポートが割り当てられます。必要に応じて、SQL Serverのインスタンスに特定のポートを割り当てることができます。接続時に、クライアントは特定のポートを指定できます。ただし、ポートが動的に割り当てられる場合、SQL Serverが再起動されるたびにポート番号が変更される可能性があるため、クライアントは正しいポート番号を認識できません。... SQL ServerクライアントがSQL Serverリソースを要求すると、クライアントネットワークライブラリはポート1434を使用してサーバーにUDPメッセージを送信します。SQLServer Browserは、要求されたインスタンスのTCP / IPポートまたは名前付きパイプで応答します。


2

構成マネージャーを介してポートを追加し、SQL接続[ホスト] \ [dbインスタンス名]にポート番号を追加する必要がありました。1433

インスタンス名とポートの間の(コンマ)に注意してください


1

これまでに述べたすべての回答とは異なる問題がありました!

最初に、SQL Server ExpressではなくVisual Studioでそれを使用したと言いますが、ソリューションはまったく同じでなければなりません。

まあ、神様、それは実際には本当に簡単で、多分少しばかげています。データベースを作成しようとして、Visual StudioがSQL Serverの名前を提案したとき、それは私のWindowsユーザー名を与えてくれました。

実際には、私のWindowsユーザー名+ \SQLEXPRESSでした。設定を変更しなかった場合、これもおそらくあなたの設定です。動作する場合は、読み進めないでください。これが私の答えです。うまくいかない場合は、名前が異なる可能性があります。

私のように、Visual Studioでこの問題が発生しただけで、問題を確認するには、次の手順に従ってください。

  1. SQL Server Management Studio アイコンを開きます
  2. サーバーが表示されない場合(デフォルトでは左側にドッキングされています)、を押すF8か、[表示]-> [オブジェクトエクスプローラー]に移動します
  3. サーバーの名前を右クリックし、[ プロパティ](最後の項目)を選択します
  4. 左下の「サーバー」の下にサーバーの実際の名前が表示されます(接続ではなく、その上)。

これはサーバーの名前であり、これは接続を試みるべきものです!Visual Studioの提案ではありません!



1

私の場合、データベースは標準以外のポートで実行されていました。接続しているポートが、データベースが実行されているポートと同じであることを確認してください。SQLサーバーのインスタンスがさらにある場合は、正しいインスタンスを確認してください。


0

サーバーのファイアウォールで関連するポートを開くだけです。


6
残念ながら、それは「あなたがする必要があるすべて」ではありません。上記の承認された回答に概要が示されているように、実行する必要がある他の手順はかなり多くあります。
ソース

2
実際、私の場合、これは私がする必要があるすべてだったので、不当にマークダウンされ、実際に有用な入力でした。
MagicalArmchair 2013年

1
ルールをポート1433を開くように追加することで修正されました。
GiddyUpHorsey 2013年

「多くのものが一致している必要があり、あなたに必要な追加の手順はさまざまです」と言うのは公平だと思います
Mordachai

SQL 10を提供するWindows 10を入手する前に、キラレッサ、ピート、そしてこれもすべてやらなければなりませんでした。
alfadog67 2015年

0

SQL Serverへの接続に問題がありますか?

ファイアウォールを切断してみてください。

ファイアウォールを切断して接続できる場合、「sql service broker」などの入力ルールを見逃している可能性があります。この入力ルールをファイアウォールに追加します。

「SQL管理接続」TCPポート1434

「SQL管理接続」UDPポート1434

「SQL分析サービス」TCPポート2383

「SQL BROWSE分析サービス」TCPポート2382

「SQLデバッガ/ RPC」TCPポート135

"SQL SERVER" TCP PORT 1433および動的ポートがある場合はその他

「SQLサービスブローカー」TCPポート4022

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.