注:サーバー名とIPを明らかに架空のものに変更しました。
これが起こっていることです。 Microsoft SQL Server Express 2005を実行しているMYSERVER
と呼んでいるサーバーがあります。このサーバー自体で、ODBC接続がセットアップされています自分自身を指すと、それは既に完全に機能しています。SQLServer認証(Windows認証ではない)を使用してログインし、次のように設定します。
私が言ったように、それはうまくいきます。しかし、次に、MYSERVERでホストされているこの同じSQL Serverにアクセスする必要がある、イントラネット上ではなく、まったく異なるドメイン上にある別のコンピューターがあります。別のドメインにあるため、「MYSERVER」という名前は認識されません。 MYSERVERのIPアドレス(123.456.789.012)をポイントする必要があります。しかし、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接続が正しく設定されていることができることを知っています。これらのエラーをスローしている接続設定で何が間違っているのかわからないつまり、インスタンス名とともにIPを指定するには、いくつかの異なる構文を使用する必要があるだけですか?どうすればよいですか?よろしくお願いします。
SQL Server 2005の名前付きパイプとTCIPプロトコルは、デフォルトでは無効になっています。 「SQLサーバー構成マネージャー」でそれらを有効にしましたか?プロトコルは、SQL Serverネットワーク構成およびSQL Native client xx構成にあります。
サーバー自体の接続は、「共有メモリ」プロトコルのおかげで機能します。
SQL Server Browserサービスを有効にしましたか SQL Server 2005を構成してリモート接続を許可する方法 ?:
インスタンス名を使用してSQL Server 2005を実行していて、接続文字列で特定のTCP/IPポート番号を使用していない場合は、SQL Server Browserサービスを有効にして、リモート接続を許可する必要があります。たとえば、SQL Server 2005 Expressは、デフォルトのインスタンス名ComputerName\SQLEXPRESSでインストールされます。
このスレッド Accessを使用してMSSQL 2008サーバーに接続するときに表示される同じエラーメッセージを修正しました。 MSSQL 2005以前は、接続文字列でコンピューター名を使用するだけで問題なく動作しましたが、インスタンスを2008にアップグレードしたときに、Accessの接続文字列を完全な形式に変更する必要がありました。
servername\instancename,portnumber
私はこれと同じ問題を抱えており、SQLドライバーをSQL Native Clientドライバーに変更することで解決できました。私の場合、これは何年もうまく機能していて、その後機能しなくなったため、これは奇妙でした。これは、ドライバが壊れているのに沿ったものだと思います。おそらくMDACの再インストールが役立つ可能性がありますが、当分の間、それがまったく機能していて嬉しいです!
完全修飾されている場合、サーバー名を認識しますか? MYSERVER.domain.comの場合別のドメインから接続するときは、SQL Serverでそれを行わなければなりませんでした。データソースをテストするときにODBCシステムDSNに接続できる場合は、進行中です。接続できない場合はODBCセットアップ、それを最初に修正する必要があります。
機能するTCP接続で名前付きパイプまたはODBCを使用していますか? TCPは有効になっていますか?
SQLサーバーでリモートTCP接続が有効になっていることを確認してください。
私もこの問題を抱えていて、それはこれと同じくらい簡単でした。このサーバーのプライマリDNSサーバーとしてリストされているサーバーが削除され、アプリがネットワーク上のSQLサーバーの名前を正しく解決できなくなりました。ローカルDNSサーバーを機能しているサーバーに修正すると、すぐにすべてが再び機能し始めました。
ここではワイルドショットですが、サーバー名またはIPアドレスの前に二重のバックスラッシュを置くとどうなりますか?他のほとんどのWindows/Microsoft接続には通常必要なようです。
それだけの価値があるので、以前は機能していた接続でこのエラーが発生し始めました。 MSSQL $ SQLEXPRESSサービスが何らかの理由で停止したことが判明しました。再起動すると問題が解決しました。
同様の問題がありました。私の場合、別のswがODBC設定を構成するので、ドライバーを変更できません。私は次のように私のケースを解決しました:
それからそれは働き始めました。クライアントOS:Win7 x64ドライバー:sqlsrv32.dll