Наличие функции User Instances отличает SQL Server 2005 Express от других редакций SQL Server. Прежде чем говорить о User Instances, необходимо пояснить, что экземпляр SQL Server по сути представляет находящуюся в памяти копию исполняемой программы sqlservr.exe. Разные редакции SQL Server поддерживают разное число экземпляров. Например, версия SQL Server 2005 Enterprise Edition поддерживает 50 экземпляров, а SQL Server 2005 Standard, Workgroup и Express - 16 экземпляров. Каждый экземпляр функционирует отдельно и имеет свой набор баз данных, который не используется никаким другим экземпляром. Клиентское приложение связывается с экземпляром по его имени.

Как правило, экземпляр SQL Server, устанавливаемый первым, становится экземпляром "по умолчанию". Экземпляр по умолчанию получает имя компьютера, на котором он установлен. Последующим устанавливаемым экземплярам можно назначать имена, и такие экземпляры называются "именованными". В ходе установки можно назначать любое имя именованному экземпляру. Клиентские приложения для связи с экземпляром используют синтаксис . Например, если имя экземпляра по умолчанию - SQLServer1, а имя экземпляра - MyInstance, клиентское приложения для связи с экземпляром использует синтаксис SQLServer1MyInstance.

Как и другие редакции SQL Server, SQL Server Express поддерживает экземпляр по умолчанию и именованные экземпляры, но в качестве имени экземпляра по умолчанию используется SQLExpress, а не имя компьютера.

Помимо обычных экземпляров SQL Server, SQL Server Express также поддерживает пользовательские экземпляры - User Instances. Пользовательские экземпляры аналогичны именованным экземплярам, но создаются динамически и имеют различные ограничения. В ходе установки SQL Server Express имеется возможность выбрать режим, позволяющий активизировать функцию User Instances. По умолчанию функция User Instances выключена. После установки можно ввести команду sp_configure в SQL Server Management Studio Express (SSMSE), либо применить sqlcmd, используя следующий синтаксис:

sp_configure 'user instances enabled','1'

Для выключения функции User Instance нужно вместо 1 ввести 0.

Функция User Instances предназначена для облегчения процесса развертывания баз данных вместе с приложениями. User Instances позволяет пользователям, даже не обладающим административными привилегиями, создавать экземпляр базы данных по запросу. Для использования User Instances, строка соединения приложения должна содержать ключевые слова ?attachdbfilename? и ?user instance?:

Data Source=3D.SQLExpress;integrated security=3Dtrue;
attachdbfilename=3D
MyDatabase.mdf;user instance=3Dtrue;

Когда приложение c ключевыми словами ?attachdbfilename? и ?user instance? устанавливает соединение с базой данных SQL Server Express, в которой активизирована функция User Instances, SQL Server Express создает копию главной базы данных и базы данных msdb в каталоге пользователя. SQL Server Express запускает новый экземпляр программы sqlserver.exe и прикрепляет базу данных под именем, указанным под ключевым словом ?attachdbfilename?, к новому экземпляру.

В отличие от обычных экземпляров SQL Server, экземпляры User Instances имеют некоторые ограничения. User Instances не позволяют осуществлять сетевые подключения, ограничиваясь локальными соединениями. Как и следует ожидать, ввиду ограничения на сетевой доступ, User Instances не поддерживают репликацию или распределенные запросы к удаленным базам данных. Кроме того, необходима интегрированная аутентификация Windows. Более подробная информация о SQL Server Express и User Instances содержится в статье Microsoft "SQL Server 2005 Express Edition User Instances"

Поделитесь материалом с коллегами и друзьями