2012-11-05 28 views
1

我必須創建遠程數據庫的完整副本。我只有一個有用而簡單的方法來實現它:通過生成腳本。我知道其他方法(例如創建備份),但由於某些原因我無法使用它們。因爲一個表可能依賴於另一個表(有一個外鍵等),並且因此很難找出創建表的有效順序,所以我決定生成這些「可靠的」腳本指令在最後。在C#中使用Smo - 在開始時跳過約束生成指令

那麼,我知道如何在(靠近)表創建內生成「可靠的」腳本指令。但是,我應該怎麼做才能跳過它們,最後才能生成它們?

例如:

--How I do NOT want 
--......................... 
CREATE TABLE Table1(....) 
ALTER TABLE Table1 ADD CONSTRAINT ... 

CREATE TABLE Table2(....) 
ALTER TABLE Table2 ADD CONSTRAINT ... 



--How I would like 
--......................... 
CREATE TABLE Table1(....) 
CREATE TABLE Table2(....) 
--......................... 
CREATE TABLE TableN(....) 
--......................... 
--the end of a script 
ALTER TABLE Table1 ADD CONSTRAINT ..... 

回答

2

想必,你已經通過表循環,並呼籲每個表Script()方法的代碼。你想要做的是創建一個ScriptingOptions對象,將其DriForeignKeys屬性設置爲false,並將該ScriptingOptions對象的Script()方法作爲參數調用。然後,一旦你遍歷了所有的表格,你將需要再次完成,這次要拿起外鍵。

+0

當我要再次這樣做時,我怎麼才能拿起** **沒有表格腳本的外鍵腳本指令? –

+0

Table對象具有ForeignKeys屬性。迭代每個表的每個表的集合並編寫腳本。 –