我正在使用MS SQL Server數據庫並使用大量視圖(用於O/R映射器)。一個小煩惱是,我想如何在使用模式綁定和更新時經常使用數據庫模式更新
- 使用架構綁定
- 更新腳本(部署在服務器上,並把在源代碼控制系統)
,但碰到的問題是每當我想要例如將一列添加到表中,我必須首先刪除引用該表的所有視圖,更新該表,然後重新創建視圖,即使視圖不需要進行其他更新。這使我的更新腳本更長,並且在源代碼控制系統中查看差異,很難看到實際的相關更改是什麼。
有沒有更好的方法來處理這個問題?
我需要仍然能夠使用簡單和源代碼可控的SQL更新。像SQL Server Management Studio中包含的代碼生成器會很有幫助,但是我遇到了SQL Server Management Studio的問題,因爲它傾向於創建不指定某些索引或(默認)約束名稱的代碼。但是當我在不同的系統上運行我的腳本時,我想擁有相同的dbs,包括所有限制條件的名稱等,以便稍後在更新這些約束時不必跳過循環。
因此,一個更聰明的SQL代碼生成器可能會有解決方案嗎?
我現在的工作流程是:「cannot ALTER 'XXX' because it is being referenced by object 'YYY'
」
- 類型
alter table
語句查詢編輯器 - 檢查,如果我得到這樣一個錯誤的語句
- 使用SQL Server梟雄工作室腳本我要引用的對象
create
代碼 - ALTER語句前插入
drop
聲明後 - 檢查創建語句如果
drop
語句創建錯誤和重複
這使我很煩惱,但也許我只需要忍受它,如果我想繼續使用綱要綁定和腳本更新...
哦,好吧。我想我會忍受它。理想情況下,我希望的是:a)如果表更新沒有真正影響視圖,則不會有錯誤消息(例如,添加新列不應影響此表上的只讀視圖) b)如果表更新斷開視圖(例如,刪除在視圖中使用的列) 但我想MSSQL只是不能這樣工作(可能是出於很好的理由...) 感謝您的權限提醒! – 2010-08-07 17:01:53