2009-07-21 48 views
85

Có cách nào tôi có thể nhận được một kịch bản của tất cả các bảng, procs và các đối tượng khác từ cơ sở dữ liệu không? Tôi biết có một tùy chọn để kịch bản cơ sở dữ liệu nhưng nó chỉ cho tôi một số loại kịch bản cấp cao nhất, chắc chắn không phải là một kịch bản để tạo ra tất cả các bảng, procs, udfs, .etc.Toàn bộ cơ sở dữ liệu Script SQL-Server

+0

Phiên bản SQL Server nào? – MyItchyChin

+5

Ông đã gắn thẻ nó SQL Server 2008, vì vậy tôi cho rằng đó là những gì anh ấy đang sử dụng. –

+1

Không phải là giả sử này để đi đến serverfault.com? – Salamander2007

Trả lời

143

Từ Management Studio Nhấp chuột phải vào cơ sở dữ liệu của bạn. Công việc -> Tạo tập lệnh.

Điều đó sẽ thực hiện.

+2

Một tùy chọn khác là sử dụng SQL SMO và viết kịch bản theo chương trình (tức là nếu kịch bản thông thường được yêu cầu) – RobS

+0

Có cách nào để thiết lập tập lệnh để thực hiện việc này hay không, bất kể ai chạy nó? Tôi thấy trước mọi người trong nhóm dev của chúng tôi ghi đè tệp này với các cài đặt khác nhau mỗi lần ... –

+0

@ Joe, tôi sẽ đi xuống tuyến đường mà RobS đang nói đến. Bạn sẽ có thể làm điều đó với PowerShell. Nếu không, hãy bắt đầu xem xét các công cụ RedGate hoặc Visual Studio Team Systems với Database Developer. –

0

Nếu bạn cần thực hiện theo chương trình, bạn có thể sử dụng thư viện SQL DMO (OLE) đối với SQL Server 2000, nhưng nhiều khả năng bạn muốn sử dụng thư viện SQL SMO (các thư viện bản địa .NET) so với SQL Server 2005 và một lát sau.

Cả hai thư viện này là không thể thiếu để cài đặt công cụ quản trị SQL Server.

Đây là trường hợp tạo tập lệnh cơ sở dữ liệu đầy đủ từ SQL Server Management Studio là không đủ.

1

Tôi khuyên bạn nên xem xét trình đóng gói RedGate SQL. Nó không phải là miễn phí, nhưng đã đủ hữu ích để có giá trị giá cả.

4

Tôi đã viết một tiện ích cho tác vụ này, SMOscript.

hệ Script được thực hiện bởi các thư viện SMO, và hỗ trợ các loại đối tượng mới trong SQL 2005 và 2008.

+0

Hmm Tôi đã cài đặt ứng dụng Smo của bạn trên Vista 64-bit. Cài đặt thành công nhưng tôi không thấy một mục trong danh sách chương trình của tôi hoặc danh sách Tất cả chương trình – PositiveGuy

+0

Đây là công cụ dòng lệnh – devio

3

Chúng tôi đã kết thúc bằng một sự kết hợp của SSMS hệ script để trích xuất giản đồ và dữ liệu, và sau đó sử dụng riêng của chúng tôi công cụ cơ sở dữ liệu cho phép phân tích cú pháp từ khóa và thay thế dựa trên mã thông báo trong tập lệnh. Nó cũng đảm bảo các tập lệnh chỉ được áp dụng một lần.

Tại sao?

  • Chúng tôi cần hỗ trợ cài đặt trên SQL Server 2000, 2005 và 2008 và có những thay đổi đối với loại dữ liệu giữa các phiên bản, ví dụ: 2005+ có nvarchar (max), trong khi 2000 chỉ hỗ trợ ntext. Vì vậy, tập lệnh của chúng tôi sử dụng mã thông báo và dựa trên lựa chọn db thay thế bằng loại chính xác.
  • Thực thi một số tập lệnh yêu cầu thời gian chờ sau khi thực thi, ví dụ: Chúng tôi thấy nếu bạn không đợi vài giây sau khi tạo cơ sở dữ liệu mới thông qua tập lệnh, đôi khi SQL Server có thể bị lỗi (vì không có thời gian để tạo tệp db) khi nó tiếp tục tạo bảng, v.v.
  • Chúng tôi muốn duy trì lịch sử các tập lệnh nào đã được thực hiện và khi nào.
  • Chúng tôi muốn cho phép trình cài đặt Wix MSI chỉ định chuỗi kết nối và thông tin đăng nhập, và cần một số cách để chuyển chúng vào tập lệnh, vì vậy một lần nữa, sử dụng mã thông báo và một số logic điều kiện.

Ví dụ kịch bản (sửa cho ngắn gọn)

-- 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 
11

tôi đã viết một tiện ích dòng lệnh mã nguồn mở có tên SchemaZen mà thực hiện điều này. Đó là nhanh hơn nhiều so với kịch bản từ studio quản lý và nó là đầu ra là phiên bản kiểm soát thân thiện hơn. Nó hỗ trợ kịch bản cả lược đồ và dữ liệu.

Để tạo ra các script chạy:

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

Sau đó, để tái tạo lại cơ sở dữ liệu từ các kịch bản chạy:

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

Xin chào, tôi muốn có được QUERY SQL từ cơ sở dữ liệu cục bộ của tôi được tạo trong studio trực quan, làm cách nào tôi có thể làm điều đó dụng cụ? Tôi phải sử dụng hướng tệp .sdf hoặc cách thực hiện? cảm ơn. –

+0

Tệp SQL DataBase nhỏ gọn của nó. –

+0

@ KarloA.López SQL Server Compact hiện không được hỗ trợ. Nó không phải là quá khó khăn để thêm hỗ trợ mặc dù vậy nếu bạn gửi một yêu cầu tính năng nó có thể được thực hiện khá nhanh chóng. Bạn có thể tạo yêu cầu tính năng tại đây https://github.com/sethreno/schemazen/issues/new –

1

Chỉ cần nhìn vào bảng dữ liệu, đầu ra tất cả các nội dung bảng dữ liệu trong Management Studio 2012 và 2014, có một chút ẩn nhưng tôi đã tìm thấy tùy chọn sau khi một số tìm kiếm:

  1. Nhấp chuột phải vào db
  2. Chọn 'Nhiệm vụ'> 'Tạo Script ...'
  3. On 'Đặt Tùy chọn Scripting', nhấp vào 'Advanced'
  4. Dưới 'General', thiết lập 'Các loại dữ liệu để kịch bản' true (nó là ở cuối nhóm 'Chung')
Các vấn đề liên quan