2016-10-18 24 views
1

我試圖在C#中執行一個腳本,它將在SQL 2008數據庫中創建多個存儲過程。在C#代碼中創建多個存儲的特效代碼

我試圖把他們都在一個單一的文件,但它的錯誤時,我嘗試與

Incorrect syntax 'create procedure' must be the only statement in the batch. 

如果我把GO的創建過程後,如果失敗的話GO語法錯誤。

C#代碼看起來像這樣;

using (SqlConnection con = new SqlConnection(conString)) 
       { 
        con.Open(); 

        foreach(string scriptFile in scriptFiles) 
        { 
         var command = con.CreateCommand(); 
         command.CommandText = scriptFile; 
         int a = command.ExecuteNonQuery(); 
         command.Dispose(); 
         if (a == -1) successFlag = true; 
        } 

        con.Close(); 
        con.Dispose(); 
       } 

所以我基本上是有一大堆的創建過程中,我想在數據庫上執行創建所有存儲的特效的TXT文件調用。

Create PROCEDURE [dbo].[msp_AddBulkNewEmployeeUploadDetails]  
    snip 
    CREATE PROCEDURE [dbo].[msp_AddNewEmployeeDetails] 
    snip 

有沒有辦法在單個文件而不是多個文件中做到這一點?

回答

1

您需要將每個過程定義與GO分開,解析GO(並將其刪除)並分別運行每個過程。

另一種方法是使用像DBUp這樣的現成滾動工具。

不管你已經用來創建你的scriptFiles集合,只需要做GO分析。

每個存儲過程有1個文件是有好處的:它使版本控制(和版本比較)更容易。

+0

對,所以你說我需要基本上分割「GO」文件並單獨解析每個部分? – griegs

+0

是.......................... –

+0

Yech!.......... – griegs