[SQL] SQL Server 데이터베이스 정렬 변경
SQLSQL Server 데이터베이스 정렬 변경
나는 SQL Server 데이터베이스의 데이터 정렬을 변경하는 요청이있다 :
그러나 나는이 이상한 오류가 발생합니다 :
독일 오류 메시지 죄송합니다. 나는 언어를 영어로 전환하지만, 여기에 번역이하는 방법을 모른다 :
좀 더 그런 오류의 톤을 얻었다.
해결법
-
==============================
1.당신은 당신의 전망과 테이블 반환 함수에서 SCHEMABINDING 함께 삭제해야합니다. 이를 확인하려면 당신은 INFORMATION_SCHEMA 뷰를 조회 할 수 있습니다 :
당신은 당신의 전망과 테이블 반환 함수에서 SCHEMABINDING 함께 삭제해야합니다. 이를 확인하려면 당신은 INFORMATION_SCHEMA 뷰를 조회 할 수 있습니다 :
SELECT TABLE_SCHEMA, TABLE_NAME AS VIEW_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE VIEW_DEFINITION LIKE '%SCHEMABINDING%' SELECT ROUTINE_SCHEMA, ROUTINE_NAME FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_DEFINITION LIKE '%SCHEMABINDING%'
이 스크립트를 모든 컬럼의 정렬을 변경할 수 있습니다 :
DECLARE @collation nvarchar(128) DECLARE @commands table ([SQL] nvarchar(max)) DECLARE @cursor cursor DECLARE @sql nvarchar(max) SET @collation = 'SQL_Latin1_General_CP1_CI_AS' INSERT @commands ([SQL]) SELECT 'ALTER TABLE ' + QUOTENAME(c.TABLE_SCHEMA) +'.'+ QUOTENAME(c.TABLE_NAME) + ' ALTER COLUMN ' + QUOTENAME(c.COLUMN_NAME) + ' ' + c.DATA_TYPE + ISNULL('(' + LTRIM(STR(c.CHARACTER_MAXIMUM_LENGTH)) + ')', '') + ISNULL(' COLLATE ' + @collation, '') + ' ' + CASE c.IS_NULLABLE WHEN 'NO' THEN 'NOT ' ELSE '' END + 'NULL' FROM INFORMATION_SCHEMA.COLUMNS c INNER JOIN INFORMATION_SCHEMA.TABLES t ON t.TABLE_SCHEMA = c.TABLE_SCHEMA AND t.TABLE_NAME = c.TABLE_NAME WHERE t.TABLE_TYPE = 'BASE TABLE' AND c.COLLATION_NAME <> @collation SET @cursor = CURSOR FOR SELECT [SQL] FROM @commands OPEN @cursor FETCH NEXT FROM @cursor INTO @sql WHILE @@FETCH_STATUS = 0 BEGIN PRINT @sql EXEC (@sql) FETCH NEXT FROM @cursor INTO @sql END
-
==============================
2.다음은 클러스터 된 인덱스입니다 기본 키의 coulmns 될 것입니다. 데이터베이스의 데이터 정렬을 변경하는 경우 클러스터 된 인덱스의 레코드는 모든 테이블이 다시 정렬 될 필요가있을 것이다, 컬럼의 오름차순으로 저장됩니다.
다음은 클러스터 된 인덱스입니다 기본 키의 coulmns 될 것입니다. 데이터베이스의 데이터 정렬을 변경하는 경우 클러스터 된 인덱스의 레코드는 모든 테이블이 다시 정렬 될 필요가있을 것이다, 컬럼의 오름차순으로 저장됩니다.
-
==============================
3.이 경우에도 제거 스키마 바인딩은 도움이되지 않습니다
이 경우에도 제거 스키마 바인딩은 도움이되지 않습니다
데이터 정렬을 변경하면 KB 325335에 설명 된 단계를 필요
그것은 2000 주로 SQL Server에 적용되지만, 동일한 원리가 적용됩니다
from https://stackoverflow.com/questions/2938422/changing-sql-server-database-sorting by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 가능한 2012 SQL 서버에 SQL 서버 2014의 백업을 복원? (0) | 2020.07.02 |
---|---|
[SQL] 왜 VARCHAR (최대)를 사용하지? (0) | 2020.07.02 |
[SQL] 어떻게 데이터베이스에 다른 이름과 같은 스키마를 Excel 파일을 가져? (0) | 2020.07.02 |
[SQL] 문자열의 문자와 숫자의 수를 찾기 (0) | 2020.07.02 |
[SQL] MySQL의 문 안에 PHP 변수를 포함하는 방법 (0) | 2020.07.02 |