2009-07-03 2 views
1

몇 가지 질문이 있습니다.SQL SERVER 시스템 개체에 대한 질문

1) 마스터/모델/MSBD 등에서 시스템 테이블 (sysobjects와 같은)을 볼 수없는 이유는 무엇입니까? 그러나 우리는

을 쿼리 할 수 ​​있습니다. 우리는 기본적으로보기를 쿼리합니까?

은 유용한 정보를 보유하고 있기 때문에?

"SELECT * FROM sysobjects"와 같습니다. 기본적으로 일부보기를 쿼리하고 있습니까?

2) 왜 시스템 테이블에 트리거를 추가 할 수 없습니까? 사전에

덕분에

+1

어떤 버전의 SQL Server입니까? "볼 수 없다"는 것은 어떤 의미입니까? 어디에? –

답변

2

SQL 서버 2008 시스템 테이블 (http://msdn.microsoft.com/en-us/library/ms179932.aspx)는 읽기 전용 뷰로 구현되었습니다. 이 시스템 테이블의 데이터로 직접 작업 할 수는 없습니다. 카탈로그 뷰를 사용하여 SQL Server 메타 데이터에 액세스 할 수 있습니다. 이 링크를 확인하십시오. http://msdn.microsoft.com/en-us/library/ms174365.aspx

시스템 테이블에서 트리거를 만들 수는 있지만 일반적으로 권장되지 않습니다. 이 http://www.sql-server-performance.com/faq/trigger_system_table_p1.aspx

환호 SQL 2005

1

카탈로그 뷰가 Resource Database (mssqlsystemresource)에 선언 뷰로 구현을 확인하시기 바랍니다. 특별한 마술로 인해 모든 데이터베이스에 존재하는 것처럼 보입니다.

언제든지 실행 계획을 사용하여 이러한 뷰에서 데이터를 가져 오는 실제 테이블을 볼 수 있습니다. 기본 테이블은 DAC 연결로 연결할 때 액세스 할 수 있습니다. 어떤 식 으로든 시스템 테이블을 수정하면 데이터베이스가 표시되고 데이터베이스가 시작될 때마다 메시지가 기록됩니다. 수정 된 데이터베이스는 MS에서 지원하지 않으므로 문제가 발생하면 지원을 요청할 수 없습니다.