2011-11-17 2 views
0

여러 데이터베이스를 사용하는 Grails 애플리케이션을 개발 중입니다. 나머지는 읽기 전용이고 1은 앱의 "주 데이터베이스"종류입니다. 또한 여러 환경이 있습니다 : dev, qa, prod. qa는 릴리스 테스트에 사용되며 prod와 동일합니다.db1에서 db2로 테이블 구조 및 데이터를 덮어 쓰는 방법

항상 릴리스 테스트 전에 "기본"데이터베이스를 "기본"데이터베이스로 덮어 써야합니다. MS SQL 인스턴스를 실행하는 서버에 SQL 사용자 액세스 권한이 없습니다.

내가 원하는 것은 을 데이터베이스 자체를 삭제하지 않고 qa-database에 저장하고 prod-database에서 모든 것을 가져 오는 마법입니다. 데이터베이스에는 많은 외래 키 제약 조건이 있습니다.

위의 달성 방법은?

P.

나는 이것을 MySQL에서했지만 이제는 MS SQL로 마이그레이션했습니다. 내 MySQL의 스크립트는이 (의사)처럼 다소 간다 : 당신은 바로 T-SQL에서이 작업을 수행해서는 안

SET foreign_key_checks = 0; 
-- Drop all tables.. 
SET foreign_key_checks = 1; 
-- Import prod-dump to DB.. 
+0

가능한 복제본 [SQL Server 2005 : 모든 테이블, 저장 프로 시저, 트리거, constriants 및 모든 종속성을 하나의 SQL 문에 삭제] (http://stackoverflow.com/questions/536350/sql-server-2005- 테이블 전체 - 저장 프로 시저 - 트리거 - 구성자 -a) –

+0

@MichaelDurrant - 그는 모든 개체를 다시 만들려고하므로이 질문의 속임수가 아닙니다. – JNK

답변

0

.

이런 식으로 개체를 내보내려면 .NET에서 SMO Scripting과 같은 것을 사용해야합니다. NO 순수 SQL 코드에서 묻는 것을 깨끗하게 처리 할 수 ​​있습니다.

시스템 테이블에서 동적 SQL을 작성하려는 경우 고려해야 할 변수가 너무 많습니다. 이는 T-SQL에서이 방법에 접근하는 유일한 방법입니다.

+0

JDBC를 통해 데이터베이스의 덤프/백업을 얻을 수 있습니까? – heikkim

+0

저는 JDBC 사용자가 아니므로 확실하게 말할 수는 없습니다. – JNK

0

나는 "xSQL Data Compare" 도구가 요구 사항과 정확히 일치한다고 생각합니다. 그래도 적어도 qa-DB에는 "sa"액세스가 필요합니다.

+0

입력 해 주셔서 감사합니다. 그러나 이것은 저에게 적합한 해결책은 아닙니다. – heikkim

관련 문제