如何從獲得SMO對象(例如Table)sql server的 object_id?如何從sql server object_id獲取SMO對象(例如Table)?
我看到可以通過URN(Server.GetSmoObject方法)彈出SMO對象。 但後來我得到了另一個問題:如何將object_id轉換爲URN?
如何從獲得SMO對象(例如Table)sql server的 object_id?如何從sql server object_id獲取SMO對象(例如Table)?
我看到可以通過URN(Server.GetSmoObject方法)彈出SMO對象。 但後來我得到了另一個問題:如何將object_id轉換爲URN?
我這裏假設你正在使用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) + ''']"'
當然,對於這個解決方案,我應該事先知道object_id代表表格(不是視圖),但這對我來說已經足夠了。 –
我已經編輯我的答案。這可能有助於其他方面。 – Jaques
你想做什麼?也就是說,通過object_id選擇一個對象在SMO中看起來很奇怪。你的用例是什麼? –
我想知道如何通過ID選擇對象,因爲1)我試圖讓腳本更緊湊2)我正在學習SMO並將我的知識映射到它。 –