데이터베이스를 다시 작성하기 위해 스크립트를 생성 할 때 'Identity'열을 처리하는 방법을 올바르게 조정하는 방법을 알아 내려고 노력했습니다.데이터베이스 복사본 만들기 - 'Identity'사양 사용으로 인해 실패 함
SQL 데이터베이스를 이전 버전으로 '다운 그레이드'해야하기 때문에 스크립트를 생성해야하는 원래 이유가 있습니다. 데이터베이스 (v10.5)의 모든 것이 이전 버전 (v10.0)과 호환된다는 것을 알고 있습니다. 내가 직면 한 문제는 데이터베이스를 복사하는 3 가지 다른 방법 중 하나인데, 항상 원래 ID 필드 (ID)를 유지할 수 없다는 사실과 함께 실패합니다.
모든 테이블에는 첫 번째 열 ID: Int = PK & Identity
이 있습니다. 또한 테이블이 1, 2, 3, 5, 8, 12, 13 등과 같이이 열에서 순차적으로 순차적으로 진행되지 않는 경우가 많습니다. 이는 과거에 레코드가 삭제 되었기 때문입니다. 하지만 원래의 ID 번호를 이전과 동일한 순서로 다시 삽입하는 것이 불가능한 것처럼 보입니다. ...
그럼 어떻게 서버 A에서 데이터베이스 전체를 (백업/복원없이) 복사합니까? 서버 B로? 참고 : Management Studio에서 두 서버의 두 데이터베이스에 모두 연결할 수 있습니다. 또한 대상 서버는 제 것이 아니며 공유 된 호스트 DB이며 데이터베이스에만 액세스 할 수 있습니다. 대상 서버 설정을 변경할 권한이 없습니다.
나는 다음 시도했다 :
- 는 전체 데이터베이스 옵션에 대한 스크립트를 생성
- 수출 데이터베이스 옵션
- 백업/데이터베이스를 복원 - 때문에 버전 잘못 일치
실패 필자는 모든 테이블에서 ID 사양을 일시적으로 '비활성화'하고 데이터를 삽입 한 다음 ID를 다시 다시 전환해야 할 수도 있습니다. 그러나 데이터베이스 구조를 조작하기위한 스크립트 작성에 나는 끔찍합니다. 데이터 자체, 할 수 있습니다. 그러나 데이터베이스 구조를 조작하면서 스크립트를 사용하여 작업 할 시간조차 없었던 도구를 사용하는 데 너무 익숙해졌습니다.이 특별한 시나리오 이외에 결코 배울 필요가 없기를 바랍니다.
삽입에 대해'SET IDENTITY_INSERT MyTableName ON' 만하면되고, 쿼리의'INSERT'와'SELECT' 부분 모두에 컬럼 목록을 나열하면됩니다. – JNK