전체 데이터베이스 SQL-Server 스크립팅
데이터베이스에서 모든 테이블, 프로세스 및 기타 개체의 스크립팅을 얻을 수있는 방법이 있습니까? 모든 테이블, procs, udfs, .etc를 스크립팅하는 옵션이 데이터베이스 생성하는 것이 좋습니다.
Management Studio에서 데이터베이스를 마우스 오른쪽 단추로 클릭하십시오. 작업-> 펼쳐 생성.
그렇게해야합니다.
이 작업 을 수행하는 SchemaZen 이라는 오픈 소스 명령 줄 유틸리티를 작성했습니다 . Management Studio의 스크립팅보다 훨씬 빠르며 출력은 버전 관리에 더 많이 있습니다. 스키마와 데이터 모두 스크립팅을 지원합니다.
펼쳐 놓고 다음을 실행하십시오.
schemazen.exe 펼쳐보기 --server localhost --database db --scriptDir c : \ somedir
그런 다음 펼쳐지는 데이터베이스를 다시 작성하려는 다음을 실행하십시오.
schemazen.exe create --server localhost --database db --scriptDir c : \ somedir
이 작업을위한 유틸리티 인 SMOscript를 작성했습니다 .
펼쳐지는 생성은 SMO 라이브러리에서 수행 할 SQL 2005 및 2008의 새로운 개체 유형을 지원합니다.
결국 SSMS 조합 생성 조합을 사용하여 스키마와 데이터를 추출한 다음 펼쳐진 키워드 구문 분석 및 토큰 기반 교체를 허용하는 자체 데이터베이스 도구를 사용했습니다. 또한 펼쳐지는 번만 적용합니다.
왜?
- SQL Server 2000, 2005 및 2008에 대한 설치를 지원하며 버전간에 데이터 유형이 변경되었습니다. 예를 들어 2005+에는 nvarchar (max)가있는 반면 2000은 ntext 만 지원합니다. 따라서 펼쳐지는 토큰을 사용하고 db 선택에 따라 올바른 유형으로 바꿉니다.
- 일부 펼쳐서 실행 후 대기 시간이 필요합니다. 예를 들어 펼쳐서 통해 새 데이터베이스를 생성 한 후 몇 초를 기다리지 SQL Server가 생성 할 시간이 없습니다. 파일) 테이블 등을 만들 때
- 어떤 펼쳐가 언제 실행 결과 기록을 유지하고 싶었습니다.
- Wix MSI 설치 프로그램이 연결되어 있고 자격 증명을 증명할 수 있습니다.
예제 펼쳐 (간결성을 위해 편집 됨)
-- Sleep: 5
-- Sleep after creating database to allow file system to create db files
CREATE DATABASE [$Database$]
GO
EXEC sp_dbcmptlevel [$Database$], $CompatabilityLevel$
GO
USE [$Database$]
GO
IF '1'!='$IntegratedSecurity$'
BEGIN
CREATE LOGIN [$Login$] WITH PASSWORD=N'$Password$', DEFAULT_DATABASE=[$Database$]
CREATE USER [$User$] FOR LOGIN [$Login$]
EXEC sp_addrolemember N'db_owner', N'$User$'
END
GO
RedGate SQL packager를 보는 것이 좋습니다. 무료는 가격 대비 가치가있을 수 있습니다.
테이블 데이터를보고 Management Studio 2012 및 2014의 모든 테이블 데이터 콘텐츠를 출력하기 위해 약간 숨겨져 있지만 몇 가지 살펴본 후 옵션을 찾았습니다.
- db를 마우스 오른쪽 버튼으로 클릭하십시오.
- '작업'> '스크립트 생성 ...'을 선택하십시오.
- '스크립팅 옵션 설정'에서 '고급'을 클릭합니다.
- '일반'에서 '스크립트에 사용할 데이터 유형'을 true로 설정합니다 ( '일반'그룹의 맨 아래에 있음).
프로그래밍 방식으로 수행해야하는 경우 SQL Server 2000에 대해 SQL DMO 라이브러리 (OLE)를 사용할 수 있지만 SQL Server 2005 이상에 대해서는 SQL SMO 라이브러리 (네이티브 .NET 라이브러리)를 사용할 수 있습니다.
이 두 라이브러리는 SQL Server 관리 도구 설치에 필수적입니다.
SQL Server Management Studio에서 전체 데이터베이스 스크립트를 생성하는 것만으로는 충분하지 않은 경우입니다.
참고URL : https://stackoverflow.com/questions/1162339/script-entire-database-sql-server
'IT' 카테고리의 다른 글
더 빠른 것 : in_array 또는 isset? (0) | 2020.09.07 |
---|---|
다른 작업 내에서 작업 호출 (0) | 2020.09.07 |
Homebrew : 최고 공식 만평 (0) | 2020.09.07 |
re 모듈의 정규식이 단어 경계 (\ b)를 지원하고? (0) | 2020.09.07 |
sed 또는 awk : 패턴에 따라 n 줄 삭제 (0) | 2020.09.07 |