Первый взгляд на LocalDB

Обновлено 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 2012LocalDBCompact 4.0
Типсервисотдельный процесс (sqlservr.exe), запускаемый приложениемin-process DLL
Поддержка 64-bitДаДаДа
Максимальный размер базы данных10 GB10 GB4 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