Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
718 Member Откуда: Tashkent Сообщений: 319 |
есть таблица она связана с несколка таблицами как я могу посмотреть с какими именно таблицами и какими полями они связаны? |
14 фев 08, 09:10 [5287761] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
Что Вы называете словом "связаны"? |
14 фев 08, 09:12 [5287770] Ответить | Цитировать Сообщить модератору |
petsa Member Откуда: Сообщений: 1708 |
В Studio правой кнопкой на таблицу -> view dependencies. |
14 фев 08, 09:15 [5287783] Ответить | Цитировать Сообщить модератору |
Ken@t Member Откуда: 大地 Сообщений: 3264 |
ну и вопросы Вы задаёте, нельзя же так издеваться над человеком ... sp_depends ? |
||
14 фев 08, 09:15 [5287785] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
![]() Хорошо, что спросил. |
||||
14 фев 08, 09:17 [5287799] Ответить | Цитировать Сообщить модератору |
718 Member Откуда: Tashkent Сообщений: 319 |
спасибо болшое то что нужно |
||||
14 фев 08, 09:19 [5287809] Ответить | Цитировать Сообщить модератору |
Сергей Мишин Member Откуда: Сообщений: 376 |
интересно как sp_depends помогло Вам в этом-)) |
||||
14 фев 08, 09:39 [5287910] Ответить | Цитировать Сообщить модератору |
718 Member Откуда: Tashkent Сообщений: 319 |
лна не показывает с какими имено полями они связанны поспешил с ответом |
14 фев 08, 09:52 [5287980] Ответить | Цитировать Сообщить модератору |
718 Member Откуда: Tashkent Сообщений: 319 |
есть другое предложения? |
||||||
14 фев 08, 09:52 [5287984] Ответить | Цитировать Сообщить модератору |
Сергей Мишин Member Откуда: Сообщений: 376 |
sp_fkeys |
14 фев 08, 09:56 [5288017] Ответить | Цитировать Сообщить модератору |
petsa Member Откуда: Сообщений: 1708 |
попробуй так: select constraint_name, unique_constraint_name from INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS order by constraint_name Дальше уж можно определиться с таблицами и полями |
14 фев 08, 09:58 [5288036] Ответить | Цитировать Сообщить модератору |
718 Member Откуда: Tashkent Сообщений: 319 |
и что она выдаёт? пустые заголовки чтол? |
||
14 фев 08, 09:59 [5288039] Ответить | Цитировать Сообщить модератору |
Le Peace Member Откуда: Москва Сообщений: 8969 |
Когда что... |
||
14 фев 08, 10:00 [5288049] Ответить | Цитировать Сообщить модератору |
Сергей Мишин Member Откуда: Сообщений: 376 |
Если связь только в голове, а не через PK и FK, то да, пустые строки. Ещё лучше ответить на попрос iap, а то может о разных вещах говорим. |
||
14 фев 08, 10:05 [5288083] Ответить | Цитировать Сообщить модератору |
718 Member Откуда: Tashkent Сообщений: 319 |
ну нечто вроде этого или в надписях тоже сойдёть К сообщению приложен файл. Размер - 0Kb |
14 фев 08, 10:23 [5288222] Ответить | Цитировать Сообщить модератору |
Сергей Мишин Member Откуда: Сообщений: 376 |
наверно просмотр вчерашнего футбола действует и я что то не догоняю.... не может быть так всё просто... может ответ заключается в кнопке [SQL] в левом верхнем углу-) а может имеется в виду диаграммы? |
14 фев 08, 10:31 [5288314] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
DECLARE @SCHEMA_NAME sysname,@TABLE_NAME sysname; SELECT @SCHEMA_NAME=N'dbo',@TABLE_NAME=N'ИмяТаблицы'; SELECT CAST(QUOTENAME(FK.TABLE_CATALOG)+'.'+QUOTENAME(FK.TABLE_SCHEMA)+'.'+QUOTENAME(FK.TABLE_NAME)+'.'+QUOTENAME(FK.COLUMN_NAME) AS NVARCHAR(530))[Колонка], CAST(QUOTENAME(PK.TABLE_CATALOG)+'.'+QUOTENAME(PK.TABLE_SCHEMA)+'.'+QUOTENAME(PK.TABLE_NAME)+'.'+QUOTENAME(PK.COLUMN_NAME) AS NVARCHAR(530))[ссылается на] FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE PK JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C ON PK.CONSTRAINT_CATALOG=C.UNIQUE_CONSTRAINT_CATALOG AND PK.CONSTRAINT_SCHEMA=C.UNIQUE_CONSTRAINT_SCHEMA AND PK.CONSTRAINT_NAME=C.UNIQUE_CONSTRAINT_NAME JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE FK ON C.CONSTRAINT_CATALOG=PK.CONSTRAINT_CATALOG AND C.CONSTRAINT_SCHEMA=FK.CONSTRAINT_SCHEMA AND C.CONSTRAINT_NAME=FK.CONSTRAINT_NAME AND PK.ORDINAL_POSITION=FK.ORDINAL_POSITION WHERE PK.TABLE_CATALOG=DB_NAME() AND PK.TABLE_SCHEMA=@SCHEMA_NAME AND PK.TABLE_NAME=@TABLE_NAME OR FK.TABLE_CATALOG=DB_NAME() AND FK.TABLE_SCHEMA=@SCHEMA_NAME AND FK.TABLE_NAME=@TABLE_NAME ORDER BY PK.CONSTRAINT_NAME,FK.CONSTRAINT_NAME,PK.ORDINAL_POSITION;? |
14 фев 08, 10:39 [5288412] Ответить | Цитировать Сообщить модератору |
Uladzimir_Hul Member Откуда: Минск Сообщений: 23 |
/* Покажет все таблицу по уровням зависимости в базе*/ DECLARE @Lev int SET @Lev = 1 /* Bce таблицы верхнего уровня */ SELECT @Lev AS LEV, TT.TABLE_NAME, CC.CONSTRAINT_NAME INTO #TmpTab FROM INFORMATION_SCHEMA.TABLES TT LEFT OUTER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS CC ON CC.TABLE_NAME = TT.TABLE_NAME AND CC.CONSTRAINT_TYPE = 'PRIMARY KEY' WHERE TT.TABLE_TYPE = 'BASE TABLE' AND TT.TABLE_NAME NOT LIKE 'sys%' AND TT.TABLE_NAME NOT LIKE 'dtprop%' AND NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC WHERE TC.TABLE_NAME = TT.TABLE_NAME AND TC.CONSTRAINT_TYPE = 'FOREIGN KEY') WHILE @@ROWCOUNT > 0 AND @Lev < 99 BEGIN SET @Lev = @Lev + 1 /* Все таблицы которые имеют набор 'FOREIGN KEY', где они все ссылаются на ранее вставленые записи */ INSERT INTO #TmpTab(LEV, TABLE_NAME, CONSTRAINT_NAME) SELECT @Lev AS LEV, TABLE_NAME, CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS TT WHERE TT.CONSTRAINT_TYPE = 'PRIMARY KEY' AND TT.TABLE_NAME NOT LIKE 'sys%' AND TT.TABLE_NAME NOT LIKE 'dtprop%' AND TABLE_NAME NOT IN (SELECT TABLE_NAME FROM #TmpTab ) AND NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS LT INNER JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC ON LT.CONSTRAINT_NAME = RC.CONSTRAINT_NAME AND NOT EXISTS (SELECT CONSTRAINT_NAME FROM #TmpTab TM WHERE RC.UNIQUE_CONSTRAINT_NAME = TM.CONSTRAINT_NAME) --UNIQUE_CONSTRAINT_NAME NOT IN (SELECT CONSTRAINT_NAME FROM #TmpTab ) WHERE TT.TABLE_NAME = LT.TABLE_NAME AND LT.CONSTRAINT_TYPE = 'FOREIGN KEY') END /* Таблицы попавшие в петлю или невошедшие в список по другим причинам */ INSERT INTO #TmpTab(LEV, TABLE_NAME, CONSTRAINT_NAME) SELECT 100, TT.TABLE_NAME, '' FROM INFORMATION_SCHEMA.TABLES TT WHERE TT.TABLE_TYPE = 'BASE TABLE' AND TT.TABLE_NAME NOT LIKE 'sys%' AND TT.TABLE_NAME NOT LIKE 'dtprop%' AND NOT EXISTS( SELECT 1 FROM #TmpTab WHERE TABLE_NAME = TT.TABLE_NAME) SELECT * FROM #TmpTab ORDER BY LEV, TABLE_NAME DROP TABLE #TmpTab |
14 фев 08, 11:37 [5288925] Ответить | Цитировать Сообщить модератору |
DENIS_CHEL Member Откуда: Сообщений: 23097 |
DECLARE @table_name VarChar(255) SET @table_name='Нужная_таблица' SELECT CCU.TABLE_NAME,CCU.COLUMN_NAME,CCU1.TABLE_NAME,CCU1.COLUMN_NAME FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS CCU LEFT OUTER JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC ON CCU.CONSTRAINT_NAME = RC.CONSTRAINT_NAME LEFT OUTER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE CCU1 ON CCU1.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME WHERE CCU.TABLE_NAME=@table_name AND CCU.CONSTRAINT_NAME IN (SELECT TC.CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC WHERE TC.CONSTRAINT_TYPE='FOREIGN KEY')Сегодня после обеда возникла та же задача, но поему я где-то туплю... |
14 фев 08, 11:43 [5288984] Ответить | Цитировать Сообщить модератору |
gusakyur Member Откуда: Сообщений: 2 |
Я себе сделал View на основе запроса. И фильтрую по нужным полям когда следуетSELECT C.TABLE_NAME FK_TABLE , C.COLUMN_NAME FK_COLUMN, D.TABLE_NAME PK_TABLE , D.COLUMN_NAME PK_COLUMN, D.CONSTRAINT_NAME pCONSTRAINT_NAME FROM ( SELECT B.TABLE_NAME , COLUMN_NAME ,B.CONSTRAINT_NAME FROM SYS.USER_CONS_COLUMNS B ,SYS.USER_CONSTRAINTS A WHERE A.CONSTRAINT_NAME = B.CONSTRAINT_NAME AND A.CONSTRAINT_TYPE = 'R' ) C, ( SELECT b.TABLE_NAME, COLUMN_NAME , A.CONSTRAINT_NAME FROM SYS.USER_CONS_COLUMNS B ,SYS.USER_CONSTRAINTS A WHERE B.CONSTRAINT_NAME = A.R_CONSTRAINT_NAME ) D WHERE C.CONSTRAINT_NAME = D.CONSTRAINT_NAME ) |
14 фев 08, 16:36 [5291974] Ответить | Цитировать Сообщить модератору |
ovsps1 Member Откуда: Сообщений: 87 |
Попробовал скрипт, предложенный Vladzimir_Nul, Все ништяк. Но не отбираются констрайны типа foreign_key. Почему ? Мне нужны именно они Вот этот скрипт : DECLARE @Lev int SET @Lev = 1 /* Bce таблицы верхнего уровня */ SELECT @Lev AS LEV, TT.TABLE_NAME, CC.CONSTRAINT_NAME INTO #TmpTab FROM INFORMATION_SCHEMA.TABLES TT LEFT OUTER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS CC ON CC.TABLE_NAME = TT.TABLE_NAME AND CC.CONSTRAINT_TYPE = 'PRIMARY KEY' WHERE TT.TABLE_TYPE = 'BASE TABLE' AND TT.TABLE_NAME NOT LIKE 'sys%' AND TT.TABLE_NAME NOT LIKE 'dtprop%' AND NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC WHERE TC.TABLE_NAME = TT.TABLE_NAME AND TC.CONSTRAINT_TYPE = 'FOREIGN KEY') WHILE @@ROWCOUNT > 0 AND @Lev < 99 BEGIN SET @Lev = @Lev + 1 /* Все таблицы которые имеют набор 'FOREIGN KEY', где они все ссылаются на ранее вставленые записи */ INSERT INTO #TmpTab(LEV, TABLE_NAME, CONSTRAINT_NAME) SELECT @Lev AS LEV, TABLE_NAME, CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS TT WHERE TT.CONSTRAINT_TYPE = 'PRIMARY KEY' AND TT.TABLE_NAME NOT LIKE 'sys%' AND TT.TABLE_NAME NOT LIKE 'dtprop%' AND TABLE_NAME NOT IN (SELECT TABLE_NAME FROM #TmpTab ) AND NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS LT INNER JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC ON LT.CONSTRAINT_NAME = RC.CONSTRAINT_NAME AND NOT EXISTS (SELECT CONSTRAINT_NAME FROM #TmpTab TM WHERE RC.UNIQUE_CONSTRAINT_NAME = TM.CONSTRAINT_NAME) --UNIQUE_CONSTRAINT_NAME NOT IN (SELECT CONSTRAINT_NAME FROM #TmpTab ) WHERE TT.TABLE_NAME = LT.TABLE_NAME AND LT.CONSTRAINT_TYPE = 'FOREIGN KEY') END /* Таблицы попавшие в петлю или невошедшие в список по другим причинам */ INSERT INTO #TmpTab(LEV, TABLE_NAME, CONSTRAINT_NAME) SELECT 100, TT.TABLE_NAME, '' FROM INFORMATION_SCHEMA.TABLES TT WHERE TT.TABLE_TYPE = 'BASE TABLE' AND TT.TABLE_NAME NOT LIKE 'sys%' AND TT.TABLE_NAME NOT LIKE 'dtprop%' AND NOT EXISTS( SELECT 1 FROM #TmpTab WHERE TABLE_NAME = TT.TABLE_NAME) SELECT * FROM #TmpTab ORDER BY LEV, TABLE_NAME DROP TABLE #TmpTab |
22 фев 08, 10:21 [5326647] Ответить | Цитировать Сообщить модератору |
Между сообщениями интервал более 1 года. |
кириллk Member Откуда: Сообщений: 1058 |
спасибо |
||
5 июн 15, 13:43 [17735599] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |