我的VS2010解決方案中有一個數據庫項目。我最近改變了一個視圖,並改變了一些函數來使用這個視圖,而不是直接對着一個表。 但是現在,當我部署時,我在大多數這些功能上遇到錯誤,因爲視圖中沒有存在該列所要求的列。 視圖更新晚於UDF更新發生。有什麼方法可以改變這種行爲嗎? 如果部署腳本按此順序更新,那麼最好的辦法就是:表,視圖,SP和UDF。似乎首先更新了表,但視圖只是在部署腳本中間的某處引發。Visual Studio 2010在部署過程中部署視圖太遲
0
A
回答
2
由於可以在視圖中使用UDF,並且可以在UDF中使用視圖,它必須分析所有這些以確定一致的部署順序 - 它必須解析所有的SQL。誰知道如果你對其他數據庫有依賴性該怎麼辦。
編輯
有沒有記錄/支持的方式來強制部署順序,到目前爲止,我所看到的。通過一些最小的測試,在我看來,UDF(至少是表值)總是在視圖之前部署。
編輯2
更奇怪的是,事實證明它確實做到了依賴性分析。查看db項目的.dbschema輸出文件,我可以看到它爲該函數生成了一個< Relationship Name =「BodyDependencies」>元素,該元素列出了它所依賴的視圖/列。但是部署sql腳本仍然會在稍後放置視圖。好奇。
編輯3
也許最終編輯。總的來說,我認爲問題無法解決。 (不可否認,因爲我已經指定了模式綁定,因此只有以下錯誤)。如果舊的函數定義依賴於舊的視圖定義,而新的函數定義依賴於新的視圖定義,還有用改變來改變數據庫中沒有正確的方式:
create table dbo.T1 (
ID int not null,
C1 varchar(10) not null,
C2 varchar(10) not null,
C3 varchar(10) not null
)
go
create view dbo.V1
with schemabinding
as
select ID,C1,C2
from dbo.T1
go
create function dbo.F1()
returns table
with schemabinding
as
return select ID,C1,C2 from dbo.V1 where ID=1
go
alter view dbo.V1
with schemabinding
as
select ID,C1,C3
from dbo.T1
go
alter function dbo.F1()
returns table
with schemabinding
as
return select ID,C1,C3 from dbo.V1 where ID=1
go
結果:
Msg 3729, Level 16, State 3, Procedure V1, Line 4
Cannot ALTER 'dbo.V1' because it is being referenced by object 'F1'.
Msg 207, Level 16, State 1, Procedure F1, Line 5
Invalid column name 'C3'.
相關問題
- 1. Visual Studio 2010的部署包
- 2. Visual Studio 2010擴展部署
- 3. Visual Studio 2010 Web應用程序部署
- 4. 從Visual Studio 2010部署SharePoint位置
- 5. Visual Studio 2010數據庫項目部署
- 6. 使用Visual Studio 2010部署到SFTP
- 7. WCF Visual Studio 2010部署問題
- 8. 部署SSIS 2012與Visual Studio 2010
- 9. Visual Studio 2010不部署App_Theme文件夾
- 10. Visual studio 2010安裝和部署項目?
- 11. 部署Visual Studio 2010加載項
- 12. Visual Studio 2010發佈/ web部署問題
- 13. Visual Studio 2010部署安全性認證
- 14. Visual Studio 2010數據庫部署
- 15. 部署Sharepoint 2010 Webpart崩潰Visual Studio
- 16. Visual Studio 2010 Web部署任務失敗
- 17. Visual Studio部署-IIS
- 18. 如何使用Visual Studio 2010安裝和部署部署Office 2010加載項?
- 19. 如何在Visual Studio 2010中自動部署Web應用程序?
- 20. 在Visual Studio 2010中將資源文件部署到Sharepoint 2010
- 21. Visual Studio部署項目 - CustomActionData
- 22. 如何部署Visual Studio包
- 23. Visual Studio部署錯誤
- 24. Visual Studio 2014部署錯誤
- 25. Visual Studio Online Octopus部署
- 26. Visual Studio的ClickOnce部署 - 證書過期
- 27. 如何通過Web部署在Visual Studio中部署Web站點項目?
- 28. 從Visual Studio 2010部署升級到Web部署工具2.1後停止工作
- 29. 在Visual Studio中部署K2 blackpearl項目
- 30. 在Visual Studio 2008中部署失敗
我看到......我沒有意識到在視圖中使用UDF,但的確如此,你可以在視圖中使用標量或UDF而不帶參數。 但有沒有辦法讓部署在UDF之前運行我的視圖更新?因爲我知道它會更新並且沒有任何其他依賴關係。但我不想在每個數據庫上進行manuelly更新。 – Markus 2010-05-05 07:27:13
即使這不是一個解決方案,但它是一個現在無法解決的答案。太糟糕了。謝謝你的協助。 猜猜我會做一些預部署檢查,而不是這樣解決。 – Markus 2010-05-05 08:40:11