2014-01-31 45 views
2

如何從獲得SMO對象(例如Table)sql server的 object_id?如何從sql server object_id獲取SMO對象(例如Table)?

我看到可以通過URN(Server.GetSmoObject方法)彈出SMO對象。 但後來我得到了另一個問題:如何將object_id轉換爲URN?

+1

我已經編輯我的答案。這可能有助於其他方面。 – Jaques

+0

你想做什麼?也就是說,通過object_id選擇一個對象在SMO中看起來很奇怪。你的用例是什麼? –

+0

我想知道如何通過ID選擇對象,因爲1)我試圖讓腳本更緊湊2)我正在學習SMO並將我的知識映射到它。 –

回答

3

我這裏假設你正在使用C#,並與您的服務器變量已經連接等

如果你知道什麼對象,你正在尋找(在示例表),試試這個。

Server.GetSmoObject(Server.Database["DBName"].Tables.ItemById(object_id).Urn); 

希望它可以幫助

編輯

這裏是另一種方式。它創建了一個Datatable,它有4列。 ObjectsType,架構,名稱和甕城

DataTable table = server.Databases["DBName"].EnumObjects(); 
foreach (DataRow item in table.Rows) 
{ 
    if(item[2].ToString() == "Companies" && item[0].ToString() == "Table") 
    { 
     server.GetSmoObject(item[3].ToString()); 
    } 
} 

但是,如果你想創建一個金塔SQL代碼,你可以這樣做

Select '"Server[@Name=''' + @@SERVERNAME + ''']/Database[@Name=''' + DB_Name() + '''/Table[@Name=''' + OBJECT_NAME(117575457) + ''']"' 
+0

當然,對於這個解決方案,我應該事先知道object_id代表表格(不是視圖),但這對我來說已經足夠了。 –

相關問題