5

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

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

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

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


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;"
4

11 に答える 11

8

Express インスタンスの場合、デフォルト インスタンスではなく、名前付きインスタンスである可能性が高くなります。つまり、おそらく次のことを意味していました。

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

それ以外の場合は、接続文字列の修正方法をお知らせできるように、そのマシンの SQL Server 構成マネージャーでサーバー プロパティを表示する必要があります。

于 2013-02-28T03:27:03.680 に答える
3

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

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

于 2013-03-04T23:02:38.007 に答える
2

31行目:

cmd.ActiveConnection = Application("C2M_ConnectionString")

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

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

追加するために編集:

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

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

于 2013-03-05T23:53:29.573 に答える
2

SQL Server Browser サービスは、インストール時に既定で無効になっています。有効にして起動することをお勧めします。詳細については、このリンクと「SQL Server Browser の使用」というタイトルのセクションを参照して、これが問題になる理由を説明してください。

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

于 2013-03-10T16:41:24.993 に答える
2

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

サーバーの IP アドレスを使用しようとする場合は、接続で使用するIP アドレスでSQL Server がリッスンしていることを「 SQL サーバー コンフィギュレーター」で確認してください。( SQL Server Configurator のスクリーンショット)

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

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

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;"

少なくともこれは、何も役に立たない場合に私がすることです。おそらく、より有用なエラー情報を取得できるでしょう。

于 2013-03-08T00:23:41.937 に答える
2

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

于 2013-02-28T12:00:05.300 に答える
2

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

または試す

データ ソース=localhost;初期カタログ=DBNAME;永続セキュリティ情報=True;ユーザー ID=MyUserName; パスワード=マイパスワード;

于 2013-02-28T03:00:56.380 に答える
2

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

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

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

申し訳ありませんが、何かを指して、問題があるとは言えません。

幸運を!

于 2013-03-05T14:08:42.023 に答える
2

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

次のスレッドは、(ローカル)エイリアスが 64 ビット サーバーで失敗する 32 ビット エイリアスであることを示しているようです: 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を実行するのと同じように機能します
  • C:\Windows\syswow64\rundll32.exe "C:\Program Files (x86)\Common Files\System\Ole DB\oledb32.dll",OpenDSLFile C:\\test.udl をダブル実行して 32 ビットで

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

于 2013-03-08T14:27:39.377 に答える
2

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

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

于 2014-09-28T16:31:54.113 に答える