2012-11-03 41 views
1

從程序開發人員的角度來看,將PowerShell與「Microsoft SQL Server 2012 LocalDB」結合起來與SQL Server數據庫引擎進行交互是非常有吸引力的。從PowerShell連接到LocalDB實例,使用數據庫對象並執行Transact-SQL語句可以很好地工作。在將「Microsoft SQL Server 2012共享管理對象」(SMO)添加到此混合中時,這也同樣適用。如何使用PowerShell SQLPS模塊瀏覽SQL Server 2012 LocalDB對象的層次結構?

我無法工作的是通過PowerShell SQLPS模塊(「Microsoft Windows PowerShell Extensions for Microsoft SQL Server 2012 Feature Pack」)瀏覽LocalDB實例。後者嘗試獲取SQL Server服務信息,而LocalDB不創建任何數據庫服務。

不過,是否有一種方法可以讓SQLDB模塊顯示LocalDB實例?

回答

0

我不認爲有任何方法可以擴展SQLPS和/或SMO以在SQL Server實例列表中包含LocalDB實例。目前SQLPS和SMO不理解LocalDB實例模型,就像(我認爲)它不理解SQL Server Express的用戶實例。同時混合常規和LocalDB實例可能會讓最終用戶感到困惑。 LocalDB實例是按用戶的,只有擁有它們的用戶才能看到,因此不同的用戶會在同一臺計算機上獲得不同的列表。常規SQL Server實例按計算機安裝,所有用戶都看到相同的列表。

我敢打賭,你可以編寫自己的PowerShell插件或模塊。您只需從LocaLDB API(可通過C/C++獲取)調用LocalDBGetInstancesLocalDBGetInstanceInfo函數以及常規SQL Server實例的現有SQLPS或SMO。我不知道你是如何分配這樣的插件。

+0

......或者編寫一個PowerShell模塊,這實際上是我爲了方便地瀏覽LocalDB實例而做的,因此很大程度上覆制了SQLPS模塊提供的功能。從PowerShell連接到使用SqlConnection或SMO或兩者組合的LocalDB實例沒有問題。 我不知道如何讓SQLPS模塊不僅看到本地機器的SQL Server Express實例,還看到了LocalDB實例。 – wfr

+0

似乎我誤解了你的問題,錯過了SQLPS部分。我不認爲有可能以你想要的方式擴展它的SQLPS或SMO。請記住,LocalDB實例屬於用戶,只對擁有它們的用戶可見,所以我不確定在常規情況下是否將它們列在常規SQL Server實例中是一個好主意。我們會看到不同的列表,具體取決於呼叫者是誰...... –