Я запускаю SQL Express 2008 на своей машине разработки с одним экземпляром.
Для некоторой разработки я использовал строку подключения AttachDB. Я действительно не могу вспомнить точную причину, но они не установлены обычным способом. Я думаю, что хотел вживую отредактировать некоторые данные, и спустя много лет я узнал, как подключиться из студии управления ... Я использовал \\.\pipe\A2108B22-19AA-41\tsql\query
Тем не менее, я пытаюсь изучить управление MS SQL немного глубже, и мне было интересно, как это технически работает и как оно отделено от основного экземпляра (подключается через .\SQLExpress
)?
Кроме того, я помню, что где-то читал, но могу ошибаться, что это особенность SQL Express, а не основной продукт SQL Server. Это правильно или я ошибаюсь?
Причина последней части вопроса в том, что мне было интересно, является ли это своего рода «черным ходом» в хостинге SQL или можно ли его отключить. Я размещаю несколько веб-сайтов для людей, и я выдал пользователю / пропуску и БД с ограничением размера для людей. Прежде чем я часами тестировал / копался, я просто подумал, есть ли у кого-нибудь представление об этом?
Если вы используете строку подключения, которая выглядит так:
AttachDBFilename=|DataDirectory|MyDB.mdf;User Instance=true`
то вы используете функцию SQL Express, известную как «создание экземпляров пользователя».
Эта функция была введена в SQL Server Express 2005 и предоставила разработчикам возможность запускать экземпляр SQL Server под своим собственным (не администраторским) именем входа.
Еще есть .\SQLExpress
запущенный именованный экземпляр, то есть созданный во время установки. Однако при подключении к базе данных с помощью AttachDBFilename
функция экземпляра пользователя, новый Экземпляр SQL Express развернут для обработки доступа к AttachDBFilename
база данных, этот «пользовательский экземпляр» работает под вашей учетной записью Windows.
Связь с этим экземпляром происходит через именованный канал (как вы выяснили).
Здесь есть информативная статья о User Instancing от Microsoft:
Хотя эта функция все еще доступна в SQL Server 2008 R2 Express, похоже, что она устарела или, возможно, будет удалена в ближайшем будущем, и вам рекомендуется не использовать ее:
Эта функция будет удалена в будущей версии Microsoft SQL Server. Избегайте использования этой функции в новых разработках и запланируйте изменение приложений, которые в настоящее время используют эту функцию.
Пользовательские экземпляры также несовместимы с сайтами, работающими под ApplicationPoolIdentity
учетная запись на IIS7 и IIS7.5. Для получения дополнительной информации см. Эту статью базы знаний MS:
Проблемы с пользовательским экземпляром SQL Server Express и проектами веб-приложений ASP.net
Веб-приложения, созданные с помощью Visual Studio 2005, Visual Studio 2008 или Visual Studio 2010 и использующие пользовательские экземпляры с помощью SQL Server Express 2005 или SQL Server Express 2008, не работают с новым удостоверением пула приложений. Эти продукты были разработаны и протестированы на пулах приложений, работающих со старой учетной записью NETWORK SERVICE.
Если вы хотите просто разместить свою базу данных в обычном .\SQLExpress
экземпляра и иметь доступ к нему через TCP / IP, как к обычному SQL Server, тогда вам нужно сделать несколько вещей:
Включите TCP / IP для SQL Express. Установка по умолчанию включает только именованные каналы. Вы можете сделать это с помощью диспетчера конфигурации SQL Server:
При установке SQL Express по умолчанию используется NETWORK SERVICE
учетная запись в качестве учетной записи службы. Возможно, вам потребуется предоставить разрешения на изменение для этой учетной записи в папке, содержащей ваш .mdf
файл.
Прикрепите .mdf
файл в вашем App_Data
папку в .\SQLExpress
пример.
Измените строку подключения на регулярный строка подключения, например
<add name="SupportSystem"
connectionString="Database=MyDatabaseName;Data Source=172.16.3.44\SQLEXPRESS;User ID=dbuser;Password=dbpassword;Initial Catalog=MyDatabaseName;"
providerName="System.Data.SqlClient"/>