Tạo tập lệnh SQL tạo cơ sở dữ liệu và bảng


102

Tôi có cơ sở dữ liệu SQL và các bảng mà tôi muốn sao chép trong SQL Server khác. Tôi muốn tạo một tập lệnh SQL tạo cơ sở dữ liệu và các bảng trong một tập lệnh duy nhất.

Tôi có thể tạo tập lệnh "Tạo" bằng SQL Management Studio cho từng trường hợp (Cơ sở dữ liệu và Bảng), nhưng tôi muốn biết liệu kết hợp cả hai tập lệnh "Tạo" thành một tập lệnh duy nhất có đủ hay không.

Cảm ơn.


26
bạn có thể vui lòng thay đổi câu trả lời được chấp nhận không?
skolima

1
@skolima đồng ý, câu trả lời được chấp nhận (của Clayton) cuối cùng sẽ có kết quả, nhưng câu trả lời của CJM nhanh hơn nhiều
elmer007

Câu trả lời:


18

Trong SQL Server Management Studio, bạn có thể nhấp chuột phải vào cơ sở dữ liệu bạn muốn sao chép và chọn "Cơ sở dữ liệu tập lệnh dưới dạng" để công cụ tạo tệp SQL thích hợp để sao chép cơ sở dữ liệu đó trên máy chủ khác. Bạn có thể lặp lại quy trình này cho từng bảng bạn muốn tạo, sau đó hợp nhất các tệp thành một tệp SQL duy nhất. Đừng quên thêm câu lệnh using sau khi bạn tạo Cơ sở dữ liệu của mình nhưng trước khi tạo bảng.

Trong các phiên bản SQL Server gần đây hơn, bạn có thể lấy điều này trong một tệp trong SSMS.

  1. Nhấp chuột phải vào cơ sở dữ liệu.
  2. Nhiệm vụ
  3. Tạo tập lệnh

Thao tác này sẽ khởi chạy một trình hướng dẫn nơi bạn có thể tập lệnh cho toàn bộ cơ sở dữ liệu hoặc chỉ các phần. Dường như không có cách T-SQL nào để thực hiện việc này.

Tạo tập lệnh máy chủ SQL


182
Tiếp tục cuộn ... phương pháp CJM là 99,99999% tốt hơn
ewitkows

Câu trả lời của CJM vẫn là chưa đủ. Sau khi áp dụng phương pháp của CJM, bạn cũng nên áp dụng phương pháp Shawna Jacobs.
Andrzej Martyna

Dù sao để làm điều này là SQL tiêu chuẩn cho mysql chẳng hạn?
Benjamin Goodacre

378

Mặc dù câu trả lời của Clayton sẽ đưa bạn đến đó (cuối cùng), trong SQL2005 / 2008 / R2 / 2012, bạn có một lựa chọn dễ dàng hơn nhiều:

Bấm chuột phải vào Cơ sở dữ liệu, chọn Tasksvà sau đó Generate Scripts, sẽ khởi chạy Trình hướng dẫn tập lệnh. Điều này cho phép bạn tạo một tập lệnh duy nhất có thể tạo lại cơ sở dữ liệu đầy đủ bao gồm bảng / chỉ mục & ràng buộc / thủ tục / chức năng / người dùng / v.v. được lưu trữ. Có vô số tùy chọn mà bạn có thể định cấu hình để tùy chỉnh đầu ra, nhưng hầu hết chúng đều tự giải thích.

Nếu bạn hài lòng với các tùy chọn mặc định, bạn có thể thực hiện toàn bộ công việc chỉ trong vài giây.

Nếu bạn muốn tạo lại dữ liệu trong cơ sở dữ liệu (dưới dạng một loạt các ĐẦU VÀO), tôi cũng giới thiệu Gói công cụ SSMS (Miễn phí cho phiên bản SQL 2008, trả phí cho phiên bản SQL 2012).


5
Điều này thật xuất sắc, tôi vừa làm điều này và tiết kiệm cho tôi rất nhiều thời gian.
Bill Sambrone

@CJM Tôi đang nghĩ rằng tôi ALMOST yêu bạn! :-P
Piero Alberto

Tôi đã làm theo các bước đó một cách chính xác nhưng tôi vẫn nhận được rất nhiều lỗi và tôi không thể sửa chúng. Bất kỳ giúp đỡ?
user1789573

Tôi khuyên bạn nên đăng câu hỏi của riêng mình liên quan đến điều này - hãy đảm bảo bạn đăng thông tin chi tiết về các bước bạn đã thực hiện và các lỗi bạn đã nhận được.
CJM

@ user1789573 - như Shawna Jacobs đã viết - SSMS không quan tâm đến các phụ thuộc (xấu hổ với SSMS devteam!), vì vậy bạn sẽ có rất nhiều lỗi "do thiết kế". Hãy theo dõi Shawna Jacobs asnwer để khắc phục điểm yếu này của SSMS.
Andrzej Martyna

9

Có thể tìm thấy một lời giải thích tuyệt vời tại đây: Tạo tập lệnh trong SQL Server Management Studio

Ali Issa lịch sự Đây là những gì bạn phải làm:

  1. Nhấp chuột phải vào cơ sở dữ liệu (không phải bảng) và chọn nhiệm vụ -> tạo tập lệnh
  2. Tiếp theo -> chọn bảng / bảng được yêu cầu (từ một số đối tượng cơ sở dữ liệu cụ thể)
  3. Tiếp theo -> nhấp vào nâng cao -> các loại dữ liệu thành script = schema and data

Nếu bạn muốn tạo một tập lệnh chỉ tạo các bảng (không có dữ liệu), bạn có thể bỏ qua phần nâng cao của hướng dẫn!


7

Không chắc tại sao SSMS không tính đến thứ tự thực hiện nhưng nó chỉ là không. Đây không phải là vấn đề đối với cơ sở dữ liệu nhỏ nhưng nếu cơ sở dữ liệu của bạn có 200 đối tượng thì sao? Trong trường hợp đó, thứ tự thực hiện rất quan trọng vì không thực sự dễ dàng để thực hiện tất cả những điều này.

Đối với các tập lệnh không có thứ tự được tạo bởi SSMS, bạn có thể làm theo

a) Thực thi script (một số đối tượng sẽ được chèn một số wont, sẽ có một số lỗi)

b) Xóa tất cả các đối tượng khỏi tập lệnh đã được thêm vào cơ sở dữ liệu

c) Quay lại câu a) cho đến khi mọi thứ cuối cùng được thực thi

Tùy chọn thay thế là sử dụng công cụ của bên thứ ba như ApexSQL Script hoặc bất kỳ công cụ nào khác đã được đề cập trong chủ đề này (gói công cụ SSMS, Red Gate và các công cụ khác).

Tất cả những điều này sẽ giải quyết các phụ thuộc cho bạn và giúp bạn tiết kiệm nhiều thời gian hơn.


1

Có, bạn có thể thêm bao nhiêu câu lệnh SQL vào một tập lệnh duy nhất tùy thích. Chỉ cần lưu ý một điều: thứ tự quan trọng. Bạn không thể CHÈN vào một bảng cho đến khi bạn TẠO nó; bạn không thể đặt khóa ngoại cho đến khi khóa chính được chèn.

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.