2014-01-31 1 views
2

Как получить объект SMO (например, таблицу) от sql server object_id?Как получить объект SMO (например, таблицу) из sql-сервера object_id?

Я вижу, что объект SMO можно вскрыть методом URN (Server.GetSmoObject). Но тогда у меня возник вопрос: как преобразовать 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); 

Надеется, что это помогает

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) + ''']"' 
+0

Конечно, с этим решением я должен заранее знать, что object_id представляет таблицу (не просмотр), но этого для меня достаточно. –

Смежные вопросы