SQL2008 Copy SQL Object from one database to the other— SQL2008 複製SQL Object 由一個SERVER 到另一個 SERVER

兩個星期前 公司把一個SQL SERVER 由SQL2000 升級到SQL2008
雖然升級過程不算太順利…
因為如果要在SQL2008 執行DTS PACKAGE 要在電腦上做多一些東西
和有一些CODE 不能順利UPGRADE 到SQL2008

昨天難題終於出現了…
就是有位朋友寫的一個複製SQL OBJECT 的功能不能在SQL2008 上運行…
所以現在便要想想怎樣可以把SQL OBJECT 從一個DATABASE完完整整地複製到另一個DATABASE.

曾經想過用以下的方法
1)
SELECT * INTO DatabaseName.dbo.DestinationTableName
FROM DatabaseName.dbo.SourceTableName
只會把資料複製…
不能把預設值和其他CONSTRAINT 複製到新的資料表上

2) 如果我們先建立好所需要的資料表 E.G. 設定所有的預設值和其他CONSTRAINT

之後再加入資料..,這便不能保留AUTONUMBER 的原本數值
如果你有很多的TABLE 的話…你便需要用很長時間來做這個動作了

3) 最後我便想到用”SQL Server Integration Services” (SSIS) 來做這個動作了
以下是我用SSIS 的步驟:
1) 首先要做的是啟動 “SQL Server Business Intelligent Studio
建立一個”Integration Service Project
2) 在TOOLBOX 中 選擇 “Transfer SQL Server Object Task” 之後Drag & Drop 到Control Flow 入1面1
3) Right Click ->”Edit” 去edit 這個 “Transfer SQL Server Object Task
4) 在”General Tab” 中可以”Name” 的text box 給他個有意思的名字
5) Click去 “Objects Tab
6) “Transfer SQL Server Object Task” 和 “Data Transfer Task” 的設定有一些不同,

就是 “Data Transfer Task” 可以在Connection Manager 中選取 你要用的CONNECTION [如果你之後已經設定了一個的話]
而”Transfer SQL Server Object Task” 的connection 不可以在Connection Manager 中選取的
所以便要做 Connection 中的 Source Connection/ Source Database/ Destination ConnectionDestination Database中設定

7) 設定好 Connection之後便可以選擇 要複製那些SQL Object了
這裡分開了5個部分

Connection
用來設定那個是Source DatabaseDestination Database
Destination
用來設定複製到新的資料表上的動作
E.G. 如果資料表已出現在 Destination Database 要不要 DROP 他
需要複製Data/Schema/Collation/ExtendedProperties 和其他和他有關的資料表嗎…ETC

Destination Copy Options
這是最重要的一部分
給你選擇那些Table/View/Stored Procedure/ Use Define function/Schema 等等的SQL Object

Security
這是給你選擇那些和Security有關的Object 你想複製到新的資料表上

Table Options

給你選擇是否把 Index/ Trigger/ Primary Key/ Foreign Key …etc 都複製到新的資料表上

用法都算是十分簡單..所以我都不加以解釋了

如果有問題的話可以或我的concept不太正確的話請留言給我 改正我的錯誤

Hope you find it useful =)

One thought on “SQL2008 Copy SQL Object from one database to the other— SQL2008 複製SQL Object 由一個SERVER 到另一個 SERVER

  1. Pingback: Copy Database from SQL2008R2 to SQL2008 — 把SQL2008R2 資料庫 複製到 SQL2008 上 | Share ChiWai/Share 智慧/智慧分享

Leave a Reply