Tập lệnh cho toàn bộ cơ sở dữ liệu SQL-Server


95

Có cách nào tôi có thể lấy 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 để tập lệnh cho cơ sở dữ liệu nhưng nó chỉ cung cấp cho tôi một số loại tập lệnh cấp cao nhất, chắc chắn không phải là tập lệnh để tạo tất cả các bảng, procs, udfs, .etc.


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

1
Đây không phải là giả sử để truy cập serverfault.com?
Salamander2007

Câu trả lời:


162

Từ Management Studio, nhấp chuột phải vào cơ sở dữ liệu của bạn. Nhiệm vụ -> Tạo Tập lệnh.

Nên làm vậy.


2
Một lựa chọn khác là sử dụng SQL SMO và kịch bản nó ra programatically (tức là nếu kịch bản thường xuyên được yêu cầu)
cướp

Có cách nào để thiết lập một tập lệnh để thực hiện việc này để các cài đặt luôn giống nhau cho dù ai chạy nó không? Tôi thấy trước mọi người trong nhóm dev của chúng tôi ghi đè lên tập tin này với các thiết lập khác nhau mỗi lần ...
Joe Phillips

@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 Hệ thống nhóm Visual Studio với Nhà phát triển cơ sở dữ liệu.
Chris Brandsma

7
Theo mặc định, nó không tập lệnh cho dữ liệu. Trong Tùy chọn Bảng / Chế độ xem, chọn "Dữ liệu Tập lệnh -> Đúng". Một tùy chọn hữu ích là "Script Drop -> True"
Stephen Hosking

1
Tập lệnh đã tạo sẽ không chứa bất kỳ thông tin nào về sự đối chiếu của các cột, trừ khi bạn đã chọn tùy chọn cuối cùng trong menu Thêm> Tùy chọn> Tạo tập lệnh. Trong tiếng Đức, tùy chọn là "Sortierung einschließen". Ngay cả hầu hết các tùy chọn này đều được bao gồm trong trình hướng dẫn tạo tập lệnh, tùy chọn này thì không (SQL Server 2008). Bạn thực sự phải chọn tùy chọn trước khi gọi trình hướng dẫn.
Olivier Faucheux

14

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

Để tạo tập lệnh, hãy chạy:

tập lệnh schemazen.exe - máy chủ localhost --database db --scriptDir c: \ somedir

Sau đó, để tạo lại cơ sở dữ liệu từ các tập lệnh, hãy chạy:

schemazen.exe tạo --server localhost --database db --scriptDir c: \ somedir

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

Đây là một tệp SQL DataBase nhỏ gọn.
Karlo A. López

1
THÁNH CRAP NÀY NHANH CHÓNG VÀ TUYỆT VỜI.
ConstantineK

1
@hobs Tôi rất vui vì bạn thấy nó hữu ích. : D
Seth Reno

1
@SethReno chỉ mục hệ thống bị hỏng trên db = SMO của tôi không thể viết bất cứ thứ gì ra ngoài, tập lệnh của bạn có thể, vì vậy về cơ bản đã giúp tôi tiết kiệm rất nhiều thời gian làm thủ công. BTW, kỹ thuật đảo ngược mọi thứ nhanh một cách ấn tượng, chẳng hạn như nhanh hơn 1000 lần so với SSMS và bản thân nó có vẻ nhanh hơn SMO (không ít nhất là do thời gian khởi động).
ConstantineK

4

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

Việc tạo tập lệnh được thực hiện bởi thư viện SMO và hỗ trợ các kiểu đối tượng mới trong SQL 2005 và 2008.


Rất tiếc, tôi đã cài đặt ứng dụng sương mù 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ục nào trong thư mục chương trình hoặc danh sách Tất cả chương trình của mình
PositiveGuy

3

Chúng tôi đã kết thúc bằng cách sử dụng kết hợp tạo tập lệnh SSMS để trích xuất lược đồ và dữ liệu, sau đó sử dụng công cụ cơ sở dữ liệu của riêng chúng tôi 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 kiểu 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, các tập lệnh của chúng tôi sử dụng một mã thông báo và dựa trên sự lựa chọn db sẽ thay thế bằng loại chính xác.
  • Việc thực thi một số tập lệnh yêu cầu khoảng thời gian chờ sau khi thực thi, ví dụ: Chúng tôi nhận 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, thì SQL Server đôi khi có thể bị lỗi (vì nó không có thời gian để tạo db tệp) khi nó tiếp tục tạo bảng, v.v.
  • Chúng tôi muốn duy trì lịch sử về những tập lệnh được thực thi và khi nào.
  • Chúng tôi muốn cho phép trình cài đặt Wix MSI của mình chỉ định chuỗi kết nối và thông tin đăng nhập, đồng thời cần một số cách để chuyển chúng vào các 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 có điều kiện.

Tập lệnh mẫu (được chỉnh 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

1

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


1

Chỉ cần nhìn vào dữ liệu bảng, để xuất ra tất cả nội dung dữ liệu bảng trong Management Studio 2012 và 2014, nó hơi bị ẩn nhưng tôi đã tìm thấy tùy chọn sau khi xem xét:

  1. Nhấp chuột phải vào db
  2. Chọn 'Công việc'> 'Tạo Tập lệnh ...'
  3. Trên 'Đặt Tùy chọn Tập lệnh', nhấp vào 'Nâng cao'
  4. Trong 'Chung', đặt 'Loại dữ liệu thành tập lệnh' thành true (nằm ở cuối nhóm 'Chung')

0

Nếu bạn cần làm điều đó 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 có thể muốn sử dụng thư viện SQL SMO (thư viện .NET gốc) đối với SQL Server 2005 trở lên.

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

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.