powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Поиск по справочникам БД
8 сообщений из 8, страница 1 из 1
Поиск по справочникам БД
    #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
Поиск по справочникам БД
    #39948134
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SHKoder,

Сделайте вспомогательную таблицу -- Схема, таблица, колонка, guid (значение). Она как бы свяжется со всеми и будет как зацепка для поиска совпадающих ключей.
...
Рейтинг: 0 / 0
Поиск по справочникам БД
    #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
Поиск по справочникам БД
    #39948228
SHKoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

к сожалению, не помогло
...
Рейтинг: 0 / 0
Поиск по справочникам БД
    #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
Поиск по справочникам БД
    #39948235
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для решения задач по 1С лучше использовать правильный раздел форума. Там быстрее ссылку на правильный гайд по велосипедам дадут.
...
Рейтинг: 0 / 0
Поиск по справочникам БД
    #39948281
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ахаха.... Опять 1С
...
Рейтинг: 0 / 0
Поиск по справочникам БД
    #39948312
SHKoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевич,

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


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