1

VS 2008を使用してc#webappでASP.netを作成しており、プロジェクトに新しいSQLデータベースアイテムを追加しました。データベースにテーブルを追加しました。データベースエクスプローラーでは、テスト接続が機能します。2つの質問があると思います。1つ:アプリケーションでは、接続文字列を使用してデータベースにどのように接続しますか?または、どの接続文字列を使用する必要がありますか?2番目:データベースにユーザー名とパスワードを追加するにはどうすればよいですか?

現在、web.configファイルでこの接続文字列を使用していますが、アプリを実行するとタイムアウトになり、接続できないと表示されます。エラーはconn.open行にあります。

add name="ReportsConnectionString" connectionString="Data Source=(local); Initial     Catalog=REPORTS;Integrated Security=True" providerName="System.Data.SqlClient"

このコードは、私のページのコードビハインドの1つにあります。

string sqlquery = "SELECT * FROM reportitems";
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ReportsConnectionString"].ConnectionString))
    {
        conn.Open();
        using (SqlCommand comm = new SqlCommand(sqlquery, conn))
        {
            using (SqlDataAdapter adapter = new SqlDataAdapter(comm))
            {
                DataSet ds = new DataSet();
                adapter.Fill(ds, "reportitems");
                DataRowCollection dra = ds.Tables["reportitems"].Rows;

                foreach (DataRow dr in dra)
                {
                    string DRZ = dr[0].ToString();
                     //more stuff here
                 }
            }
         }
     }
4

4 に答える 4

3

通常、SQLServer Expressは、データソースパラメータにこの構文を使用してローカルPCで到達可能yourpcname\SQLEXPRESSです。必ずManagementStudioを起動し、サーバー名の要求を確認してください。

質問のセキュリティの部分については、統合セキュリティオプション(Windowsユーザー)は必要ないが、SQLServerユーザーは必要だと思います。この場合、接続文字列にUser IDPasswordパラメータを使用できます。

Data Source=MYPC\SQLEXPRESS;Initial Catalog=REPORTS;User Id=MYNAME;Password=MYPASS;

ただし、これは、このユーザーをSQLServerに追加した後でのみ機能します。Management Studioアプリのインターフェイスを使用するか、次のようなスクリプトを実行できます

USE [master]
GO
CREATE LOGIN [MYNAME] WITH PASSWORD=N'MYPASS', DEFAULT_DATABASE=[master]
GO
USE [REPORTS]
GO
CREATE USER [MYNAME] FOR LOGIN [MYNAME]
GO
于 2012-05-30T21:54:20.790 に答える
1

さまざまなアプリケーションの接続文字列を設定するさまざまな方法の優れた入門書については、http://www.connectionstrings.com/にアクセスしてください。これにより、(ローカル)が機能しなかった理由と、。\ SQLEXPRESSが機能した理由、およびユーザー名とパスワードを追加する方法がわかります。これはhttp://www.connectionstrings.com/sql-server-2008から持ち上げられた例です

データソース=myServerAddress;初期カタログ=myDataBase;ユーザーID=myUsername; Password = myPassword;

于 2012-05-30T21:54:36.747 に答える
1

接続文字列のIntegrated Security=True一部は、サーバーがサイトを実行しているアプリプールのクレデンシャルを使用することを意味し、ユーザー名やパスワードを指定する必要はありません。ただし、アプリプールIDには、データベースへのアクセス権が必要です。

于 2012-05-30T21:51:58.547 に答える
1

他の人が言っているように、.mdfはフラットファイルではないため、SqlExpressエンジンを実行する必要があります。これはSQLServerExpressデータベースファイルであり、接続する必要があります。

しかし、まだ言っていないのは、App_Dataフォルダー内のデータベースをSqlServerインスタンスに接続する必要があるということです。この手順は、最初の接続で1回だけ実行されます。

http://www.connectionstrings.com/sql-server-2008の「ローカルSQLServerExpressインスタンスへの接続時に、データディレクトリにあるデータベースファイルを添付する」セクションに、次のような例があります。 :

Server=.\SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;

また、これを読むことができます:http: //msdn.microsoft.com/en-us/library/ms247257.aspx

このデータベースでユーザーを作成し、このユーザーにアクセス許可を割り当てるには、いくつかのスクリプトなどを実行する必要があると思います。次に、接続文字列を変更します(データベースが接続されたら)。 App_Dataフォルダーにデータベースがあります。最初から、SqlServerツールを使用してデータベースを作成し、アプリケーションからデータベースに接続する方がよいと思います。

于 2012-05-30T22:18:21.793 に答える