将一个复合数据库解决方案从TFS部署到我的本地sql安装时遇到了一个非常棘手的问题。
我想知道是否有人可以提供建议?感谢
Team Foundation Server中的复合数据库项目。 MarketRisk和MarketRisk_Structure。两者都引用了另一个名为DataMirror的数据库。
MarketRisk_Structure包含一个视图vwLiveTrades,其脚本为:
SELECT * FROM [$(LSRV_ENQ)].[$(DataMirror)].dbo.AS400_Positions
在MarketRisk_Structure项目中,引用中有对DataMirror的引用,对于DataMirror和LSRV_ENQ(链接服务器),还有SQLCMDVARS中的变量。
在MarketRisk项目中,引用中有对Datamirror的引用,对于DataMirror和LSRV_ENQ(链接服务器),也有SQLCMDVARS中的变量。
我认为我在两个项目中都需要DataMirror ref和LSRV_ENQ ref,因为MarketRisk中的sprocs会调用链接服务器,而MarketRisk_Structure中的视图会调用链接服务器。
我不知道这个循环引用是否会引起以下问题:
MarketRisk.dbschema(0,0)Error TSD00563: This deployment may encounter errors during execution because [dbo].[spRetrieveSingleIntraDayTradeFromLive] depends on [dbo].[vwLiveTrades].[OptionPremiumDueDate] and [dbo].[vwLiveTrades].[OptionPremiumDueDate] does not exist in the target database.
我收到很多这些错误,都是因为MarketRisk中的spRetrieveSingleIntraDayTradeFromLive试图引用MarketRisk_Structure视图中的列。
MarketRisk.dbschema(0,0)Error TSD01234: Plan verification encountered errors; deployment cannot continue.
答案 0 :(得分:4)
我遇到了同样的问题,但由于它是一个有数千个“警告”的遗留数据库,我无法真实地摆脱所有警告。 TSD01234错误是由项目的.sqlDeployment文件中的“验证部署”设置检查引起的(它是“高级选项”下的最后一个)。禁用验证部署选项后,我能够生成部署脚本。
答案 1 :(得分:2)
对于遇到此问题的任何人:
我通过显式命名视图中的所有列来解决。部署不喜欢通配符。
此外,需要将MarketRisk_Structure的Deploy属性中的Target Database Name设置为“MarketRisk”。
此致 格雷姆