Обновлено 22 марта 2012.
С обновлением .NET 4.0.2 добавилась возможность использовать LocalDB в качестве хранилища данных. Давайте посмотрим зачем нужен и как использовать этот новый вариант SQL Server.
Обзор LocalDB
Первым вопросом, человека услышавшего про LocalDB, наверное будет "а зачем нужен?" И правда, ведь в линейке продуктов Microsoft уже есть SQL Server, SQL Server Express и SQL Server Compact.
LocalDB это вариант SQL сервера, доступный в рамках SQL Server 2012 Express. Давайте сравним различные редакции (все три доступны для бесплатного использования):
| Express 2012 | LocalDB | Compact 4.0 |
Тип | сервис | отдельный процесс (sqlservr.exe), запускаемый приложением | in-process DLL |
Поддержка 64-bit | Да | Да | Да |
Максимальный размер базы данных | 10 GB | 10 GB | 4 GB |
Поддержка FileStream | Да | Нет | Нет |
Поддерживаемые возможности | широкий набор возможностей, включая хранимые процедуры, такие типы данных как Geometry и Geography и т.д. | широкий набор возможностей, включая хранимые процедуры, такие типы данных как Geometry и Geography и т.д. | ограниченный набор поддерживаемых возможностей |
Transact-SQL | Да | Да | Да |
Procedural T-SQL | Да | Да | Нет |
Simple transactions | Да | Да | Да |
Distributed transactions | Да | Да | Нет |
Native XML, XQuery/XPath | Да | Да | Нет |
Role-based security | Да | Да | Нет |
Stored procedures, views, triggers | Да | Да | Нет |
Число одновременных соединений | Нет ограничения | Нет ограничения, но только локальные подключения | 256 |
Таким образом, LocalDB это альтернатива Express версии, которая не является постоянно запущенным сервисом и позволяет только локальные подключения. При этом, в отличии от Compact, она поддерживает весь функционал Express, за исключением FileStream.
Установка LocalDB
На данный момент LocalDB доступна как часть SQL Server 2012 Express. Поэтому достаточно скачать и установить Microsoft SQL Server 2012 Express RTM. При этом, если нет необходимости в установке SQL Express как сервиса, то можно убрать отме��ку с опции Database Engine или перевести его в режим ручного запуска. Для управления LocalDB можно будет использовать SQL Server Managment Studio (SSMS).
Обратите внимание, что Visual Studio 2012 Beta уже содержит в своей поставке LocalDB RC0. Поэтому после её установки необходимо удалить данную предварительную версию и поставить финальную.
Кроме того, для работы с Visual Studio 2010 потребуется обновить .NET Framework до версии 4.0.2. Для этого необходимо установить Service Pack 1 (SP1), а также Design-time Update (KB2544525).
Использование LocalDB в приложении
Попробуем LocalDB в действии. Давайте создадим простой пустой (empty) ASP.NET MVC 3 проект. Назовем его LocalDBTest. Создадим специальную папку для хранения данных – AppData. Также обязательно необходимо в свойствах проекта установить .NET 4.0.2 в качестве Target Framework (по умолчанию используется 4.0).
В папку Models добавим класс UserProfile, содержащий следующую Модель (файл UserProfile.cs):
namespace LocalDBTest.Models
{
using System.ComponentModel.DataAnnotations;
public class UserProfile
{
public int Id { get; set; }
[Required]
public string FirstName { get; set; }
public string LastName { get; set; }
[DataType(DataType.MultilineText)]
public string Description { get; set; }
}
}
Соберем проект. Затем, c помощью заготовок, создадим Контроллер HomeController, с поддержкой стандартных операций с помощью Entity Framework, и Представления для них.
Тестовое приложение почти готово. Остается только указать, что необходимо использовать LocalDB. Все отличие от проекта, использующего другие варианты SQL Server, будет заключаться в строке соединения.
<connectionStrings>
<add name="LocalDBTestContext"
connectionString="Server=(localdb)\v11.0;Database=LDBTest;Integrated Security=true;"
providerName="System.Data.SqlClient"/>
</connectionStrings>
Как хорошо видно, вместо (local) для Express версии, используется (localdb)\v11.0. Дело в том, что .NET 4.0.2 добавляет поддержку LocalDB в стандартный SqlClient.
По умолчанию файлы баз данных размещаются в папке "C:\Users\[UserName]". Однако, LocalDB позволяет переопределить это место для каждого приложения. Для этого в строке соединения необходимо задать параметр AttachDbFileName:
<connectionStrings>
<add name="LocalDBTestContext"
connectionString="Server=(localdb)\v11.0;Database=LDBTest;Integrated Security=true;AttachDbFileName=|DataDirectory|\LDBTest.mdf"
providerName="System.Data.SqlClient"/>
</connectionStrings>
Запустим созданное приложение и убедимся в его работоспособности. Для этого добавим несколько значений в базу данных.
Итак, для использования LocalDB вместо других редакций SQL Server достаточно указать соответствующую строку подключения в файле конфигурации проекта.
В завершении стоит отметить, что для администрирования созданных таблиц можно использовать SQL Server Management Studio, входящую в поставку Microsoft SQL Server 2012. При этом в качестве адреса сервера необходимо также указать строку "(localdb)\v11.0". Кроме того, как уже упоминалось, Visual Studio 2012 также содержит встроенный инструмент c аналогичной функциональностью.
Исходный код проекта (C#, Visual Studio 2010):
LocalDBTest.zip