如何使用PowerShell SQLPS模块浏览SQL Server 2012 LocalDB对象的层次结构



从程序开发人员的角度来看,将PowerShell与" Microsoft SQL Server 2012 LocalDB"相结合,与SQL Server数据库引擎进行交互非常吸引人。连接到PowerShell的LocalDB实例,使用数据库对象并执行Transact-SQL语句工作正常。将" Microsoft SQL Server 2012共享管理对象"(SMO)添加到此混合物时也是如此。

我无法工作的是通过PowerShell SQLPS模块通过LocalDB实例导航(" Microsoft SQL Server 2012功能包的Microsoft Windows PowerShell扩展名")。后者尝试获得SQL Server服务信息,而LocalDB并未创建任何数据库服务。

但是,是否可以使SQLPS模块可见的LocalDB实例?

我认为没有任何方法可以将SQLPS和/或SMO扩展到SQL Server实例列表中。当前SQLP和SMO不了解LocalDB实例模型,就像(我认为)以前不了解SQL Server Express的用户实例一样。同样,混合常规和LocalDB实例可能会使最终用户感到困惑。LocalDB实例是每个用户,只有拥有它们的用户才能看到,因此不同的用户在同一台计算机上会获得不同的列表。常规的SQL Server实例是每机械安装的,所有用户都会看到相同的列表。

我敢打赌,您可以编写自己的PowerShell插件或模块。您需要做的就是调用LocalDB API(通过C/C 获得)以及现有SQLPS或SMO的LocalDbgetInstances和LocalDbgetInstanceInfo函数,以适用于常规SQL Server实例。我不确定您是如何分发此类插件的。