asp.net не может открыть вход в базу данных

Я использую следующее для извлечения данных из базы данных, но SqlConnection не открывается. Выдает ошибку scon.Open(). Я уверен, что это элементарно, но я не могу решить это.

protected void Page_Load(object sender, EventArgs e) {   
    SqlConnection scon = new SqlConnection("Data Source = .\\SQLEXPRESS; Database = populate.mdf; Integrated Security = true; Initial Catalog = populate");   

    StringBuilder htmlString = new StringBuilder(); 

    if(!IsPostBack)
    {
        using (SqlCommand scmd = new SqlCommand())
        {
            scmd.Connection = scon;
            scmd.CommandType = CommandType.Text;
            scmd.CommandText = "SELECT * FROM populate";

            scon.Open();

            SqlDataReader articleReader = scmd.ExecuteReader();

            htmlString.Append("'Populate page:'");                

            if (articleReader.HasRows)
            {
                while (articleReader.Read())
                {
                    htmlString.Append(articleReader["dateTime"]);
                    htmlString.Append(articleReader["firstName"]);
                    htmlString.Append(articleReader["lastName"]);
                    htmlString.Append(articleReader["address"]);
                    htmlString.Append(articleReader["details"]);
                }

                populatePlaceHolder.Controls.Add(new Literal { Text = htmlString.ToString() });
                articleReader.Close();
                articleReader.Dispose();
            }
        }
    }
}

Я использую эту ссылку https://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx в качестве одной из моих ссылок. Я также использую SQL Server 2008 R2 Express, если эта информация поможет.

Вот часть сообщения об ошибке:

SqlException (0x80131904): не удается открыть базу данных «заполнить», запрошенную при входе в систему. Вход не выполнен.

Любая помощь будет принята с благодарностью.


person matt2605    schedule 12.07.2015    source источник
comment
Скорее всего, пользователь, под которым работает веб-сайт, не имеет доступа к базе данных. Вы используете IIS или IIS Express?   -  person Brendan Green    schedule 12.07.2015
comment
@BrendanGreen: IIS Express. Когда я комментирую приведенный выше код, мой GridView отображает те же данные через SqlDataSource.   -  person matt2605    schedule 12.07.2015
comment
Я все еще не уверен: ваша база данных называется populate, а таблица, с которой вы работаете в этой базе данных, также называется populate ?? Кажется странным..... какие базы данных вы видите, если подключаетесь к своему экземпляру .\SQLEXPRESS с помощью Management Studio? В SQL Server база данных содержит несколько таблиц, поэтому они обычно не называются одинаково!   -  person marc_s    schedule 12.07.2015
comment
@marc_s: Правильно, база данных называется populate.mdf, и таблица также называется «заполнить». Мой проект завершится несколькими базами данных, если не сотнями, так что на данный момент это вопрос тестирования способов методичного именования всего. В Management Studio отображаются только файлы .dbo, но теперь я знаю, как получить файлы .mdf. Почему вы спрашиваете?   -  person matt2605    schedule 12.07.2015
comment
Вы можете попытаться прикрепить populate.mdf к своему серверу — используйте Object Explorer -> Базы данных -> Прикрепить, чтобы прикрепить .mdf — вы не можете просто открыть его, вам нужно использовать Прикрепить метод. Как только он будет подключен к серверу - затем (и только тогда) вы сможете подключиться к нему, используя ту строку подключения, которую вы пытались   -  person marc_s    schedule 12.07.2015
comment
@marc_s: Странно, я уже подключил его к Management Studio, как упоминал выше, но он все равно не открывается с той же ошибкой, что и оригинал. Я думаю, что я потратил на это достаточно времени с небольшим прогрессом, поэтому я позову эксперта, который сделает это за меня. В любом случае, это было интересно. Для получения дополнительной информации: если я закомментирую этот код, я получу те же данные, которые я хочу отображать в GridView, используя SqlDataSource, но не беспокойтесь об этом сейчас. Я вызову программиста-консультанта. Спасибо за помощь.   -  person matt2605    schedule 12.07.2015
comment
@marc_s: Весь код был правильным. Базе данных просто нужно было подключиться в Management Studio. Мне пришлось вручную обновить базу данных при подключении к MS, иначе она все равно выдавала ошибку.   -  person matt2605    schedule 13.07.2015


Ответы (2)


Цитата из https://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx#sse, если вы хотите использовать файл .mdf в качестве базы данных, вы должны использовать следующую строку подключения, содержащую AttacheDbFileName< /сильный>.

<add name="ConnectionStringName"
    providerName="System.Data.SqlClient"
    connectionString="Data Source=.\SQLEXPRESS;AttachDbFileName=|DataDirectory|\DatabaseFileName.mdf;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True" />
person HarryQuake    schedule 12.07.2015
comment
Спасибо, я пробовал и получаю эту ошибку, которая снова указывает непосредственно на базу данных: ‹‹‹SqlException (0x80131904): невозможно открыть физический файл [мой каталог]\App_Data\populate.mdf. Ошибка операционной системы 32: 32(не удалось получить текст для этой ошибки. Причина: 15105)››› - person matt2605; 12.07.2015
comment
См. также stackoverflow.com/questions/6347312/ для попытки - person HarryQuake; 12.07.2015
comment
Спасибо, большое усилие. Я пробовал много разных тактик, но это не сработало. Я не смог попробовать сбросить свойства|безопасность|Аутентифицировать пользователей|Редактировать|Разрешить|Полный доступ|ОК. Кажется, у меня нет нужных свойств свойств. - person matt2605; 12.07.2015

Я решил это. Вся строка подключения и другой код были правильными. Базе данных просто нужно было подключиться к Management Studio с дополнительным вниманием.

person matt2605    schedule 13.07.2015