HOW TO:從指令碼匯入資料庫物件
除了能夠從現有的資料庫匯入資料庫「結構描述」(Schema) 以外,您也可以從一個或多個現有指令碼匯入「資料庫物件」(Database Object)。 例如,若要採用透過其他協力廠商工具所建立的現有資料庫定義,並將其匯入到「資料庫專案」(Database Project),便可以使用這個方法。 系統會剖析您所指定的指令碼,而且會識別建立資料庫物件的任何陳述式,並將這些陳述式匯入到資料庫專案。 您可以使用 [匯入 SQL 指令碼檔] 精靈或在 [命令視窗] 中使用自動命令,匯入指令碼。
如果有任何物件定義包含錯誤,會略過該物件。 如果該錯誤與型別定義有關,會將此陳述式放到資料庫專案的 ScriptsIgnoredOnImport.sql 檔中。 如果物件型別有效,但是物件的定義包含錯誤 (例如,參考不存在之資料表的檢視表),則 [錯誤清單] 視窗中會出現錯誤訊息。
未匯入的陳述式會放在您方案的 ScriptsIgnoredOnImport.sql 檔中。
匯入資料庫物件定義
若要使用匯入 SQL 指令碼檔精靈
按一下 [專案] 功能表上的 [匯入指令碼]。
[匯入 SQL 指令碼檔] 精靈隨即出現。
注意事項
您也可以在 [方案總管] 或 [結構描述檢視] 中,以滑鼠右鍵按一下資料庫專案,然後按一下 [匯入指令碼]。
當您閱讀完精靈的簡介頁面之後,按 [下一步] 前進到 [選取檔案] 頁面。
如果您想要匯入多個指令碼,請跳到步驟 7。
按一下 [單一檔案]。
在 [檔案名稱] 中,輸入您要匯入之指令碼的檔案名稱,包括路徑在內。 您也可以按一下 [瀏覽] 來尋找檔案。
移至步驟 11。
按一下 [多個檔案]。
按一下 [瀏覽] 並巡覽至包含您要匯入之指令碼的資料夾。
重要事項
您要選取的是包含您要匯入之指令碼的資料夾,而不是選取指令碼本身。
按一下 [選取資料夾]。
在檔案和資料夾清單中,選取指令碼的對應核取方塊,或是包含您要匯入之指令碼的子資料夾。
按一下 [下一步]。
如果您希望匯入的物件可取代資料庫專案中名稱和型別相同的物件,請選取 [覆寫已經在專案中的物件] 核取方塊。
如果您不想匯入擴充屬性,則清除 [匯入擴充屬性] 核取方塊。
如果您要匯入權限,請選取 [匯入權限] 核取方塊。
如果您要匯入權限並將這些權限加入至專案模型,您還必須選取 [將匯入的權限加入至專案模型指令碼] 核取方塊。
注意事項
如果您匯入權限並將這些權限加入至模型,則開啟資料庫專案所需的時間可能會大幅增加。
在 [編碼方式] 中,按一下建立指令碼檔所用的編碼方式。
按一下 [完成],即可從您指定的指令碼匯入資料庫物件定義。
當剖析指令碼時,會出現一個進度頁面,而且會將所有物件定義加入到資料庫專案中。 當您從指令碼匯入資料庫定義時,會建立記錄檔。 記錄檔會儲存在專案資料夾內的 [Import Script Logs] 子資料夾中。
注意事項
原始程式檔不會有任何修改,而且會以共用唯讀模式開啟。
若要使用 Visual Studio Automation 模型
建立或開啟資料庫專案。
如需詳細資訊,請參閱 HOW TO:建立空白資料庫和伺服器專案或 HOW TO:開啟資料庫或伺服器專案。
開啟 [檢視] 功能表,指向 [其他視窗],然後按一下 [命令視窗]。
在 [命令視窗] 中輸入下列命令:
Project.ImportScript /FileName "MyScript.sql"
以您要匯入的指令碼名稱取代 MyScript.sql。
注意事項
您可以為控制匯入作業的命令,指定其他的選項。 如需詳細資訊,請參閱 Visual Studio 資料庫功能的 Automation 命令參考。 如果沒有指定檔案名稱,則會顯示 [匯入資料庫精靈]。
物件與設定會從指定的指令碼匯入至專案,而該專案是您在執行命令時於 [方案總管] 中選取的。 [錯誤清單] 視窗會顯示與匯入指令碼時所建立之物件有關的任何錯誤。
此時,您應該先設定資料庫專案設定,然後才可以建置及部署資料庫專案。 如需詳細資訊,請參閱 HOW TO:設定資料庫專案的資料庫屬性。
問題與限制
[匯入 SQL 指令碼檔] 精靈會搜尋指定的指令碼,以找出所有「資料定義語言」(Data Definition Language,DDL) 的 CREATE 陳述式,並將對應的物件加入到專案中。 會套用下列限制:
無法辨識的陳述式會放到資料庫專案的 ScriptsIgnoredOnImport.sql 檔中。
假設此指令碼包含單一資料庫中的物件定義。 所有的物件都會匯入到目前的資料庫專案中。 如果此指令碼包含多個資料庫的定義,則會忽略 CREATE DATABASE 和 USE 陳述式,而且會將所有物件加入到資料庫專案中。 如果您想要建立多個資料庫專案,您必須手動分割檔案,讓每一個資料庫都有一個檔案,然後將每一個檔案匯入到其各自的資料庫專案中。 如果您要將具有多個資料庫定義的指令碼匯入到單一資料庫專案中,您可能會收到大量的錯誤。
也會匯入新增檔案群組的 ALTER DATABASE 陳述式。 如果指令碼包含 CREATE 陳述式,而此陳述式後面緊接著建立之物件的 DROP 陳述式,則會匯入此物件。
只會匯入將條件約束加入到資料表或是指定全文檢索索引之資料行的 ALTER TABLE 陳述式。 如果是條件約束,只會辨識新增單一條件約束的陳述式, 會略過將多個條件約束加入到資料表的陳述式。
批次之間必須以 GO 陳述式分隔。
注意事項
若要匯入執行指令碼的結果,而不是包含在指令碼中的 CREATE 陳述式,您可以執行指令碼來建立資料庫,然後使用 [匯入資料庫結構描述] 命令來匯入產生的資料庫。