1

C#を使用してASP.netで基本的なログインモジュールを作成しました。私はこの目的のためにC#Webアプリケーションを使用しています。

以前は、SQL Server2008Expressをデータベースとして使用していました。その時、アプリケーションは正常に実行されていました。

しかし、そのデータベースをアンインストールして、SQL Server2008R2をインストールしました。

その時点から、エラーが発生します。

SQL Serverへの接続の確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、およびSQLServerがリモート接続を許可するように構成されていることを確認してください。(プロバイダー:SQLネットワークインターフェイス、エラー:25-接続文字列が無効です)

config.xml私は次のようなコードを持っていることを発見しました:

<connectionStrings>
    <add name="ApplicationServices"
         connectionString="data source=.\SQLEXPRESS ;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />
  </connectionStrings>

ここで、私のSQLServerはと呼ばれMSSQLSERVERます。

この接続文字列が問題である必要があります。しかし、私はこの問題を解決することができません。

私の結論は正しいですか、そして私はいくつかの助けを得ることができますか?

PS:SQL Server2008R2が正しくインストールされています。

しかし、SQL Server 2008 R2に接続しようとすると、アンインストールされますが同じ名前の2008に接続します。(以前とこのサーバーの両方が同じ名前、つまり私のコンピューター名を持っています。)

4

3 に答える 3

3

ほとんどの場合、SQL Server 2008 Express バージョンがSQLEXPRESSインスタンスとしてインストールされているため、接続文字列は次のようになります。

server=.\SQLEXPRESS;database=.........

.またはそのようなもの( 「ローカルコンピューター」を表すのではなく、マシン名があった可能性があります)。

新しい SQL Server 2008 R2 インスタンスは、インストール方法に応じて異なるインスタンス名にする必要があります。既定のインスタンスを使用した場合、インスタンスには特定の名前がなく、接続文字列は次のようになります。

server=.;database=.........
server=(local);database=.........
server=YourMachineName;database=.........

特定のインスタンス名を使用して SQL Server 2008 R2 をインストールした場合 (これは知っておく必要があります。私たちが知ることはできません....)、接続文字列でそのインスタンス名を使用します。

server=.\INSTANCENAME;database=.........
server=(local)\INSTANCENAME;database=.........
server=YourMachineName\INSTANCENAME;database=.........

更新:AHA!! あなたの問題があります!

ユーザー インスタンス ログイン フラグは、このバージョンの SQL Server ではサポートされていません。

接続文字列には次が含まれます。

.....;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
      ****************************************************************

この「機能」(私はそれを欠陥と呼びたい) は、SQL Server の Express エディションでのみ利用できます。

そのため、フルバージョンの SQL Server にアップグレードしたら、次のことを行う必要があります。

  • データベースをサーバーに接続します
  • 接続して、論理名を使用して使用します (ファイル名を指定しません)。.mdf

ASPNETDB.MDFファイルを SQL Server 2008 R2 インスタンスにアタッチしたら、接続文字列を次のように変更します。

data source=.;database=ASPNETDB;Integrated Security=SSPI;

(またはGIS、データソース/サーバー名として使用する可能性があります)、それで問題ありません。

于 2012-10-16T08:05:56.670 に答える
0

「.\SQLEXPRESS MSSQLSERVER」はデータ ソースではないと思います。「.\SQLEXPRESS」だけかもしれません。

于 2012-10-16T07:36:11.970 に答える
0

次の接続文字列を使用しました。

<connectionStrings>
    <add name="ApplicationServices"
         connectionString="Server=EGT-GIS;Integrated Security=True;Database=C:\inetpub\wwwroot\AddMarker\Map\Map\App_Data\ASPNETDB.MDF; Asynchronous Processing=False;" />
  </connectionStrings>

そしてそれは働いた!!!

しかし、1 つの懸念事項として、この接続はログイン データベースに対して安全でしょうか?

接続文字列から接続文字列のヘルプを取得し、Marc_s に感謝します

于 2012-10-17T04:47:04.293 に答える