我正在嘗試創建一個SSMS加載項。我想要做的事情之一是創建一個新的查詢窗口並以編程方式將其連接到服務器實例(在SQL登錄的上下文中)。我可以很好地創建新的查詢腳本窗口,但是我沒有先手動連接到其他的東西(比如對象瀏覽器),我找不到如何連接它。如何連接一個新的查詢腳本與SSMS加載項?
因此,換句話說,如果我Obect資源管理器連接到SQL實例手動,然後執行我的方法加載項,創建查詢窗口,我用這個代碼可以把它連接:
ServiceCache.ScriptFactory.CreateNewBlankScript(
Editors.ScriptType.Sql,
ServiceCache.ScriptFactory.CurrentlyActiveWndConnectionInfo.UIConnectionInfo,
null);
但我不想依賴CurrentlyActiveWndConnectionInfo.UIConnectionInfo進行連接。我想以編程方式設置SQL登錄用戶名和密碼。
有沒有人有任何想法?
編輯:
我已經設法獲得通過的最後一個參數設置爲System.Data.SqlClient.SqlConnection的實例連接的查詢窗口。但是,連接使用最後一次登錄的上下文,而不是以編程方式設置。也就是說,它所連接的用戶就是您在連接對話框中選擇的用戶,當您單擊「新建查詢」按鈕並且沒有連接對象資源管理器時,您將獲得該用戶。
EDIT2:
我寫(或希望寫)的插件時對我們的生產服務器上運行自動發送SQL語句和執行結果,以我們的情況跟蹤系統。我想過的一個想法是刪除寫入權限並通過此加載項分配登錄名,這也將強制用戶輸入案例#如果該語句不存在,則取消該語句。我剛纔的另一個想法是檢查ServiceCache.ScriptFactory.CurrentlyActiveWndConnectionInfo.UIConnectionInfo中的服務器名稱,並將其與我們的生產服務器列表進行比較。如果匹配並且沒有大小寫#則取消查詢。
你想創建自己的連接到對話框? – 2009-06-19 15:20:56
是的,基本上。用戶不會自己輸入登錄信息。它將從持久存儲中檢索,而我已經在使用這個存儲。 – squillman 2009-06-19 16:06:10