如何从SQl SERVER object_id获取SMO对象(例如表)?

时间:2014-01-31 09:16:38

标签: sql-server sql-server-2012 smo

如何从sql server object_id获取SMO对象(例如表)?

我看到可以通过URN(Server.GetSmoObject方法)弹出SMO对象。 但后来又提出了另一个问题:如何将object_id转换为URN?

1 个答案:

答案 0 :(得分:4)

我在这里假设您正在使用C#,并且您的服务器变量已经连接等等。

如果您知道要查找的对象(在示例中为表格),请尝试此操作。

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

希望有所帮助

修改

这是另一种方式。它创建一个有4列的数据表。 ObjectsType,Schema,Name和Urn

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代码中创建一个Urn,你可以做类似

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