Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как можно посмотреть связанные таблицы  [new]
718
Member

Откуда: Tashkent
Сообщений: 319
есть таблица она связана с несколка таблицами как я могу посмотреть с какими именно таблицами и какими полями они связаны?
14 фев 08, 09:10    [5287761]     Ответить | Цитировать Сообщить модератору
 Re: как можно посмотреть связанные таблицы  [new]
iap
Member

Откуда: Москва
Сообщений: 47197
Что Вы называете словом "связаны"?
14 фев 08, 09:12    [5287770]     Ответить | Цитировать Сообщить модератору
 Re: как можно посмотреть связанные таблицы  [new]
petsa
Member

Откуда:
Сообщений: 1708
В Studio правой кнопкой на таблицу -> view dependencies.
14 фев 08, 09:15    [5287783]     Ответить | Цитировать Сообщить модератору
 Re: как можно посмотреть связанные таблицы  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
iap
Что Вы называете словом "связаны"?

ну и вопросы Вы задаёте, нельзя же так издеваться над человеком ...
sp_depends ?
14 фев 08, 09:15    [5287785]     Ответить | Цитировать Сообщить модератору
 Re: как можно посмотреть связанные таблицы  [new]
iap
Member

Откуда: Москва
Сообщений: 47197
Ken@t
iap
Что Вы называете словом "связаны"?

ну и вопросы Вы задаёте, нельзя же так издеваться над человеком ...
sp_depends ?
Дык, я-то думал, имеются в виду FOREIGN KEY, PRIMARY KEY, ...
Хорошо, что спросил.
14 фев 08, 09:17    [5287799]     Ответить | Цитировать Сообщить модератору
 Re: как можно посмотреть связанные таблицы  [new]
718
Member

Откуда: Tashkent
Сообщений: 319
Ken@t
iap
Что Вы называете словом "связаны"?

ну и вопросы Вы задаёте, нельзя же так издеваться над человеком ...
sp_depends ?



спасибо болшое то что нужно
14 фев 08, 09:19    [5287809]     Ответить | Цитировать Сообщить модератору
 Re: как можно посмотреть связанные таблицы  [new]
Сергей Мишин
Member

Откуда:
Сообщений: 376
автор
... какими именно таблицами и какими полями они связаны

автор
спасибо болшое то что нужно

интересно как sp_depends помогло Вам в этом-))
14 фев 08, 09:39    [5287910]     Ответить | Цитировать Сообщить модератору
 Re: как можно посмотреть связанные таблицы  [new]
718
Member

Откуда: Tashkent
Сообщений: 319
лна не показывает с какими имено полями они связанны
поспешил с ответом
14 фев 08, 09:52    [5287980]     Ответить | Цитировать Сообщить модератору
 Re: как можно посмотреть связанные таблицы  [new]
718
Member

Откуда: Tashkent
Сообщений: 319
Сергей Мишин
автор
... какими именно таблицами и какими полями они связаны

автор
спасибо болшое то что нужно

интересно как sp_depends помогло Вам в этом-))




есть другое предложения?
14 фев 08, 09:52    [5287984]     Ответить | Цитировать Сообщить модератору
 Re: как можно посмотреть связанные таблицы  [new]
Сергей Мишин
Member

Откуда:
Сообщений: 376
sp_fkeys
14 фев 08, 09:56    [5288017]     Ответить | Цитировать Сообщить модератору
 Re: как можно посмотреть связанные таблицы  [new]
petsa
Member

Откуда:
Сообщений: 1708
попробуй так:
select constraint_name, unique_constraint_name
from INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
order by constraint_name
Дальше уж можно определиться с таблицами и полями
14 фев 08, 09:58    [5288036]     Ответить | Цитировать Сообщить модератору
 Re: как можно посмотреть связанные таблицы  [new]
718
Member

Откуда: Tashkent
Сообщений: 319
Сергей Мишин
sp_fkeys



и что она выдаёт? пустые заголовки чтол?
14 фев 08, 09:59    [5288039]     Ответить | Цитировать Сообщить модератору
 Re: как можно посмотреть связанные таблицы  [new]
Le Peace
Member

Откуда: Москва
Сообщений: 8969
718

и что она выдаёт? пустые заголовки чтол?

Когда что...
14 фев 08, 10:00    [5288049]     Ответить | Цитировать Сообщить модератору
 Re: как можно посмотреть связанные таблицы  [new]
Сергей Мишин
Member

Откуда:
Сообщений: 376
718
и что она выдаёт? пустые заголовки чтол?

Если связь только в голове, а не через PK и FK, то да, пустые строки.
Ещё лучше ответить на попрос iap, а то может о разных вещах говорим.
14 фев 08, 10:05    [5288083]     Ответить | Цитировать Сообщить модератору
 Re: как можно посмотреть связанные таблицы  [new]
718
Member

Откуда: Tashkent
Сообщений: 319
ну нечто вроде этого или в надписях тоже сойдёть

К сообщению приложен файл. Размер - 0Kb
14 фев 08, 10:23    [5288222]     Ответить | Цитировать Сообщить модератору
 Re: как можно посмотреть связанные таблицы  [new]
Сергей Мишин
Member

Откуда:
Сообщений: 376
наверно просмотр вчерашнего футбола действует и я что то не догоняю.... не может быть так всё просто... может ответ заключается в кнопке [SQL] в левом верхнем углу-)
а может имеется в виду диаграммы?
14 фев 08, 10:31    [5288314]     Ответить | Цитировать Сообщить модератору
 Re: как можно посмотреть связанные таблицы  [new]
iap
Member

Откуда: Москва
Сообщений: 47197
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]     Ответить | Цитировать Сообщить модератору
 Re: как можно посмотреть связанные таблицы  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: как можно посмотреть связанные таблицы  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: как можно посмотреть связанные таблицы  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: как можно посмотреть связанные таблицы  [new]
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 года.
 Re: как можно посмотреть связанные таблицы  [new]
кириллk
Member

Откуда:
Сообщений: 1062
ovsps1
Попробовал скрипт, предложенный 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


спасибо
5 июн 15, 13:43    [17735599]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить