従来の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;"
Expressインスタンスの場合、デフォルトインスタンスではなく、名前付きインスタンスである可能性があります。だからあなたはおそらく意味しました:
... "Provider=SQLNCLI10;Server=.\SQLEXPRESS; ...
--- instead of just (local) ---^^^^^^^^^^^^
それ以外の場合は、接続文字列を修正する方法を教えてもらうために、そのマシンのSQLServer構成マネージャーでサーバーのプロパティを表示する必要があります。
Aaron Bertrandが述べたように、接続プロパティを確認することは興味深いでしょう(SQL Server構成で、以下が有効になっている名前付きパイプとTCP/Ipを確認してください)。 SSMSから接続できるので、そのサーバーでリモート接続が許可されているかどうかを確認するように求められます。また、SQLブラウザーサービスが実行されているかどうかもわかりますか?
これは、SQLServerで発生する可能性のある接続の問題に関するリマインダーまたはチェックリストとして私が近くに置いているリンクです。 SQL接続の問題 最後に、「SQLNCLI10」ではなく「SQLNCLI」プロバイダーとして試すことができますか
これが私がすることです:
編集: this SO post 、少し下に、使用する正しい接続文字列を作成するための興味深い方法があることに注意してください。
申し訳ありませんが、何かを指して言うことはできません、問題があります!
幸運を!
権限の問題である可能性があります。サーバーがSQL管理からの同じ構成の詳細で接続していることを確認してください。その他はユーザー名/パスワードが間違っています。
SQL Serverブラウザサービスは、インストール時にデフォルトで無効になっています。有効にして開始することをお勧めします。詳細については、 このリンク および「SQLServerブラウザーの使用」というタイトルのセクションで、これが問題になる理由の説明を参照してください。
サービスを有効にしたくない場合は、TCP/IPプロトコルを有効にし(デフォルトでは無効になっています)、静的ポート番号を指定し、127.0.01、<ポート番号>を使用してサーバーを識別できます。
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;"
少なくともこれは、何も役に立たない場合に私が行うことです。たぶん、もっと役立つエラー情報を得ることができるでしょう。
「(ローカル)」の代わりにサーバーIPアドレスを使用しようとしましたか? 「Server = 192.168.1.1;」のようなもの(明らかにサーバーの実際のIPアドレスを使用する必要があります)
サーバーのIPアドレスを使用する場合は、「SQL-Server configurator」をチェックインして、SQL Serverがリッスンしている接続で使用するIPアドレス。 ( SQL Server Configuratorスクリーンショット )
チェック/試してみる他の便利なこと:
31行目:
cmd.ActiveConnection = Application("C2M_ConnectionString")
cmd
をどのようにインスタンス化していますか?
ConnectionStringが間違っているのではなく、新しい環境ではcmd
の動作が異なる可能性があります。
追加するために編集:
IIS 7からIIS 8。クラシックを実行するにはASPサイトIIS「親パスを許可する」など、サーバーのデフォルトに7つの手動変更が必要です。必要な調整の一部が移行されなかった可能性はありますか?
Option Strict Onを使用していない場合は、それを試してみてください。多くの場合、このような微妙な問題の原因が明らかになります。 (もちろん、最初にすべての変数を宣言する必要があります。これは、完成したコードでは非常に面倒です。)
接続文字列でサーバーにpingを実行してみてください。アプリケーションが存在するサーバーは、資格情報で指定したポートで通信できる必要があります。ローカルで開発している場合は、「localhost」を指定してみてください。サーバーがクラスター化されている場合、またはインスタンスとしてインストールした場合は、そのインスタンスを指定する必要があります。また、SQL資格情報を使用する場合は、サーバーが混合モード認証用に構成されていることを確認してください。
または試してみてください
データソース= localhost;初期カタログ= DBNAME;永続的なセキュリティ情報= True;ユーザーID = MyUserName; Password = MyPassword;
手順-1:TCP/IPプロトコルの有効化開始>>すべてのプログラム>> Microsoft SQL Server >>構成ツール>> SQLServer構成マネージャー>> SQLServerネットワーク構成>> MSSQLSERVERのプロトコル>> [TCP/IP]を右クリックして「有効にする」を選択します。
手順2:データソース属性の値の特定のマシン名を(ローカル)に変更すると、SQL SERVER2012の問題が解決されます。
これは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をテストできます:
エイリアスに問題があることが確認できた場合は、次のガイドラインに従って新しいエイリアスを作成することをお勧めします。 http://msdn.Microsoft.com/en-us/library/ms190445(v = sql.105).aspx