SQL Server Management Studio에서 테이블 편집 후 변경 사항 저장


265

이전에 SQL Server Management Studio에 저장된 (테이블에 데이터가 없음) 테이블에 변경 내용을 저장하려면 오류 메시지가 나타납니다.

변경 사항 저장은 허용되지 않습니다. 변경 한 내용은 다음 테이블을 삭제하고 다시 작성해야합니다. 다시 만들 수없는 테이블을 변경했거나 테이블을 다시 만들어야하는 변경 내용 저장 방지 옵션을 활성화했습니다.

테이블을 쉽게 편집 할 수없는 이유는 무엇입니까? 아니면 SQL Server Management Studio에서 편집 할 테이블을 다시 만들어야하는 일반적인 방법입니까? 이 "옵션 변경 저장 방지" 란 무엇입니까 ?



1
@Pang-이 질문이 먼저 왔습니다. 이것은 중복입니다.
GrandMasterFlush 15


@Pang-몰랐어요. 고마워요.
GrandMasterFlush

답변:


573

도구-> 옵션-> 디자이너-> "테이블을 다시 작성해야하는 변경 사항 저장 방지"를 선택 취소하십시오. 짜잔

때로는 무언가를 변경하기 위해 테이블을 삭제하고 다시 만들어야하기 때문에 발생합니다. 모든 데이터를 임시 테이블에 복사 한 다음 새 테이블에 다시 삽입해야하므로 시간이 오래 걸릴 수 있습니다. SQL Server는 기본적으로 사용자를 신뢰하지 않으므로 "확인, 지금하고있는 작업을 알고 있습니다. 이제 작업을 수행하겠습니다."라고 말해야합니다.


8
Microsoft 지원 사이트에서는이 기능을 권장하지 않지만 테이블에 데이터가 없으면 해가되지 않습니다. TSQL을 사용하여 변경하는 것이 가장 좋습니다.
Jon Smock

6
중요한 데이터베이스에 디자이너를 사용하지 않는 것이 좋습니다. 많은 경우에 비용이 많이 드는 실수를하는 것을 보았습니다. 또한 게으른 개발 습관을 장려하고 SQL 코드 라우트를 관리 할 수없는 경우 능숙하지 않은 데이터베이스 구조를 수정할 수 있습니다.
Mark W Dickson

5
동의 함 Mark, 아직 초기 개발 단계에서 스크립트를 작성할 필요가 없습니다.
Kristopher

7
2016 년 9 월인 것은 충격적이며이 놀라운 사용자에게 친숙하지 않은 오류 ( "안녕하세요, 테이블 변경을 허용 하시겠습니까?") 옵션이 여전히 작동 중입니다. 아니요, 취소 버튼 만 받으면 다시 변경해야합니다. SQL Server는 가장 어리 석습니다.
Mike Gledhill

2
2019에서 @ 마이크 Gledhill는 인사말이 여전히 사례 LOL입니다
선장 KENPACHI

116

도구> 옵션

여기에 이미지 설명을 입력하십시오

위의 옵션을 선택 취소하십시오


5
스크린 샷 주셔서 감사합니다. 나는 그 바보 같은 옵션을 찾는 데 도움이되는 이와 같은 것을 찾고있었습니다. 대화 상자에 "할 수 없음"이라는 확인란이 있어야합니다.
Chris Benard

2
모범
사례이

이미지 주셔서 감사합니다. 매우 유용합니다 :)
A.

72

이 문제를 해결하려면 SQL 문을 사용하여 테이블의 메타 데이터 구조를 변경하십시오.

"테이블 재 작성이 필요한 변경 사항 저장 방지" 옵션이 사용 가능한 경우이 문제가 발생합니다 .

원본 : SQL Server 2008에서 테이블을 저장하려고하면 "변경 내용을 저장할 수 없습니다"오류 메시지가 나타난다


12
내 질문은 다음과 같습니다. SQL Server가 모든 단일 변경에 대해 테이블을 삭제하고 다시 만드는 대신 필요한 T-SQL 문을 사용하지 않는 이유는 무엇입니까? 이 동작을 이해할 수 없습니다.
Jaime

15

상자 (빈약 한 솔루션)의 선택을 해제하는 대신 데이터 편집을 중지해야합니다. 데이터를 변경해야하는 경우 스크립트를 사용하여 데이터를 작성하여 프로덕션으로 쉽게 이식하고 소스 제어하에 있도록하십시오. 또한 개발자가 최신 데이터에 대해 작업 할 수 있도록 프로덕션으로 푸시 한 후 테스트 변경 사항을 쉽게 새로 고칠 수 있습니다.


2
A) SSMS가 생성 한 스크립트를 복사하여 프로덕션 환경에서 사용할 수 있습니다. B) SSMS가 모든 세부 사항을 처리하므로 SSMS가 더 쉽고 빠르며 안전합니다.
Trisped

2
Itg는 여전히 매우 나쁜 생각입니다. prod에서 10,000, 000 개의 레코드 테이블을 다시 작성하지 않으려 고합니다. 더 빠르지 않습니다. 어떻게 더 안전합니까? 잘못된 데이터는 잘못된 데이터이며 SSMS가 작성한 스크립트를 사용하는 것뿐만 아니라 작성한 스크립트를 사용하는 경우 일관성 검사가 작동합니다. 100 %의 사례에서 빈약 한 연습입니다.
HLGEM


14

SQL Server Management Studio의 테이블 편집기에서 매우 쉽고 시각적으로 변경할 수있는 많은 변경 사항은 실제로 테이블에서 백그라운드로 테이블을 삭제하고 처음부터 다시 만들려면 SSMS가 필요합니다. 열 재정렬과 같은 간단한 작업조차 표준 SQL DDL 문으로 표현할 수 없습니다. SSMS가 수행 할 수있는 모든 작업은 테이블을 삭제하고 다시 만드는 것입니다.

이 작업은 a) 큰 테이블에서 시간이 많이 걸리거나 b) FK 제약 조건 및 항목과 같은 다양한 이유로 실패 할 수도 있습니다. 따라서 SQL Server 2008의 SSMS에는 다른 답변에서 이미 식별 한 새로운 옵션이 도입되었습니다.

이러한 변경을 막기 위해 처음에는 반 직관적 인 것처럼 보일 수 있으며 개발자 서버에는 분명히 성가신 일입니다. 그러나 프로덕션 서버에서이 옵션과 이러한 변경을 방지하는 기본값은 잠재적 인 생명의 은인이됩니다!


2
나는 이제 개발 서버에 있지만 프로덕션 서버에서는 다시 켜야합니다. 경험을 공유해 주셔서 다시 한 번 감사드립니다
rem

1
그러나 예를 들어 nvarchar 열의 크기를 100에서 120으로 변경하는 것은 ALTER TABLE을 사용하여 쉽게 수행 할 수있는 매우 간단한 작업입니다. 그렇다면 SQL Server (Management Studio)가 테이블을 삭제하고 다시 만드는 이유는 무엇입니까? 경우?
Jaime

4
@Jaime : 비주얼 디자이너의 개발자에게 물어볼 필요가 있습니다. 비주얼 디자이너의 경우 테이블을 다시 만들고 복사하여 많은 간단한 변경이 항상 수행됩니다. 당신이 간단한 방법을 사용하려면, 그건 당신에게 최대 몇 가지 쉬운 T-SQL 문을 작성하고이를 실행하여 직접 처리 할 수 있습니다.
marc_s

1
@marc_s에게 감사드립니다. 이것은 내가 기대했던 답이지만, 모든 것을 설명 할 숨겨진 이유가있는 사람들에 대한 믿음은 거의 없었습니다.)
Jaime

1
이 제한은 또한 사용자 ID를 알 필요없이 변경하지 않도록합니다 (필요하지 않은 경우).
Trisped

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.