web-dev-qa-db-ja.com

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

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

これが起こっていることです。 Microsoft SQL Server Express 2005を実行しているMYSERVERと呼んでいるサーバーがあります。このサーバー自体で、ODBC接続がセットアップされています自分自身を指すと、それは既に完全に機能しています。SQLServer認証(Windows認証ではない)を使用してログインし、次のように設定します。

Image of good ODBC connection

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

Image of bad ODBC connection

これは機能しません。ユーザー名とパスワードを入力して[次へ]を押すと、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接続が正しく設定されていることができることを知っています。これらのエラーをスローしている接続設定で何が間違っているのかわからないつまり、インスタンス名とともにIPを指定するには、いくつかの異なる構文を使用する必要があるだけですか?どうすればよいですか?よろしくお願いします。

30
soapergem

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

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

18
Hakan Winther

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

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

5
Sim

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

servername\instancename,portnumber

4
Mufasa

私はこれと同じ問題を抱えており、SQLドライバーをSQL Native Clientドライバーに変更することで解決できました。私の場合、これは何年もうまく機能していて、その後機能しなくなったため、これは奇妙でした。これは、ドライバが壊れているのに沿ったものだと思います。おそらくMDACの再インストールが役立つ可能性がありますが、当分の間、それがまったく機能していて嬉しいです!

2
Mark Ribbans

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

1
thursdaysgeek

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

1
aNullValue

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

1
Sam

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

0

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

0
John Gardeniers

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

0
dsteele

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

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

それからそれは働き始めました。クライアントOS:Win7 x64ドライバー:sqlsrv32.dll

0
Mert Gülsoy