VWD2005 включает SQL Server 2005 Express Edition, бесплатную версию SQL Server 2005, предназначенную для непрофессиональных разработчиков или разработчиков-энтузиастов, которые хотят создавать приложения с помощью простого решения для работы с базами данных. Поскольку SQL Server Express поддерживает полную модель программирования SQL Server, такую как SQLCLR, T-SQL, хранимые процедуры, представления, триггеры и типы данных XML, вы можете использовать SQL Server Express, чтобы узнать об этих технологиях и убедиться, что ваши приложения могут работать. На платформах более высокого уровня (например, SQL Server Enterprise Edition). SQL Server Express легко загрузить и установить (он занимает менее 36 МБ) и входит в состав Visual Studio 2005 и Visual Web Developer 2005.
Visual Studio включает инструменты для управления базами данных, такие как Database Explorer и Query Builder, которые можно использовать для управления базами данных SQL Server Express. Visual Studio также поддерживает новую файловую базу данных для создания баз данных SQL Server Express в рамках проекта. В то же время Visual Studio 2005 и SQL Server 2005 Express предоставляют комплексное решение для создания и развертывания веб-приложений, управляемых данными, включая следующие функции:
· Элементы данных проекта базы данных
· Локальное подключение к базе данных
· Управление браузером базы данных
· Относительный путь подключения Строки
· Поддержка развертывания XCopy
· Встроенная поддержка отладки
В этой статье описывается подход к базе данных на основе файлов в Visual Studio 2005 и то, как разработчик создает и использует эти базы данных.
Visual Web Developer и DataVisual
Web Developer предоставляют ряд инструментов для использования баз данных с веб-приложениями. Вы можете использовать Обозреватель базы данных, чтобы легко подключиться к базе данных и создать или просмотреть диаграмму или схему базы данных. Вы также можете использовать диалоговое окно построителя запросов и таблицу результатов запроса для запроса базы данных и заполнения данных. Создание новых баз данных (с использованием локальных файлов) также предусмотрено в качестве элементов данных проекта.
После подключения к базе данных в Visual Web Developer вы можете перетащить таблицы базы данных прямо на страницу, чтобы создать элемент управления GridView с привязкой к данным. Visual Web Developer автоматически создает связанный элемент управления источником данных и настраивает его операции выбора, обновления, вставки и удаления на основе таблицы данных. Эта быстрая операция экономит много работы, необходимой для создания источника данных вручную, и при необходимости вы можете легко заменить GridView подходящим элементом управления с привязкой к данным.
Локальные и серверные базы данных
Возможно, вы уже знакомы с серверными базами данных и строками подключения. В этом случае сервер базы данных (например, SQL Server 2005) связывает имя базы данных с файлом базы данных, поддерживаемым сервером. Вы можете подключиться к серверной базе данных, указав имя сервера, имя базы данных и учетные данные, например:
«server=(local)SQLExpress;database=Pubs;Integrated Security=true».
Однако Visual Studio 2005 также поддерживает понятие локальных баз данных, представляющих собой файл, добавляемый в каталог App_Data текущего веб-приложения. Хранить файлы данных в каталоге App_Data безопасно, поскольку содержимое этого каталога никогда не будет отвечать на запросы пользователя. Этот каталог также является рекомендуемым местом для хранения XML-файлов и других хранилищ данных. Собственные базы данных SQL Server Express имеют расширение .MDF (например, MyDatabase.MDF), которое является стандартным форматом файлов, поддерживаемым SQL Server. При подключении к серверу база данных также имеет связанный файл журнала (например, «MyDatabase_log.LDF»). Расположение файла базы данных и файла журнала должно совпадать.
Мы можем автоматически подключить локальную файловую базу данных к SQL Server Express, используя строку подключения относительного пути. Относительные пути гарантируют, что соединение с базой данных не будет прервано при перемещении приложения в любое другое место. Строка подключения относительного пути в веб-приложении выглядит следующим образом:
«server=(local)SQLExpress;AttachDbFileName=|DataDirectory|MyDatabase.mdf;Integrated Security=true;User Instance=true».
Приведенная выше строка подключения имеет еще два дополнительных атрибута. . Свойство AttachDbFileName указывает расположение файла базы данных, который динамически присоединяется к серверу при открытии соединения. Хотя это свойство может принимать полный путь к базе данных (например, с использованием синтаксиса |DataDirectory|), во время выполнения этот путь будет заменен каталогом App_Data приложения. Это также гарантирует, что соединения не будут прерываться при перемещении приложения в другое место. Второе свойство — User Instance=true, которое определяет, как SQL Server Express подключает базу данных. В этом случае SQL Server Express создает новый процесс для подключения базы данных к новому экземпляру, работающий от имени пользователя, открывшего соединение. В приложении ASP.NET этим пользователем является локальная учетная запись ASPNET или сетевая служба по умолчанию, в зависимости от операционной системы. Чтобы безопасно прикрепить файлы базы данных, предоставленные учетными записями, не являющимися администраторами (например, учетными записями ASP.NET), необходимо создать отдельный экземпляр пользователя SQL Server.
Обратите внимание: поскольку по умолчанию все приложения ASP.NET выполняются в одном и том же процессе, все приложения подключают локальную базу данных к одному и тому же экземпляру SQL Server Express. Это означает, что все приложения имеют одинаковый доступ ко всем базам данных, подключенным к этому экземпляру, независимо от того, к какой базе данных изначально было подключено приложение. Чтобы изолировать разные приложения, каждое приложение должно запускаться в отдельном рабочем процессе или пуле приложений (в IIS 6). По этой причине локальная база данных SQL Server в первую очередь предназначена для облегчения разработки и не предназначена для замены серверной базы данных в среде общего хостинга.
Еще одним важным моментом является то, что двум пользователям не разрешено одновременно подключаться к локальной базе данных. При разработке приложения в Visual Studio дизайнер автоматически разрывает соединение, чтобы Visual Studio и ASP.NET могли совместно использовать файлы базы данных (например, при отладке работающего приложения в конструкторе).
Создание локальной базы данных
Вы можете легко создать локальную базу данных в проекте веб-приложения Visual Studio. Поскольку Visual Studio поставляется с установленным SQL Server Express, вы можете использовать следующие шаги для создания локальной базы данных, добавления таблиц и заполнения данных.
Чтобы создать локальную базу данных:
1. Щелкните правой кнопкой мыши в обозревателе решений и выберите параметр «Добавить новый элемент...».
2. Выберите пункт «База данных SQL» и укажите имя файла, например «Database.mdf».
3. Visual Studio предложит добавить этот файл в каталог App_Data. Нажмите «Да».
4. Visual Studio добавляет этот файл и автоматически подключается к базе данных с помощью браузера базы данных.
Чтобы добавить таблицу данных в локальную базу данных:
1. Щелкните правой кнопкой мыши узел «Таблицы» в браузере базы данных и выберите опцию «Добавить новую таблицу».
2. Введите имя и тип столбца в базе данных и при необходимости задайте другие свойства столбца в таблице свойств. Чтобы настроить образец базы данных контактов, выполните следующие действия.
3. Установите имя первого столбца «ContactID» и тип данных «int». Снимите флажок «Разрешить значения NULL».
4. Щелкните правой кнопкой мыши серый квадрат слева от столбца ContactID и выберите параметр «Установить как первичный ключ».
5. В приведенной ниже таблице «Свойства столбца» разверните узел «Спецификация идентификатора» и установите для параметра «Является ли это идентификатором» значение «Да».
6. Установите имя второго столбца «ContactName» и тип данных «varchar(50)». Оставьте флажок «Разрешить значения NULL».
7. Нажмите Ctrl-S, чтобы сохранить таблицу, и установите имя таблицы «Контакты». Нажмите ОК, чтобы сохранить таблицу.
8. Закройте окно определения таблицы.
Чтобы заполнить таблицу данными:
1. Щелкните правой кнопкой мыши узел таблицы данных (например, «Контакты») в браузере базы данных и выберите параметр «Показать данные таблицы».
2. Введите данные для строк таблицы данных в отобразившуюся форму. Если вы используете приведенный выше пример контактов, вы можете ввести значение в столбец ContactName, и база данных автоматически сгенерирует соответствующее значение ContactID.
3. Закройте окно таблицы.
Привязка к локальной базе данных
Для привязки к локальной базе данных необходимо настроить элемент управления источником данных ASP.NET для подключения к файлу с использованием соединения по относительному пути. Чтобы просто привязать базу данных SQL Server Express к элементам управления SqlDataSource и GridView, выполните следующие действия:
1. Дважды щелкните страницу в обозревателе решений (например, «Default.aspx»). Visual Studio откроет эту страницу.
2. Выберите вкладку «Просмотр дизайна» в нижней части окна страницы, чтобы переключиться в режим дизайна.
3. Дважды щелкните файл базы данных (например, «Database.mdf») в обозревателе решений. Visual Studio открывает браузер базы данных для подключения.
4. Разверните узел Таблицы, чтобы отобразить таблицы в базе данных.
5. Перетащите таблицу в браузере базы данных на открытую страницу в представлении «Дизайн». Visual Studio создает GridView, привязанный к элементу управления SqlDataSource.
6. Разверните «Панель интеллектуальных транзакций» элемента управления GridView и выберите разбивку по страницам, сортировку и редактирование.
7. Нажмите Ctrl-F5, чтобы запустить страницу (без отладки).
В следующем примере показан элемент управления GridView и SqlDataSource, подключенный к локальной базе данных. Чтобы запустить этот пример, учетная запись процесса ASP.NET должна иметь разрешения на чтение и запись для файлов MDF и LDF в каталоге ~/App_Data. Процесс настройки разрешений выглядит следующим образом:
1. Выберите файл ~/App_Data/Database.MDF в браузере Windows и выберите «Свойства».
2. Выберите вкладку «Безопасность» и нажмите «Добавить».
3. Нажмите «Местоположение...», выберите имя своего компьютера (вверху списка) и нажмите «ОК».
4. В текстовой области «Имя объекта» введите имя учетной записи процесса ASP.NET. По умолчанию в IIS 6.0 имя — «Сетевая служба», а в IIS 5.x — «ASPNET».
5. В столбце «Разрешить» выберите «Чтение» и «Запись» и нажмите «ОК».
6. Если в каталоге App_Data есть файл LDF, вам необходимо повторить описанные выше шаги, чтобы установить свойства файла LDF.
Если вы используете Visual Studio для создания приложения на локальном компьютере, то по умолчанию у вас есть указанные выше разрешения для каталога App_Data. Если файлу базы данных необходимо изменить разрешения после его присоединения, необходимо сначала закрыть домен приложения, прежде чем новые разрешения вступят в силу.
<asp:GridView AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="ContactID" DataSourceID="SqlDataSource1" ID="GridView1" runat="server">
<Столбцы>
<asp:BoundField DataField="ContactID" HeaderText="ID" ReadOnly="True" SortExpression="ID" />
<asp:BoundField DataField="ContactName" HeaderText="Имя" SortExpression="Имя" />
</Столбцы>
</asp:GridView>
<asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:ContactsDatabase %>" ID="SqlDataSource1" runat="server" SelectCommand="ВЫБРАТЬ [ContactID], [ContactName] ИЗ [Контакты]" OnSelected="SqlDataSource1_Selected"></ asp:SqlDataSource>
Развертывание локальной базы данных
Одним из преимуществ файла локальной базы данных является то, что он может сопровождать приложение, перемещаться как часть приложения в другие места или на другие компьютеры (конечно, на компьютере также должен быть установлен SQL Server). Выражать). При перемещении базы данных файл должен находиться в разблокированном состоянии. Файл блокируется, пока дизайнер или приложение подключено к базе данных. Для разблокировки все активные подключения к базе данных должны быть закрыты. Чтобы закрыть соединение с базой данных, можно использовать следующие методы:
· Если ASP.NET открыл соединение, вы можете закрыть домен приложения, добавив файл «app_offline.htm» в корневой каталог веб-приложения. Его функция — закрыть домен приложения (а не процесс) и перенаправить все запросы приложения в этот файл (возвращая код ответа 404). Если вы хотите перезапустить приложение, просто удалите этот файл. Обратите внимание, что простое закрытие соединения в коде страницы не приведет к снятию блокировки файла, поскольку по умолчанию пул соединений ADO.NET сохраняет активные соединения.
Visual Studio предоставляет функцию копирования веб-страниц, которая позволяет копировать файлы приложения из рабочего каталога на целевой сервер с помощью xcopy, FTP или расширения сервера FrontPage. Целевой компьютер может быть локальным или удаленным. Вы можете вызвать функцию копирования веб-сайта, выбрав «Веб-сайт > Копировать веб-сайт...» в строке меню Visual Studio.
Хотя для перемещения базы данных можно использовать Copy Web или простую операцию xcopy или FTP, для продолжения работы приложения на целевом компьютере должен быть запущен SQL Server Express (под тем же именем экземпляра). Ранее мы упоминали, что, поскольку все приложения, использующие ASP.NET, подключены к одному и тому же экземпляру SQL, все приложения на целевом компьютере должны доверять друг другу. Если одно приложение не может видеть базу данных другого приложения, мы рекомендуем использовать серверный подход (с использованием аутентификации SQL или других методов разделения) вместо локальной базы данных. Если вы используете SQL Server Express в качестве инструмента разработки, вам необходимо скопировать содержимое базы данных SQL Server Express клиентам в рамках производственного развертывания.