데이터베이스의 모든 nvarchar 열을 varchar로 변경하는 가장 간단한 방법은 무엇입니까?모든 nvarchar 열을 varchar로 변경하는 방법은 무엇입니까?
저는 개인적으로 nvarchar를 선호하지만 데이터 아치가 varchar를 사용해야한다고 지정했습니다.
데이터베이스의 모든 nvarchar 열을 varchar로 변경하는 가장 간단한 방법은 무엇입니까?모든 nvarchar 열을 varchar로 변경하는 방법은 무엇입니까?
저는 개인적으로 nvarchar를 선호하지만 데이터 아치가 varchar를 사용해야한다고 지정했습니다.
, 얻을 당신은 시작 :
Select 'Alter Table [' + TABLE_SCHEMA + '].[' + TABLE_NAME + '] Alter Column [' + COLUMN_NAME + '] VarChar(' + CAST(CHARACTER_MAXIMUM_LENGTH As VARCHAR) + ')'
From INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE = 'NVARCHAR'
이것은 (당신을 위해 필요한 모든 ALTER 문을 생성합니다 잘라 내기, 붙여 넣기, 실행).
이는 아무런 제약 사항도 고려하지 않음을 유의하십시오. niggly sysdiagrams MAX를 처리하고 배제하기 위해
데이터 아치에게 요청합니까?
또는
는, NVARCHAR 년대 후 변경, 시스템에있는 모든 개체의 스크립트를 생성 새 데이터베이스를 작성하고 이전에서로 데이터를 가져옵니다.또는
는 기존 데이터베이스를 업데이트하는 스크립트를 변경 작성합니다.는 "데이터가 그것을 할 아치 요청". –
varchar로 변환되지 않는 데이터가 있는지 먼저 확인하는 것을 잊지 마십시오. 데이터 아키텍트가 이것을 원한다면 스크립트를 작성하는 것이 그 사람의 몫입니다. – HLGEM
: 회지지
SELECT
'
ALTER TABLE [' + TABLE_SCHEMA + '].[' + TABLE_NAME + ']
ALTER COLUMN [' + COLUMN_NAME + ']
VARCHAR(' +
(CASE WHEN CHARACTER_MAXIMUM_LENGTH = -1
THEN 'MAX'
ELSE CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR)
END)
+ ')
'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE = 'NVARCHAR' AND TABLE_NAME <> 'SYSDIAGRAMS'
+1 완벽합니다. 나는 똑같은 해결책을 가졌지 만, 아주 아주 못생긴 복잡한 쿼리를 가지고있다 ... – Jonathan
+1 굉장한 기술 :-) –
@Jonathan 어떻게이 코드에서 "필요한 모든 alter 문을 생성한다"를 사용 하는가? SSQL Management Studio를 사용하여 "잘라 내기, 붙여 넣기, 실행"할 수 있습니까? –