2013-03-08 2 views
5

SQL Server 2008 데이터베이스의 테이블 열에 대한 모든 참조를 찾는 방법이 있습니까? 열이 참조되는 다른 테이블이나 저장 프로 시저 또는 뷰를 알아야합니다. 당신은 이름 (예 : 테이블, 열, 트리거) 데이터베이스 개체를 발견해야하는 경우SQL Server 2008의 테이블 열에 대한 모든 참조 찾기

답변

4

-이 수행 SQL Search라는 무료 레드 게이트 도구를 보라 - 그것은 문자열의 모든 종류의 전체 데이터베이스를 검색 (에스).

enter image description here

enter image description here

그것은 훌륭한 어떤 DBA 또는 데이터베이스 개발자 도구를 반드시이-이 있어요 - 내가 이미 언급 했느냐가 무료 사용의 모든 종류에 사용할 절대적이다 ??

2

ApexSQL Search과 같은 도구를 사용해 볼 수 있습니다. 객체 이름을 검색하지만 종속 테이블/뷰의 열 이름이 다르게 지정되어 있더라도 종속 객체 목록을 검색합니다.

다른 해결책은 시스템보기 및/또는 시스템 기능을 사용하여 필요한 데이터를 얻는 것입니다. 필요한 데이터를 얻으려면 sys.foreign_keys, sys.objects, sys.all_columns을 사용하는 것이 좋습니다.

2

테이블 스키마 변경으로 인한 영향을 분석해야 할 때 분석을 위해 다음 단계를 사용합니다. 이것은 완전하지는 않지만 도움이 될 수 있습니다!

  1. Sp_help [TableName] : 이것은 모든 FOREIGN KEY 제약 조건 참조를 찾는 데 도움이됩니다. 이 테이블을 외래 키로 참조하는 다른 모든 테이블을 찾을 수도 있습니다.
  2. Sp_depends [TableName] :이 테이블을 사용하여 프로 시저, 함수 및 뷰를 찾는 데 도움이됩니다.
  3. 브 루트 포스 방법 : 나는 SQL 채용, 모듈에서 특정 키워드를 확인하기 위해 다른 시스템 테이블과 함수를 사용하는 등 참고

: sp_help는 [TABLENAME] Sp_depends [TABLENAME]

select top 10 * from msdb.dbo.sysjobsteps where command like '%%' 

SELECT top 10 Name, OBJECT_DEFINITION(OBJECT_ID) 
FROM sys.procedures 
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%%' 

SELECT top 10 OBJECT_NAME(object_id), * 
FROM sys.sql_modules 
WHERE definition LIKE '%%' 
+0

sp_xxx는 일반적으로 sys.xxx 함수를 사용하도록 권장되지 않습니다. 이 경우 sys.dm_sql_referencing_entities(). 아직도 sp_depends가 올바른 방향으로 나를 가리켰다. 그래서 +1. –

+0

내가 생각하는 비슷한 SQL 문 (트리거?)은 다음과 같습니다. http://stackoverflow.com/a/30432937/1991614 foriegn 키를 찾았는지 확실하지 않습니다. – bitcoder