web-dev-qa-db-ja.com

Microsoft OLE DB Provider for SQLServerエラー '80004005'

従来のASPサイトを新しいサーバーに移行しましたが、次のエラーメッセージが表示されます。

さまざまな接続文字列を試しましたが、どれも機能しません。

接続文字列が問題かどうかさえわかりません

新しいサーバーは、Windows 2012 Server、SQL Server 2008 R2Expressマシンです。


Microsoft OLE DB Provider for SQL Server error '80004005'

[DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied.

/scripts/dbcode.asp, line 31 

Application("C2M_ConnectionString") = "Provider=SQLNCLI10;Server=(local);Database=mysite_live;Uid=mysitec_Live;Pwd=mypass;"
5
Burt

Expressインスタンスの場合、デフォルトインスタンスではなく、名前付きインスタンスである可能性があります。だからあなたはおそらく意味しました:

... "Provider=SQLNCLI10;Server=.\SQLEXPRESS; ...
--- instead of just (local) ---^^^^^^^^^^^^

それ以外の場合は、接続文字列を修正する方法を教えてもらうために、そのマシンのSQLServer構成マネージャーでサーバーのプロパティを表示する必要があります。

8
Aaron Bertrand

Aaron Bertrandが述べたように、接続プロパティを確認することは興味深いでしょう(SQL Server構成で、以下が有効になっている名前付きパイプとTCP/Ipを確認してください)。 SSMSから接続できるので、そのサーバーでリモート接続が許可されているかどうかを確認するように求められます。また、SQLブラウザーサービスが実行されているかどうかもわかりますか?

これは、SQLServerで発生する可能性のある接続の問題に関するリマインダーまたはチェックリストとして私が近くに置いているリンクです。 SQL接続の問題 最後に、「SQLNCLI10」ではなく「SQLNCLI」プロバイダーとして試すことができますか

3
Raymond A

これが私がすることです:

編集: this SO post 、少し下に、使用する正しい接続文字列を作成するための興味深い方法があることに注意してください。

  1. SSMS(Sql Server Management Studio)を開き、ユーザー名/パスワードをコピーして貼り付けます。それらを入力しないでください、コピー/貼り付けしてください。問題がないことを確認します。
  2. コードを起動し(これは私にとって次のことですが、私の場合はこれが次に簡単なことです)、31行目に進んですべてが正しくセットアップされていることを確認します。 ここにいくつかの情報があります これを行う方法について。これは本番環境であるため不可能な場合があることを理解しているため、この手順をスキップしてください。可能であれば、これをローカルマシンに設定し、ローカル接続に問題がないことを確認します。このエラーがローカルで発生した場合は、修正できる可能性が高くなります。
  3. Provider = SQLNCLI10が運用サーバーにインストールされていることを確認します。私は this SO post 、おそらくgbnによって投稿された答えです。
  4. 他に機能するWebサイトがありますか?それらのいずれかが古典的なaspですか?そうでない場合でも、別のサイトの接続文字列を、ここで使用している接続文字列と比較します。明らかな違いがないことを確認してください。
  5. SQL Server Profilerを起動し、トレースを開始します。サイトに接続してエラーを発生させてから、プロファイラーに移動して、追加のエラー情報が表示されるかどうかを確認してください。
  6. それがすべて失敗した場合、私は これを実行し始めます

申し訳ありませんが、何かを指して言うことはできません、問題があります!

幸運を!

2
Mike C.

権限の問題である可能性があります。サーバーがSQL管理からの同じ構成の詳細で接続していることを確認してください。その他はユーザー名/パスワードが間違っています。

2
Jinesh Jain

SQL Serverブラウザサービスは、インストール時にデフォルトで無効になっています。有効にして開始することをお勧めします。詳細については、 このリンク および「SQLServerブラウザーの使用」というタイトルのセクションで、これが問題になる理由の説明を参照してください。

サービスを有効にしたくない場合は、TCP/IPプロトコルを有効にし(デフォルトでは無効になっています)、静的ポート番号を指定し、127.0.01、<ポート番号>を使用してサーバーを識別できます。

2
Paul Keister

SQL Server OLE DBドライバー接続文字列を試したことがありますか?

"Provider=sqloledb;Data Source=(local);Initial Catalog=mysite_live;User Id=mysitec_Live;Password=mypass;"

またはODBCドライバー:

"Driver={SQL Server};Server=SERVERNAME;Trusted_Connection=no;Database=mysite_live;Uid=mysitec_Live;Pwd=mypass;"

少なくともこれは、何も役に立たない場合に私が行うことです。たぶん、もっと役立つエラー情報を得ることができるでしょう。

2
Slava

「(ローカル)」の代わりにサーバーIPアドレスを使用しようとしましたか? 「Server = 192.168.1.1;」のようなもの(明らかにサーバーの実際のIPアドレスを使用する必要があります)

サーバーのIPアドレスを使用する場合は、「SQL-Server configurator」をチェックインして、SQL Serverがリッスンしている接続で使用するIPアドレス。 ( SQL Server Configuratorスクリーンショット

チェック/試してみる他の便利なこと:

  • また、DBがデフォルトのSQL Serverインスタンスにあるかどうか、または名前付きインスタンスにあるかどうかも確認してください。
  • ファイアウォールにSQLServerのポートを開くためのTCP/IPルールがあるかどうかを確認しましたか?
  • 他のソフトウェアを使用してSQLServerに接続しようとしましたかTCP/IP接続を使用します
2
Max

31行目:

cmd.ActiveConnection = Application("C2M_ConnectionString")

cmdをどのようにインスタンス化していますか?

ConnectionStringが間違っているのではなく、新しい環境ではcmdの動作が異なる可能性があります。

追加するために編集:

IIS 7からIIS 8。クラシックを実行するにはASPサイトIIS「親パスを許可する」など、サーバーのデフォルトに7つの手動変更が必要です。必要な調整の一部が移行されなかった可能性はありますか?

Option Strict Onを使用していない場合は、それを試してみてください。多くの場合、このような微妙な問題の原因が明らかになります。 (もちろん、最初にすべての変数を宣言する必要があります。これは、完成したコードでは非常に面倒です。)

2
egrunin

接続文字列でサーバーにpingを実行してみてください。アプリケーションが存在するサーバーは、資格情報で指定したポートで通信できる必要があります。ローカルで開発している場合は、「localhost」を指定してみてください。サーバーがクラスター化されている場合、またはインスタンスとしてインストールした場合は、そのインスタンスを指定する必要があります。また、SQL資格情報を使用する場合は、サーバーが混合モード認証用に構成されていることを確認してください。

または試してみてください

データソース= localhost;初期カタログ= DBNAME;永続的なセキュリティ情報= True;ユーザーID = MyUserName; Password = MyPassword;

2
Ross Bush

手順-1:TCP/IPプロトコルの有効化開始>>すべてのプログラム>> Microsoft SQL Server >>構成ツール>> SQLServer構成マネージャー>> SQLServerネットワーク構成>> MSSQLSERVERのプロトコル>> [TCP/IP]を右クリックして「有効にする」を選択します。

手順2:データソース属性の値の特定のマシン名を(ローカル)に変更すると、SQL SERVER2012の問題が解決されます。

2
BALAJE

これはx86/x64のものでしょうか?

次のスレッドは、(local)エイリアスが失敗する32ビットエイリアスであることを示しているようです64ビットサーバーの場合: http://social.msdn.Microsoft.com/Forums/en-US/sqldataaccess/thread/c701d510-90e5-4dd0-b14f-ca1d694d6615 (エラーは正確にあなたが持っていたもの)

サーバーで.udlをテストしていたときに、x86とx64の両方をテストしましたか?

このブログ投稿からのアドバイスに従って( http://blogs.msdn.com/b/farukcelik/archive/2007/12/31/udl-test-on-a-64-bit-machine.aspx =)ローカルudlをテストできます:

  • 64ビットでダブルクリックするだけです( "C:\ Program Files\Common Files\System\Ole DB\oledb32.dll"、OpenDSLFile C:\\ test.udlを実行するのと同じように機能します
  • 32ビットでC:\ Windows\syswow64\rundll32.exe "C:\ Program Files(x86)\ Common Files\System\Ole DB\oledb32.dll"、OpenDSLFile C:\\ test.udlをダブル実行

エイリアスに問題があることが確認できた場合は、次のガイドラインに従って新しいエイリアスを作成することをお勧めします。 http://msdn.Microsoft.com/en-us/library/ms190445(v = sql.105).aspx

2
AardVark71