Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Petrashkevich Member Откуда: Сообщений: 81 |
Здравствуйте !!! Делаю запрос, где одно из полей вычисляется так SELECT AC.name, InPrimaryKey=CAST(ISNULL(cik.index_column_id, 0) AS bit), IsForeignKey=CAST(case when F.parent_object_id is null then 0 else 1 end AS bit), SystemType=ISNULL(Z.name, ''), Length=CAST(CASE WHEN Z.name IN ('nchar', 'nvarchar') AND AC.max_length <> -1 THEN AC.max_length/2 ELSE AC.max_length END AS int), NumericPrecision=CAST(AC.precision AS int), NumericScale=CAST(AC.scale AS int), AC.is_nullable,AC.is_computed, IsSparse=CAST(AC.is_sparse AS bit), IsColumnSet=CAST(AC.is_column_set AS bit), ColDRIDefName=object_name(F.constraint_object_id) from MyDatabase.sys.tables T inner join MyDatabase.sys.all_columns AC on AC.object_id=T.object_id left join MyDatabase.sys.indexes IK ON ik.object_id = AC.object_id and 1=ik.is_primary_key left join MyDatabase.sys.index_columns CIK ON cik.index_id = ik.index_id and cik.column_id = AC.column_id and cik.object_id = AC.object_id and 0 = cik.is_included_column left join MyDatabase.sys.types AS Z ON (Z.user_type_id = AC.system_type_id and Z.user_type_id = Z.system_type_id) or ((Z.system_type_id = AC.system_type_id) and (Z.user_type_id = AC.user_type_id) and (Z.is_user_defined = 0) and (Z.is_assembly_type = 1)) left join MyDatabase.sys.foreign_key_columns F on F.parent_column_id = AC.column_id and F.parent_object_id = AC.object_id where (T.name='MyTableName' and SCHEMA_NAME(T.schema_id)='dbo') order by AC.column_id ASC При подключении к MyDatabase колонка выводит имена ключей, при подключении к master = NULL Получается что функция object_name() контексто-зависимая Пытаюсь написать MyDatabase.object_name() или MyDatabase.sys.object_name() - не получается. Подскажите пожалуйста, как правильно обратиться к функции другой базы из master ? |
21 сен 18, 10:23 [21681717] Ответить | Цитировать Сообщить модератору |
court Member Откуда: Сообщений: 2241 |
Petrashkevich, дык, 2-й параметр у OBJECT_NAME есть же OBJECT_NAME ( object_id [, database_id ] ) |
21 сен 18, 10:25 [21681725] Ответить | Цитировать Сообщить модератору |
AlanDenton Member [скрыт] Откуда: Сообщений: 1004 |
OBJECT_NAME(object_id, DB_ID('database')) |
21 сен 18, 10:27 [21681727] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47049 |
Так что зависит от версии. |
||
21 сен 18, 10:48 [21681757] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47049 |
На эту мысль наводит схема sys, которой не было как раз тогда, когда и параметра не было. ![]() |
||||
21 сен 18, 10:49 [21681759] Ответить | Цитировать Сообщить модератору |
Критик Member Откуда: Москва / Калуга Сообщений: 34729 Блог |
Сделайте еще один джойн с sys.objects в нужной вам базе |
22 сен 18, 11:33 [21682595] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |