2009-03-02 32 views
32

Tôi muốn sao chép một bảng từ cơ sở dữ liệu này sang cơ sở dữ liệu khác. Tôi biết bạn có thể dễ dàng làm như sau nếu cơ sở dữ liệu trên cùng một máy chủ SQL.Sao chép bảng vào một cơ sở dữ liệu khác nhau trên một Máy chủ SQL khác nhau

SELECT * INTO NewTable FROM existingdb.dbo.existingtable; 

Có cách nào dễ dàng để thực hiện điều này nếu cơ sở dữ liệu trên hai máy chủ SQL khác nhau mà không phải lặp qua từng bản ghi trong bảng gốc và chèn vào bảng mới?

Ngoài ra, điều này cần được thực hiện bằng mã, bên ngoài SQL Server Management Studio.

Trả lời

53

Yes. thêm một mục nhập linked server và sử dụng chọn sử dụng quy ước đặt tên đối tượng bốn phần db.

Ví dụ:

SELECT * INTO targetTable 
FROM [sourceserver].[sourcedatabase].[dbo].[sourceTable] 
2

Tạo kịch bản?

Tạo tập lệnh để tạo bảng, sau đó tạo tập lệnh để chèn dữ liệu.

trả phòng SP_ Genereate_Inserts để tạo tập lệnh chèn dữ liệu.

+0

Nếu bạn viết một lượng lớn dữ liệu, SSMS sẽ không thể mở SQL. – jumxozizi

+0

Nhưng bạn vẫn có thể sử dụng 'sqlcmd' từ dấu nhắc lệnh để thực thi tập lệnh. –

+0

@Rubiksmomo - Đúng, nhưng cũng lưu ý rằng ngay cả khi SSMS có thể mở một lượng lớn dữ liệu mà chèn vẫn có thể thất bại ('truy vấn hoàn thành với lỗi') khi kịch bản thậm chí một lượng lớn __một số dữ liệu. Điều này có thể xảy ra ngay cả với một số lượng nhỏ các cột (có chiều rộng hẹp, tại đó). – OcelotXL

3

Nếu nó chỉ sao chép bảng sau đó máy chủ liên kết sẽ làm việc kịch bản tốt hoặc tạo ra nhưng nếu bảng thứ đã có chứa một số dữ liệu sau đó tôi muốn đề nghị sử dụng một số công cụ so sánh bên thứ ba.

Tôi đang sử dụng Apex Diff nhưng cũng có rất nhiều các công cụ khác ngoài kia chẳng hạn như những từ Red Gate hoặc Dev Art ...

công cụ của bên

Thứ ba là không cần thiết của khóa học và bạn có thể làm tất cả mọi thứ tự nhiên nó chỉ thuận tiện hơn. Ngay cả khi bạn đang ở trên một ngân sách eo hẹp, bạn có thể sử dụng chúng trong chế độ dùng thử để hoàn thành công việc….

Here là một chủ đề tốt về chủ đề tương tự với rất nhiều ví dụ về cách để làm điều này trong sql tinh khiết.

0

Tạo cơ sở dữ liệu, với cơ sở dữ liệu Script như ... CREATE Để

Trong SSMS trên máy chủ nguồn, sử dụng thuật sĩ xuất khẩu với cơ sở dữ liệu máy chủ đích làm điểm đến.

  • Nguồn dụ> YourDatabase> Nhiệm vụ> Xuất dữ liệu
  • liệu Soure = SQL Server Native Client
    • Validate/nhập máy chủ & Cơ sở dữ liệu
  • Destination = SQL Server Native Client
    • Xác thực/nhập Máy chủ & Da tabase
  • Thực hiện theo thông qua thuật sĩ
2

SQL Server (2012) cung cấp một cách khác để tạo ra kịch bản cho máy chủ cơ sở dữ liệu SQL với các đối tượng và dữ liệu của nó. Tập lệnh này có thể được sử dụng để sao chép lược đồ và dữ liệu của bảng từ cơ sở dữ liệu nguồn sang cơ sở dữ liệu đích trong trường hợp của chúng tôi.

  1. Sử dụng SQL Server Management Studio, nhấp chuột phải vào cơ sở dữ liệu nguồn từ trình khám phá đối tượng, sau đó từ Tác vụ, chọn Tạo tập lệnh. enter image description here
  2. Trong cửa sổ Chọn đối tượng, chọn Chọn đối tượng cơ sở dữ liệu cụ thể để chỉ định các bảng mà bạn sẽ tạo tập lệnh, sau đó chọn các bảng bằng cách đánh dấu bên cạnh mỗi bảng. Bấm tiếp. enter image description here
  3. Trong cửa sổ Tùy chọn đặt tập lệnh, chỉ định đường dẫn nơi bạn sẽ lưu tệp tập lệnh được tạo và nhấp vào Nâng cao. enter image description here
  4. Từ cửa sổ Tùy chọn nâng cao tập lệnh nâng cao, chỉ định Giản đồ và Dữ liệu dưới dạng Loại dữ liệu thành Tập lệnh. Bạn có thể quyết định từ đây nếu bạn muốn viết các chỉ mục và các khóa trong các bảng của bạn. Nhấp vào OK. enter image description here Quay lại cửa sổ Tùy chọn Script nâng cao, nhấp vào Tiếp theo.
  5. Xem lại cửa sổ Tóm tắt và nhấp vào Tiếp theo. enter image description here
  6. Bạn có thể theo dõi tiến trình từ cửa sổ Lưu hoặc Xuất bản tập lệnh. Nếu không có lỗi nhấn Finish và bạn sẽ tìm thấy tập tin kịch bản trong đường dẫn được chỉ định. enter image description here

Phương pháp tạo script SQL hữu ích để tạo một tập lệnh duy nhất cho lược đồ và dữ liệu của bảng, bao gồm các chỉ mục và khóa. Nhưng một lần nữa phương pháp này không tạo ra kịch bản sáng tạo của bảng theo đúng thứ tự nếu có mối quan hệ giữa các bảng.

Các vấn đề liên quan