Как перемещаться по иерархии объектов SQL Server 2012 LocalDB с помощью модуля PowerShell SQLPS?

С точки зрения разработчика программы объединение PowerShell с «Microsoft SQL Server 2012 LocalDB» для взаимодействия с ядром базы данных SQL Server очень привлекательно. Подключение к экземплярам LocalDB из PowerShell, работа с объектами базы данных и выполнение инструкций Transact-SQL работают просто отлично. Это также справедливо и при добавлении к этому набору «общих объектов управления Microsoft SQL Server 2012» (SMO).

Чего я не могу заставить работать, так это навигации по экземплярам LocalDB с помощью модуля PowerShell SQLPS («Расширения Microsoft Windows PowerShell для Microsoft SQL Server 2012 Feature Pack»). Последний пытается получить информацию о службе SQL Server, тогда как LocalDB не создает никаких служб базы данных.

Тем не менее, существует ли способ сделать экземпляры LocalDB видимыми для модуля SQLPS?


person wfr    schedule 03.11.2012    source источник


Ответы (1)


Я не думаю, что есть какой-либо способ расширить SQLPS и/или SMO, чтобы включить экземпляры LocalDB в список экземпляров SQL Server. В настоящее время SQLPS и SMO ​​не понимают модель экземпляра LocalDB, точно так же, как (я думаю) раньше не понимали пользовательские экземпляры SQL Server Express. Кроме того, смешивание обычных экземпляров и экземпляров LocalDB может сбивать с толку конечных пользователей. Экземпляры LocalDB предназначены для каждого пользователя и видны только пользователю, которому они принадлежат, поэтому разные пользователи получат разные списки на одном и том же компьютере. Обычные экземпляры SQL Server устанавливаются на каждую машину, и все пользователи видят один и тот же список.

Бьюсь об заклад, вы могли бы написать свой собственный плагин или модуль PowerShell. Все, что вам нужно сделать, это вызвать LocalDBGetInstances и LocalDBGetInstanceInfo из LocaLDB API (доступно через C/C++), а также существующие SQLPS или SMO ​​для обычные экземпляры SQL Server. Я не уверен, как вы распространяете такой плагин.

person Krzysztof Kozielczyk    schedule 03.11.2012
comment
… или написать модуль PowerShell, что я и сделал для удобной навигации по экземплярам LocalDB и, таким образом, в значительной степени дублируя функциональность, которую в любом случае предоставляет модуль SQLPS. Нет проблем с подключением из PowerShell к экземплярам LocalDB с помощью SqlConnection или, альтернативно, SMO или их комбинации. Чего я не знаю, так это того, как заставить модуль SQLPS видеть не только экземпляры SQL Server Express локального компьютера, но и экземпляры LocalDB. - person wfr; 04.11.2012
comment
Кажется, я неправильно понял ваш вопрос, пропустив часть SQLPS. Я не думаю, что возможно расширить SQLPS или SMO ​​так, как вы этого хотите. Имейте в виду, что экземпляры LocalDB принадлежат пользователю и видны только пользователю, которому они принадлежат, поэтому я не уверен, что их перечисление среди обычных экземпляров SQL Server было бы хорошей идеей в общем случае. Мы бы увидели другой список в зависимости от того, кто звонит... - person Krzysztof Kozielczyk; 04.11.2012