2014-01-10 59 views
0

的模式創建新數據庫我們正在爲我們預先存在的客戶端構建一個新的基於雲的應用程序,這些客戶端將向我們所使用的NaCl程序添加/替換功能。每個客戶端都有自己的數據庫(模式彼此完全相同),我們必須在我們的雲提供商上創建一個新的數據庫實例。使用來自代碼

用於數據同步過程已經想通了,我已經成功地創建相對容易的數據庫。唯一的問題是更新數據庫模式以匹配「數據庫模板」(如果你願意的話)。我似乎遇到了一個問題或另一個取決於我的方法:

如果我嘗試通過ExecuteCommand()發送一個腳本(LINQ到SQL)到sql服務器我從聲明標量變量,語法錯誤,某些函數需要作爲查詢批處理中的第一條語句。這個腳本,請注意,是由SSMS生成的腳本。

我想過正在執行的機器(我還沒有真正嘗試過尚未)對本地存儲的腳本唯一的其他方法,但我讀了你不能用一個變量數據庫名運行本地腳本...這是必要的。

任何幫助將不勝感激!

回答

2

SSMS生成腳本包含go。在SSMS go結束了批處理,但ADO.NET的ExecuteCommand並非如此。

分割上go腳本,並分別發送使用ExecuteCommand()每個部分。

使用SSMS在本地(或遠程)運行腳本也應該有效。

我不確定你的意思是「可變數據庫名稱」。在ADO.NET中,您可以在連接字符串中設置數據庫。在SSMS中,您可以使用use <dbname>或查詢工具欄中的下拉框。

+0

參照可變分貝名:考慮這需要_lcid一個函數I下面和作爲參數:'使用[Database_ 「+(_lcid + 1)+ 」_「 +(I + 1)+ @」]'。我將在GO報告中分析這個難以置信的劇本。看起來像這樣的麻煩。 –

+0

應該很容易通過使用創建go'之間'區段的陣列['string.Split'](http://www.dotnetperls.com/split) – Andomar

+0

此用撇號和報價不懈爭鬥後最終確實工作慣例不匹配。只要說數據庫現在可以很好地創建就夠了。感謝您的幫助,對不起,花了這麼長時間才接受答案,我忘了我已經發布了這個直到現在。 –