如何从sql server object_id获取SMO对象(例如表)?
我看到可以通过URN(Server.GetSmoObject方法)弹出SMO对象。 但后来又提出了另一个问题:如何将object_id转换为URN?
答案 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) + ''']"'