Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Поиск по справочникам БД / 8 сообщений из 8, страница 1 из 1
16.04.2020, 17:18
    #39948128
SHKoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск по справочникам БД
Как наследие досталась БД с огромнейшим количеством справочников.
Таблиц в этой БД вываливается приближаясь к 10 тыс.

Но я допиливаю конкретный процесс...

Уткнулся в таблицу, в которой нет ни внешних ключей, ни конестринтов, ни функций, ни процедур, даже не за что зацепиться по зависомостям.

Однако, у меня есть таблица с полями и нужно понять, куда и на что ссылается одно поле таблицы.

примечательно, что во всей БД идентификаторы как GUID. Делаю вывод, что все идентификаторы между собой не пересекаются совсем.

Очевидно, что если я конкретное значение из своей БД буду искать по справочникам, я определенно наткнусь на конкретный справочник, где я должен найти запись в справочнике с точно таким же идентификатором.

Можно ли как-то выполнить поиск по всем таблицам, столбцам, за исключением моей ,чтобы найти значение, куда ссылается моя таблица?

Или это не реально?

Код: plaintext
Microsoft SQL Server 2012 (SP4) (KB4018073) - 11.0.7001.0 (X64)   Aug 15 2017 10:23:29   Copyright (c) Microsoft Corporation  Standard Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor) 

Спасибо
...
Рейтинг: 0 / 0
16.04.2020, 17:27
    #39948134
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск по справочникам БД
SHKoder,

Сделайте вспомогательную таблицу -- Схема, таблица, колонка, guid (значение). Она как бы свяжется со всеми и будет как зацепка для поиска совпадающих ключей.
...
Рейтинг: 0 / 0
16.04.2020, 18:06
    #39948166
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск по справочникам БД
SHKoder
Можно ли как-то выполнить поиск по всем таблицам, столбцам, за исключением моей ,чтобы найти значение, куда ссылается моя таблица?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
declare
 @my_table_name sysname = ...,
 @column_name sysname = ...;

declare @s varchar(max);

select
 @s = t.x.value('.', 'varchar(max)')
from
 (
  select
   'select '  + quotename(a.t, '''') + ', ' + quotename(a.c, '''') + ', ' + 'cast(s.' + quotename(c.name) + ' as varchar(36)) from ' 
+ a.t + ' s where exists(select 1 from ' + @my_table_name + ' where ' + @column_name + ' = s.' +  quotename(c.name) + ');'
  from
   sys.columns c cross apply
   (select quotename(c.name), quotename(object_schema_name(c.object_id)) + '.' + quotename(object_name(c.object_id))) a(c, t)
  where
   a.t <> @my_table_name and
   objectproperty(c.object_id, 'IsUserTable') = 1 and
   type_name(c.system_type_id) = 'uniqueidentifier'
  for xml path(''), type
 ) t(x);

declare @result table (t sysname, с sysname, v uniqueidentifier);

insert into @result
exec(@s);

select * from @result;
...
Рейтинг: 0 / 0
16.04.2020, 22:21
    #39948228
SHKoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск по справочникам БД
invm,

к сожалению, не помогло
...
Рейтинг: 0 / 0
16.04.2020, 23:57
    #39948232
SHKoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск по справочникам БД
Может я сделал не очень изящно, но на скорую руку пойдет


Код: sql
1.
2.
3.
4.
5.
6.
select 'select _IDRRef, '''+o.name+''' as dd from '+ o.name+' where _IDRRef = 0x80D61CC1DEEA434311E67E581F1417C1 union all' from sys.objects o
join sys.columns c
on o.object_id = c.object_id
where o.type = 'U' 
and o.type_desc = 'USER_TABLE'
and c.name = '_IDRRef'



И я нашел таблицу, в которой родительский справочник ссылается на мою запись.

Всем добра!
...
Рейтинг: 0 / 0
17.04.2020, 00:15
    #39948235
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск по справочникам БД
Для решения задач по 1С лучше использовать правильный раздел форума. Там быстрее ссылку на правильный гайд по велосипедам дадут.
...
Рейтинг: 0 / 0
17.04.2020, 09:10
    #39948281
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск по справочникам БД
Ахаха.... Опять 1С
...
Рейтинг: 0 / 0
17.04.2020, 11:29
    #39948312
SHKoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск по справочникам БД
Гавриленко Сергей Алексеевич,

Это я согласен, но мне нужно было найти не средствами 1С, а на уровне SQL
Но в принципе я согласен, однако эксепшин
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Поиск по справочникам БД / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]