このSQL Server ODBC接続を機能させるにはどうすればよいですか?


30

注:サーバー名とIPを架空のものに変更しました。

これが何が起こっているかです。MYSERVERMicrosoft SQL Server Express 2005を実行しているサーバーを持っています。このサーバー自体で、ODBC接続が自分自身を指すようにセットアップされており、すでに完全に機能しています。Windows認証ではなくSQL Server認証を使用してログインすると、次のようにセットアップされます。

良好なODBC接続の画像

私が言ったように、それは動作します。しかし、次に、イントラネット上ではなく、まったく異なるドメインにある別のコンピューターがあり、MYSERVERでホストされているこの同じSQL Serverにアクセスする必要があります。別のドメインにあるため、「MYSERVER」という名前を認識しません。MYSERVERのIPアドレスを指す必要があります。これは123.456.789.012と言います。しかし、ODBC接続はそこでは機能していないようです。私はこのように設定しようとしました:

不正なODBC接続の画像

これは機能しません。ユーザー名とパスワードを入力して[次へ]を押すと、10〜20秒間停止し、最終的に次のエラーが表示されます。

Connection failed:
SQLState: '01000'
SQL Server Error: 1326
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).
Connection failed:
SQLState: '08001'
SQL Server Error: 17
[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied.

同じことを試みても、「サーバー」を123.456.789.012\SQLEXPRESS単純に古いものに変更すると123.456.789.012、別のエラーが発生します。

Connection failed:
SQLState: '01000'
SQL Server Error: 14
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Invalid Instance()).
Connection failed:
SQLState: '08001'
SQL Server Error: 14
[Microsoft][ODBC SQL Server Driver][DBNETLIB]Invalid connection.

今、私はあなたが考えていることを知っています。「おそらく、ポート1433のファイアウォールをダミーで開いていないのではないか」と考えているかもしれません。私がやったことを除いて、私は正常に実行できるので、これを検証しました:

telnet 123.456.789.012 1433

...コマンドラインから必要なものすべて。だから私は何をすべきかわからない。SQL Serverが存在し、機能し、ODBC接続適切にセットアップできることを知っています。これらのエラーをスローしている接続設定が間違っているのかどうかはわかりません。私がリストした後者のエラーに基づいて、サーバーに接続できるように見えますが、インスタンスを見つけることができません(そのときに1つ指定しなかったため)。つまり、インスタンス名とともにIPを指定するために、いくつかの異なる構文を使用するだけでよいということですか?私は何をしますか?前もって感謝します。

回答:


18

SQL Server 2005の名前付きパイプとTCIPプロトコルは、デフォルトで無効になっています。「SQLサーバー構成マネージャー」でそれらを有効にしましたか?プロトコルは、SQL Serverネットワーク構成およびSQL Native client xx構成で見つけることができます。

サーバー自体の接続は、「共有メモリ」プロトコルのおかげで機能します。


9
正しい道に進んだので、あなたの答えを受け入れます。SQL Server構成マネージャーでは、「SQL Server 2005ネットワーク構成> SQLEXPRESSのプロトコル」および「SQLネイティブクライアント構成>クライアントプロトコル」でTCP / IPが既に有効になっています。名前付きパイプは、後者で既に有効になっています。前者で有効にしましたが、それは役に立たなかったようです(同じエラーメッセージ)。最後に、「SQL Server」ドライバーの代わりに「SQL Native Client」ドライバーを使用するようにODBCソースを切り替えたところ、最終的にDIDが機能しました。
soapergem

SoaperGEMに感謝します!SQL Native Clientを試したとは思いもしませんでした!魅力のように働いた!
フィリップセン

5

リモート接続を許可するようにSQL Server 2005を構成する方法に従って、SQL Server Browserサービスを有効にしましたか?:

インスタンス名を使用してSQL Server 2005を実行しており、接続文字列で特定のTCP / IPポート番号を使用していない場合は、SQL Server Browserサービスを有効にしてリモート接続を許可する必要があります。たとえば、SQL Server 2005 Expressは、Computer Name \ SQLEXPRESSのデフォルトのインスタンス名でインストールされます。


ローカルのサーバー\インスタンスへの接続は、リモートとは異なるメカニズムを使用していますか?
サム、

@Samは、Hakan Wintherの回答をご覧ください。
シム

4

このスレッドは、Accessを使用してMSSQL 2008サーバーに接続するときの同じエラーメッセージを修正しました。MSSQL 2005以前は、接続文字列にコンピューター名を使用するだけで正常に機能しましたが、インスタンスを2008にアップグレードしたときに、Accessの接続文字列を完全な形式に変更する必要がありました。

servername\instancename,portnumber


2
ポート番号が必要なかったことを除いて、それは私のためにそれをしました。
bgmCoder

2

これと同じ問題があり、SQLドライバーをSQL Native Clientドライバーに変更することで解決できました。私の場合、これは何年も正常に機能していましたが、その後動作を停止したため、これは奇妙でした。これはドライバーの破損に沿ったものであると思われます。おそらくMDACの再インストールが役立つかもしれませんが、当分の間、それがまったく機能していることを嬉しく思います!


1

完全修飾されている場合、サーバー名を認識しますか?MYSERVER.domain.comの場合 別のドメインから接続する場合は、SQL Serverでそれを行う必要がありました。データソースをテストするときに、ODBCシステムDSNを接続して接続できるようになれば、進歩しています。ODBCセットアップで接続しない場合は、最初に修正する必要があります。


それがまさに私がやろうとしていることです。つまり、データソースをテストするときに、最初にODBCシステムDSNを接続させます。だから私は、あなたの提案を試みたの両方をしようとMYSERVER.domain.com\SQLEXPRESSしてMYSERVER.domain.comますが、それらの両方は、私が、それぞれ、上記と同じエラーを与えました。
soapergem

他のコンピューターのコマンドプロンプトで「nslookup MYSERVER.domain.com」と入力します-これは正しいIPアドレス(123.456.789.012)に解決されますか、それともまったく解決しますか?
シム

@Sim-はい、そのコマンド適切に解決します。
soapergem

1

動作するODBC接続で名前付きパイプまたはTCPを使用していますか?TCPは有効になっていますか?


1

SQLサーバーでリモートtcp connectiosが有効になっていることを確認してください。


0

ここではワイルドショットですが、サーバー名またはIPアドレスの前に二重のバックスラッシュを置くとどうなりますか?他のほとんどのWindows / Microsoft接続には通常必要であるように思えます。


二重バックスラッシュを試すと、同じ1326エラー(最初にリストしたエラー)が発生します。
soapergem

0

同様の問題がありました。私の場合、別のswがODBC設定を構成するため、ドライバーを変更できません。私はこのように私のケースを解決しました:

  1. ポート1433を使用するようにサーバーのTCP / IP設定を設定します
  2. クライアントで、次のようなサーバーアドレスを入力します。192.168.1.5,1433(インスタンス名なし)

その後、動作し始めました。クライアントOS:Win7 x64ドライバー:sqlsrv32.dll


0

価値のあることのために、以前は機能していた接続でこのエラーが発生し始めました。MSSQL $ SQLEXPRESSサービスが何らかの形で停止したことが判明しました。再起動すると問題は解決しました。


0

私もこの問題を抱えていましたが、それはこれと同じくらい簡単でした:このサーバーのプライマリDNSサーバーとしてリストされているサーバーが削除され、アプリはネットワーク上のSQLサーバーの名前を正しく解決できなくなりました。ローカルDNSサーバーを機能するサーバーに修正すると、すべてがすぐに機能し始めました。

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