SQL Server 버전 - 2008 R2받기 SQL 서버 데이터베이스 간 종속성
나는 유지 보수 인수의 목적으로하는 DMS 솔루션을 평가하는 작업입니다. 원래의 솔루션에는 제조업체 관련 데이터가있는 하나의 중앙 데이터베이스가 있습니다. 또한 각 딜러마다 하나의 데이터베이스가 있으므로 많은 데이터베이스 종속성이 있습니다.
문제점 :
- 없음 DB 문서
- 없음 코드는 힙의
- 많은
- 표준 객체의 명명 규칙
- 중앙 DB는 460+ 테이블과 900+ sprocs가있다을 댓글 없음 , 기타 개체
- 각 딜러 DB는 370+ 테이블과 2350+ SProcs를 추가로 포함합니다 다른 객체 첫 번째 단계로
에 n은 나는 크로스 데이터베이스 종속성을 포함한 객체 종속성을 이해하는 것이 중요하다위한 DB의 전체 청소를 추천하고있다. 레드 게이트 솔루션을 사용해 보았지만 출력량이 너무 많습니다. 필자가 원하는 것은 종속성이없는 데이터베이스의 개체 목록입니다. 다른 개체에 의존하지도 않고 종속 된 개체도 없습니다. - 종속성 -되는 I는 각 DB에서 설정이 결과를 삽입합니다 나는 테이블을 생성한다
SELECT
DB_NAME() referencing_database_name,
OBJECT_NAME (referencing_id) referencing_entity_name,
ISNULL(referenced_schema_name,'dbo') referenced_schema_name,
referenced_entity_name,
ao.type_desc referenced_entity_type,
ISNULL(referenced_database_name,DB_NAME()) referenced_database_name
FROM sys.sql_expression_dependencies sed
JOIN sys.all_objects ao
ON sed.referenced_entity_name = ao.name
: 여기
내가 종속성 목록을 가져 오는 데 사용했던 스크립트입니다. 다음 단계로 데이터베이스의 모든 개체 목록을 포함하는 AllObjects라는 또 다른 테이블을 만들 것입니다. 다음은이 작업을 수행 할 수있는 스크립트입니다 : 이제SELECT
DB_NAME() DBName,
name,
type_desc
FROM sys.all_objects
WHERE type_desc IN
(
'VIEW',
'SQL_TABLE_VALUED_FUNCTION',
'SQL_STORED_PROCEDURE',
'SQL_INLINE_TABLE_VALUED_FUNCTION',
'USER_TABLE',
'SQL_SCALAR_FUNCTION'
)
, 내가 찾고 있어요 개체의 목록을 제공해야하는 종속 테이블의 referenced_entity_name 컬럼에 표시되지 않습니다이 테이블에서 이름의 목록입니다.
이제SELECT
AO.DBName,
AO.name,
AO.type_desc
FROM AllObjects AO
LEFT OUTER JOIN Dependencies D ON
D.referenced_database_name = AO.DBName AND
D.referenced_entity_name = AO.name AND
D.referenced_entity_type = AO.type_desc
WHERE
D.referenced_database_name IS NULL AND
D.referenced_entity_name IS NULL AND
D.referenced_entity_type IS NULL
질문은 :
- 일부 개체 종속성은 출력에서 누락 된 것으로 보인다. 나는 가 무엇입니까?
- 내 결과가 정확한지 어떻게 확인합니까?
- 다른 방법이 있나요? 결과와 다시 비교할 수 있습니까? 사전에
감사합니다,
주권
입니까? –
하지만 type = 'U'는 사용자 테이블 만 제공합니다. 맞습니까? 또한 다른 사용자가 만든 개체를 고려해야합니다. – Raj
죄송합니다. "and is_ms_shipped = 0"이 (가) 두 번째 쿼리에 더 적합 할 수 있습니다. 이것은 시스템 특정 객체를 제외해야합니다. –