Я предполагаю, что здесь, что вы используете C#, и что переменная сервер уже подключен и т.д.
Если вы знаете, что объект, который вы ищете (в данном примере в таблице), попробуйте это.
Server.GetSmoObject(Server.Database["DBName"].Tables.ItemById(object_id).Urn);
Надеется, что это помогает
EDIT
Вот еще один способ. Он создает 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) + ''']"'
Я отредактировал мой ответ. Это может помочь другим способом. – Jaques
Что вы пытаетесь сделать? То есть, выбор объекта object_id кажется странным для SMO. Каков ваш прецедент? –
Я хотел знать, как выбрать объекты по id, потому что 1) Я пытаюсь сделать скрипты более компактными 2) Я изучаю SMO и сопоставляю свои знания с ним. –