我的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