2009-02-09 75 views
20

Nhóm của tôi gần đây đã xây dựng lại cơ sở dữ liệu phát triển SQL Server 2005 của họ từ đầu bằng cách sử dụng tệp nguồn TFS.Làm cách nào để di chuyển Sơ đồ cơ sở dữ liệu SQL Server sang cơ sở dữ liệu khác?

Sau đó, chúng tôi có cơ sở dữ liệu sạch đẹp phù hợp chặt chẽ hơn với môi trường thử nghiệm và sản xuất của chúng tôi. Tuy nhiên, chúng tôi cũng mất các sơ đồ cơ sở dữ liệu đã được tạo ra trong các tháng trong cơ sở dữ liệu phát triển cũ.

Có ai biết cách xuất biểu đồ cơ sở dữ liệu SQL Server 2005 từ cơ sở dữ liệu này sang cơ sở dữ liệu khác có chứa cùng bảng và đối tượng lược đồ không?

CẬP NHẬT:

Cả hai câu trả lời của Valentin và CMS dưới đây đều hoạt động tốt. Tôi chấp nhận Valentin bởi vì nó là lần đầu tiên và tôi đã bắt đầu sử dụng nó.

Tôi đã kết thúc tạo bảng tạm gọi là 'robsysdiagrams' và sao chép tất cả dữ liệu vào đó và sử dụng Microsoft SQL Server Database Publishing Wizard để tập lệnh chèn dữ liệu vào đĩa. Sau đó tôi đổi tên robsysdiagram thành sysdiagrams trong kịch bản và chạy nó trên cơ sở dữ liệu đích. Mọi thứ đều ổn.

Trả lời

12

Rob, có bảng 'sysdiagram' chứa các định nghĩa sơ đồ. Cố gắng tạo bảng và chèn dữ liệu từ cơ sở dữ liệu cũ. Nó sẽ hoạt động.

HTH

11

Bạn có thể script the diagrams (archive link) vào một tập tin sql ...

+0

Đối với SQL Server 2008 cũng tồn tại các [script] (http://www.conceptdevelopment.net/Database/ScriptDiagram2008/) – tsionyx

+1

@ T_12 liên kết của bạn bây giờ là chết - bạn có cái nào vẫn hoạt động không? – Bridge

+0

liên kết hoạt động cho tôi –

12

Giả sử bạn có quyền truy cập vào cả hai cơ sở dữ liệu trong một trường hợp SQL Server.

Enable Diagrams trong cơ sở dữ liệu mới:

Trong cơ sở dữ liệu mới, bạn kích vào "Biểu đồ cơ sở dữ liệu" thư mục. Sql Server Management Studio sẽ nhắc bạn tạo các sơ đồ. Nếu bạn Ok Bước này, bạn sẽ có một bảng sysdiagrams trong cơ sở dữ liệu.

Sau đó, thực hiện như sau:

INSERT INTO newdb.dbo.sysdiagrams 
    SELECT name, principal_id,[version], [definition] 
     FROM olddb.dbo.sysdiagrams 
12

Một câu trả lời cũ nhưng tao nhã tôi đi qua trong khi tìm cách để giải quyết cùng một vấn đề: bcp

Để giải nén:

bcp YOUR_DATABASE..sysdiagrams out YOUR_DIAGRAM_NAME.bcp -c -T -S SERVERNAME 

Để nhập:

(cd to the directory the diagram is in) 
bcp YOUR_DATABASE..sysdiagrams in YOUR_DIAGRAM_NAME.bcp -c -T -S SERVERNAME 
+0

Tuyệt vời một lớp lót, đẹp và đơn giản. – Matt

+0

Giải pháp Brilliant, +1 :) –

+0

Thực sự hữu ích, cảm ơn rất nhiều – hitman

1

Nó khá dễ dàng, nếu bạn có một máy chủ được liên kết hoặc khi bạn vẫn còn trên cùng một máy:

USE newDB; 

SET IDENTITY_INSERT sysdiagrams ON; 

INSERT INTO sysdiagrams(name,principal_id,diagram_id,version,definition) 
SELECT name,principal_id,diagram_id,version,definition 
FROM oldDB..sysdiagrams; 

SET IDENTITY_INSERT sysdiagrams OFF; 
0

Vấn đề của tôi là đôi khi tôi cần phải thả cơ sở dữ liệu của tôi và tạo lại nó. Tôi có một kịch bản thế hệ đầy đủ để tạo ra mọi thứ ngoại trừ các sơ đồ.

Giải pháp thay thế của tôi là sao chép tạm thời biểu đồ vào cơ sở dữ liệu khác và sau khi cơ sở dữ liệu của tôi tái tạo, hãy sao chép nó trở lại.Điều thú vị là, người ta KHÔNG nên cố gắng mở sơ đồ sao chép, bởi vì cơ sở dữ liệu khác nơi nó nằm không có cấu trúc bảng của cơ sở dữ liệu của tôi, vì vậy máy chủ SQL tự động khi mở xóa tất cả các bảng trong sơ đồ q:

4

tôi nghĩ rằng đây là cách tốt hơn:

USE DestinationDatabase 

DELETE sysDiagrams 
WHERE name IN (SELECT name 
       FROM  SourceDatabase.dbo.sysDiagrams) 

SET IDENTITY_INSERT sysDiagrams ON 

INSERT sysDiagrams 
    (name , 
     principal_id , 
     diagram_id , 
     version , 
     definition 
    ) 
    SELECT name , 
      principal_id , 
      diagram_id , 
      version , 
      definition 
    FROM SourceDatabase.dbo.sysDiagrams 

SET IDENTITY_INSERT sysDiagrams OFF 
0

Bạn có thể trực tiếp sao chép như đã trả lời trước đó. Nếu bạn muốn 'sao lưu' chỉ sơ đồ bạn có thể làm điều đó, hãy xem câu trả lời của tôi về câu hỏi khác.

https://stackoverflow.com/a/26884146/951001

0

Tôi đã làm điều này bằng tính năng Xuất dữ liệu của MSSMS.

  • Nhấp chuột phải vào cơ sở dữ liệu.
  • Chọn Công việc> Xuất dữ liệu, khởi động trình hướng dẫn.
  • Thiết lập cả hai nguồn dữ liệu. Tôi đã sử dụng SQL Server Native Client 11, nhưng những người khác có thể sẽ hoạt động. Bấm tiếp.
  • Chọn Sao chép dữ liệu từ một hoặc nhiều bảng hoặc chế độ xem (mặc định)
  • Từ danh sách, chọn bảng sysdiagrams.
  • Chọn Chỉnh sửa ánh xạ. Đảm bảo đã chọn 'Bật tính năng chèn nhận dạng'. Nhấn ok.
  • Nhấp vào tiếp theo, sau đó nhấn Hoàn thành để thực thi.

Làm việc như một sự quyến rũ.

0

Safer cách để làm điều đó:

merge into TcsDev1..sysdiagrams as Trg 
using TcsDev2..sysdiagrams as Src 
on Trg.name = Src.Name 
when not matched by target then 
insert (name, principal_id, [version], [definition]) 
values (src.name, src.[principal_id], src.[version], src.[definition]); 
Các vấn đề liên quan