특정 열이 데이터베이스의 어느 테이블에 있는지 알고 싶었습니다. 그래서 sys.columns를 where 조건과 함께 사용했습니다. 그러면 object_id가 생겼습니다.sys.columns는 sys.tables에없는 세부 사항을 보여줍니다.
select * from sys.columns where name like 'mycol%'
다음 sys.tables에서와 같이 위의 쿼리에서받은 object_id에서이 테이블의 실제 이름을 찾습니다. 그러나 select 문은 빈 결과를 반환합니다. 이 테이블이 데이터베이스에 존재하지 않는다는 것을 의미합니까? 그렇다면 sys.columns가 찾고있는 열이이 object_id가있는 테이블에 있다고 어떻게 말합니까?
select * from sys.tables where object_id='584895884'
나는 그것이 테이블 없다는 것을 의미하지만, 2014 년
고맙습니다. 작동합니다. sys.tables는 U/USER_TABLE 만 포함하는 sys.objects의 하위 집합과 같습니까? . sys.objects에는 위에서 나열한 많은 유형이 포함되어 있습니다. – IAMTubby
@IAMTubby 예, 'sys.views','sys.sql_modules' (프로 시저, 함수, 뷰, 아마도 트리거) 등 많은 객체 유형별 시스템 뷰가 있습니다. 그러나 이것들은 'sys.objects'의 필터링 된 뷰; 대부분/대부분은 해당 오브젝트 유형에 특정한 추가 또는 다른 필드를 포함합니다. 모든 옵션에 대해 'SELECT * FROM sys.system_views;'의 결과를 살펴보십시오. –