[sql] 전체 데이터베이스 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 선택에 따라 올바른 유형으로 바꿉니다.
  • 일부 스크립트를 실행하려면 실행 후 대기 시간이 필요합니다. 파일) 테이블 등을 만들 때
  • 어떤 스크립트가 언제 실행되었는지 기록을 유지하고 싶었습니다.
  • 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의 모든 테이블 데이터 콘텐츠를 출력하기 위해 약간 숨겨져 있지만 몇 가지 살펴본 후 옵션을 찾았습니다.

  1. db를 마우스 오른쪽 버튼으로 클릭하십시오.
  2. ‘작업’> ‘스크립트 생성 …’을 선택하십시오.
  3. ‘스크립팅 옵션 설정’에서 ‘고급’을 클릭합니다.
  4. ‘일반’에서 ‘스크립트에 사용할 데이터 유형’을 true로 설정합니다 ( ‘일반’그룹의 맨 아래에 있음).


답변

프로그래밍 방식으로 수행해야하는 경우 SQL Server 2000에 대해 SQL DMO 라이브러리 (OLE)를 사용할 수 있지만 SQL Server 2005 이상에 대해 SQL SMO 라이브러리 (네이티브 .NET 라이브러리)를 사용할 가능성이 더 높습니다.

이 두 라이브러리는 SQL Server 관리 도구 설치에 필수적입니다.

SQL Server Management Studio에서 전체 데이터베이스 스크립트를 생성하는 것만으로는 충분하지 않은 경우입니다.