전체 데이터베이스 SQL-Server 스크립팅


95

데이터베이스에서 모든 테이블, 프로세스 및 기타 개체의 스크립팅을 얻을 수있는 방법이 있습니까? 데이터베이스를 스크립팅하는 옵션이 있다는 것을 알고 있지만 모든 테이블, procs, udfs, .etc를 생성하는 스크립트가 아닌 일종의 최상위 스크립트 만 제공했습니다.


6
그는 SQL Server 2008에 태그를 지정 했으므로 그가 사용하고있는 것으로 가정합니다.
Colin Mackay

1
이것은 serverfault.com으로 이동한다고 가정하지 않습니까?
Salamander2007

답변:


163

Management Studio에서 데이터베이스를 마우스 오른쪽 단추로 클릭하십시오. 작업-> 스크립트 생성.

그렇게해야합니다.


2
또 다른 옵션은 SQL SMO를 사용하고 프로그래밍 방식으로 스크립팅하는 것입니다 (예 : 정규 스크립팅이 필요한 경우)
RobS

이 작업을 수행하는 스크립트를 설정하는 방법이 있습니까? 누가 실행하든 설정이 항상 동일하도록 설정되어 있습니까? 저는 우리 개발팀의 사람들이 매번 다른 설정으로이 파일을 덮어 쓸 것으로 예상합니다 ...
Joe Phillips

@Joe, 나는 RobS가 말하는 경로를 따라갈 것입니다. PowerShell을 사용하여 수행 할 수 있어야합니다. 그렇지 않으면 RedGate 도구 또는 데이터베이스 개발자가있는 Visual Studio Team Systems를 살펴보십시오.
Chris Brandsma

7
기본적으로 데이터를 스크립팅하지 않습니다. 테이블 /보기 옵션에서 "스크립트 데이터-> 참"을 선택합니다. 또 다른 유용한 옵션은 "Script
Drop-

1
추가> 옵션> 스크립트 생성 메뉴에서 마지막 옵션을 선택하지 않는 한 생성 된 스크립트에는 열 데이터 정렬에 대한 정보가 포함되지 않습니다. 독일어에서 옵션은 "Sortierung einschließen"입니다. 이러한 옵션 중 대부분은 스크립트를 생성하는 마법사에 포함되어 있지만이 옵션은 포함되어 있지 않습니다 (SQL Server 2008). 마법사를 호출하기 전에 옵션을 선택해야합니다.
Olivier Faucheux 2013

14

작업 을 수행하는 SchemaZen 이라는 오픈 소스 명령 줄 유틸리티를 작성했습니다 . Management Studio의 스크립팅보다 훨씬 빠르며 출력은 버전 관리에 더 친숙합니다. 스키마와 데이터 모두 스크립팅을 지원합니다.

스크립트를 생성하려면 다음을 실행하십시오.

schemazen.exe 스크립트 --server localhost --database db --scriptDir c : \ somedir

그런 다음 스크립트에서 데이터베이스를 다시 작성하려면 다음을 실행하십시오.

schemazen.exe create --server localhost --database db --scriptDir c : \ somedir

안녕하세요, Visual Studio에서 만든 로컬 데이터베이스에서 SQL QUERY를 가져오고 싶습니다.이 도구로 어떻게 할 수 있습니까? .sdf 파일 방향 또는 방법을 사용해야합니까? 감사.
Karlo A. López

압축 된 SQL 데이터베이스 파일입니다.
Karlo A. López

1
이건 빠르고 굉장합니다.
ConstantineK

1
@hobs 유용하다고 생각해서 다행입니다. : D
Seth Reno

1
@SethReno 내 db의 손상된 sys 인덱스 = SMO는 아무것도 스크립트 할 수 없으며 스크립트는 할 수 있으므로 기본적으로 수동으로 쓰레기를 처리하는 데 많은 시간을 절약했습니다. BTW는 SSMS보다 1000 배 더 빠르고 SMO 자체보다 빠르다 (시작 시간 때문에 최소한).
ConstantineK

4

이 작업을위한 유틸리티 인 SMOscript를 작성했습니다 .

스크립트 생성은 SMO 라이브러리에서 수행되며 SQL 2005 및 2008의 새로운 개체 유형을 지원합니다.


내 Vista 64 비트에 smo 앱을 설치했습니다. 성공적으로 설치했지만 프로그램 디렉토리 또는 모든 프로그램 목록에 항목이 표시되지 않습니다
PositiveGuy

3

결국 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

1

RedGate SQL packager를 살펴 보는 것이 좋습니다. 무료는 아니지만 가격 대비 가치가있을만큼 유용했습니다.


1

테이블 데이터를보고 Management Studio 2012 및 2014의 모든 테이블 데이터 콘텐츠를 출력하기 위해 약간 숨겨져 있지만 몇 가지 살펴본 후 옵션을 찾았습니다.

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

0

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

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

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

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