Назад | Перейти на главную страницу

SQL Server: что такое именованные экземпляры и экземпляры по умолчанию?

Что такое именованные экземпляры и экземпляры по умолчанию? В чем разница (а) между ними? Почему они используются?

Согласно Microsoft относительно named vs default

Клиентские приложения подключаются к экземпляру Microsoft SQL Server 2005 для работы с базой данных SQL Server. Каждый экземпляр SQL Server состоит из отдельного набора служб, которые могут иметь уникальные настройки. Структура каталогов, структура реестра и имя службы отражают конкретное имя экземпляра, которое вы указываете во время установки.

Экземпляр - это либо безымянный экземпляр по умолчанию, либо именованный экземпляр. Когда SQL Server 2005 установлен в экземпляре по умолчанию, клиенту не требуется указывать имя экземпляра для установления соединения. Клиенту нужно только знать имя сервера.

Именованный экземпляр идентифицируется сетевым именем компьютера плюс именем экземпляра, которое вы указываете во время установки. При подключении клиент должен указать как имя сервера, так и имя экземпляра.

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

Также вы можете установить только один экземпляр по умолчанию (безымянный экземпляр), но вы можете установить много именованных экземпляров.

Многие сторонние программы обычно используют именованные экземпляры по умолчанию, хотя они могут не упоминать об этом. Причина ясна из приведенных выше ответов: стандартные версии по умолчанию устанавливают безымянный экземпляр, а экспресс-версия по умолчанию устанавливает именованный экземпляр.

С этой точки зрения важно знать разницу, потому что, если у вас работает 2 или 3 сервера БД, вы никогда не сможете подключиться к нужной версии. Поскольку стороннее программное обеспечение ищет экземпляр по умолчанию, в то время как вы думаете, что это экземпляр SQLEXPRESS, к которому оно пытается подключиться. Это может значительно увеличить время устранения неполадок, если вы не знаете, как подключиться к именованному и безымянному экземпляру.

Поэтому, если вы хотите подключиться к именованной или безымянной версии, используйте следующие рекомендации.

MY-MACHINE-NAME\SQLEXPRESS  /* named version - correct */
MY-MACHINE-NAME             /* unnamed version (default instance) - correct */
MY-MACHINE-NAME\MSSQLSERVER /* unnamed version (default instance) - Wrong */

Обратите внимание, что даже если у экземпляра по умолчанию есть имя, на него нельзя ссылаться по имени!

В дополнение к объяснению, опубликованному Бреттом Джи, вот несколько причин, почему их нужно использовать:

  • У вас могут быть разные экземпляры с использованием разных версий SQL (т.е. по умолчанию с использованием SQL 2008, именованный экземпляр с использованием SQL 2005)
  • Разделение проблем, будь то ваше приложение, безопасность или что-то еще
  • Различные среды разработки
  • Различные среды приложений (например, доморощенные или сторонние)

Всевозможные причины их использовать. Но это не значит, что это всегда хорошая идея: P

Еще одно практическое отличие: SQL2005 и выше позволяют устанавливать 16 или более экземпляров на систему. Поскольку лицензирование на физический процессорна каждую установку SQL-сервера (и не на экземпляр!), это означает, что вы можете запустить до 16 экземпляров SQL Server 2005, не заплатив ни цента больше, чем вы уже сделали.

Учитывая, что лицензии на ЦП могут достигать 15000 (!) Долларов за сокет, это необходимо для больших установок, скажем, с 16 ядрами и 256 ГБ памяти.

Вы также можете ограничить память и назначить ограничение на использование процессора для каждого экземпляра. Вы также можете создать экземпляр для приложений, написанных поставщиком, которым «нужны» права системного администратора, чтобы вы не подвергали риску другие свои приложения.

Одна из лучших причин - разделение баз данных. Если вы разрабатываете собственное приложение и упаковываете вместе с ним SQL Express, имеет смысл установить его в собственный экземпляр. Плюс предоставление пользователю возможности указать существующую установку SQL, если они этого хотят.

Если у вас есть критически важная база данных, к которой вы хотите, чтобы никто другой не имел доступа, она может перейти в собственный экземпляр с очень ограниченной авторизацией безопасности. Скажем, это ваша производственная БД, а затем она реплицируется в БД отчетов на том же сервере **, который доступен только для чтения. Маловероятно, что из-за ошибки пользователя (администратора) пользователи случайно получат доступ к производственной БД, ограничив круг лиц, действительно способных обновлять группы безопасности в производственном экземпляре, лишь несколькими людьми.

** хорошая практика гласит, что сервер отчетов должен быть отдельной машиной, но я делаю это просто в качестве примера.