각 고객의 데이터베이스에는 자체 데이터가 있습니다. 각 데이터베이스는 정확히 동일한 구조를 가져야합니다. 데이터 유형이 변경되었지만 테이블 이름과 열 이름이 같지만 데이터 유형이 다른 열은 어떻게 찾을 수 있습니까? 이 일을 할 수있는 SQL 쿼리가 있습니까?동등한 데이터베이스에서 서로 다른 유형의 열 찾기
답변
을 사용하는 스키마 내보내기 :
SELECT
TableName = t.name,
ColumnName = c.name,
TypeName = ty.name,
TableName2 = t2.name,
ColumnName2 = c2.name,
TypeName2 = ty2.name
FROM DB1.sys.columns c
INNER JOIN DB1.sys.tables t ON c.object_id = t.object_id
INNER JOIN DB1.sys.types ty ON c.system_type_id = ty.system_type_id
INNER JOIN DB2.sys.tables t2 ON t.name = t2.Name
INNER JOIN DB2.sys.columns c2 ON c2.object_id = t2.object_id AND c.name = c2.name
INNER JOIN DB2.sys.types ty2 ON c2.system_type_id = ty2.system_type_id
WHERE
c.system_type_id <> c2.system_type_id
을 물론 sys.columns
카탈로그 뷰에서 더 많은 열을 추가 할 수 있습니다. 예 : 문자열 기반 유형에 대한 precision
및 DECIMAL(18,2)
같은 유형의 scale
, 또는 max_length
(등 VARCHAR(50)
등) -
Thanks @marc_s! 한 번만 데이터베이스 이름을 입력 할 수있는 방법이 있습니까? –
@MichaelSandler : 아니오 나는 그렇게 생각하지 않는다. 여기에 관련된 모든 카탈로그 뷰에 대해 완전한 db.schema.objectname 표기법이 필요하다 ... –
글쎄, 내가 점검하고 싶은 서버에 40 개의 데이터베이스가있다. 유형 차이점에 대해서는 다음과 같이 직접 작성하려고합니다 :-) –
Atlantis SchemaInspector은 이러한 목적에 적합한 도구입니다.
편집 : SQL 쿼리를 사용하려면 한 쿼리에서 두 데이터베이스를 모두 사용해야합니다. 데이터베이스가 하나의 SQL Server 인스턴스에 있어야합니다. 그렇지 않으면 SQL Server 인스턴스가 링크 된 서버로 사용 가능해야합니다.
검색어 :
SELECT
*
/* source database >>> */
FROM [SourceDatabase].[sys].[schemas] AS S_A
INNER JOIN [SourceDatabase].[sys].[objects] AS O_A
ON [O_A].[schema_id] = [S_A].[schema_id]
INNER JOIN [SourceDatabase].[sys].[columns] AS C_A
ON [C_A].[object_id] = [O_A].[object_id]
/* <<< source database */
/* target database >>> */
LEFT JOIN [TargetDatabase].[sys].[schemas] AS S_B
ON [S_B].[name] = [S_A].[name]
LEFT JOIN [TargetDatabase].[sys].[objects] AS O_B
ON [O_B].[schema_id] = [S_B].[schema_id]
AND [O_B].[name] = [O_A].[name]
LEFT JOIN [TargetDatabase].[sys].[columns] AS C_B
ON [C_B].[object_id] = [O_B].[object_id]
AND [C_B].[name] = [C_A].[name]
/* <<< target database */
WHERE [C_B].[column_id] IS NULL
OR [C_B].[system_type_id] <> [C_A].[system_type_id]
SQL 쿼리를 원했습니다 ... –
하는 스키마의 스냅 샷을 가지고 REDGATE's SQL Compare 유틸리티를 사용합니다.
또는 텍스트와 두 데이터베이스가 같은 서버로 복원 할 수있는 경우의 차이를 결정하기 위해, 당신은 시스템 카탈로그 뷰의 두 세트를 비교할 수 있습니다 BeyondCompare
- 1. 다른 데이터베이스에서 열 선택
- 2. 서로 다른 두 가지 유형의 데이터베이스 조인
- 3. 동등한 지역에서 카운트 찾기
- 4. 같은 열의 같은 열 다른 열 찾기
- 5. 하나의 열에 서로 다른 유형의 두 열을 표시하는 방법은 무엇입니까?
- 6. 찾기 ('모든') 두 개의 서로 다른 쿼리
- 7. 다른 유형의 두 목록에있는 항목의 동일성 찾기
- 8. Java : 서로 다른 유형의 배열을 다른 배열로 정렬
- 9. 다른 유형의 쿼리에 대해 서로 다른 사용자를 사용하는 것이 좋습니다.
- 10. SQL 수 두 개의 서로 다른 열
- 11. LINQ 서로 다른 열 수 및 그룹화
- 12. 데이터베이스에서 GUID 찾기
- 13. 한 유형의 조각을 동등한 유형의 조각으로 변환하는 우아한 방법?
- 14. 서로 다른 데이터 유형의 sizeof (datatype_pointer)/sizeof (datatype) 값이 서로 다른 이유는 무엇입니까?
- 15. 동일한 유형의 컨트롤 찾기
- 16. SQL Server 데이터베이스의 모든 테이블에서 특정 유형의 열 찾기
- 17. SQLDescribeCol이 서로 다른 두 컴퓨터에서 다른 열 크기를 제공합니까?
- 18. 서로 다른 유형의 객체를 하나의 배열에 넣을 수 있습니까?
- 19. 메서드에서 서로 다른 두 가지 유형의 값을 반환하는 방법은 무엇입니까?
- 20. 두 개의 서로 다른 유형의 목록 정렬 및 연결
- 21. 서로 다른 유형의 두 표준 목록 결합 : 가능합니까?
- 22. 기능 입력 할 수 있습니다 서로 다른 유형의
- 23. 두 개의 서로 다른 유형의 연관을 레일에 동일하게 두 테이블에
- 24. 데이터베이스에서 문자의 인스턴스 찾기
- 25. 크리스탈 보고서 두 개의 서로 다른 데이터베이스에서 데이터 선택
- 26. 데이터베이스에서 서로 다른 잠금 방식의 영향에 대한 세부 정보?
- 27. 서로 다른 데이터베이스에서 두 개의 SQLite 테이블 iphone ios
- 28. 복잡한 데이터베이스에서 3 열 선택
- 29. 는 서로 다른 속성
- 30. unix 스크립트 명령과 동등한 Windows 찾기
는 데이터베이스 모두가 하나의 골든 이미지에서 시작 했 필요에 따라이 기본 쿼리 (복원 예를 들어, 백업 파일)을 적용 , 또는 스크립트로 작성된 것인가? –
@Damien_The_Unbeliever 잘 모르겠습니다. 후불입니다. –