将SQL CLR项目从VS2008迁移到VS2010 - 部署失败

时间:2010-09-10 12:50:08

标签: visual-studio-2010 sqlclr

我在VS2008中有一个带有SQL CLR项目的解决方案。解决方案/项目已转换为VS2010,现在部署不再有效。 我得到以下类型的错误:

  

开始将程序集MyProjectDatabaseCode.dll部署到服务器DEVPN-004:MyProject     如果部署为与.NET Server的目标实例不兼容的.NET Framework版本构建的SQL CLR项目,则可能会出现以下错误:“部署错误SQL01268:由于程序集验证失败,程序集的CREATE ASSEMBLY失败”。要解决此问题,请打开项目的属性,然后更改.NET Framework版本。   C:\ inetpub \ wwwroot \ VS2010_MyProjectSolution \ DatabaseCode \ bin \ Release \ MyProjectDatabaseCode.dll:部署错误:计划验证遇到错误;部署无法继续。   C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ TeamData \ Microsoft.Data.Schema.SqlClr.targets(96,5):部署错误TSD00561:此部署在执行期间可能会遇到错误,因为更改为[dbo]。[Column1]被[dbo]。[Table1]。[Column1]在目标数据库中的依赖性阻止。

我验证了该项目是针对.NET 3.5的。我们有应该运行的predeployscript.sql和postdeployscript.sql文件。看起来他们并没有被VS2010运营。可能导致这个问题的原因是什么?

3 个答案:

答案 0 :(得分:1)

我们最终联系了Microsoft,他们将我们的问题重现为已知错误。他们通过将程序集重新定位到.NET 2.0提供了一种解决方法,但这在我们的场景中也不起作用。 看来修复的唯一方法是在2010年创建一个全新的SQL CLR项目并手动将所有文件添加到其中。

答案 1 :(得分:0)

我建议使用Reflector来查看构建输出目录中的程序集。如果你看到2个对mscorlib的引用,那么发生的事情就是在项目中添加了对4.0框架的幻像引用。如果您看到此问题,您可以通过手动编辑项目文件来摆脱4.0参考。在XML编辑器中打开项目,然后查找以下行:

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="2.0">

ToolsVersion="2.0“更改为ToolsVersion="4.0

这有助于我解决类似的升级问题,但您的里程可能会有所不同。如果您没有看到幻像mscorlib引用,则可能还有另一个问题。

答案 2 :(得分:0)

当我重命名某些对象或某种程度上目标数据库不同步时,我似乎始终存在这个问题,也就是说,某些对象没有被删除,部署正在尝试重新创建它们。 我设法通过从MS Server Management Studio运行清理脚本(删除对象/程序集)并验证数据库中没有旧对象来修复它。 这是一个尝试/错误的体验,但你可以先尝试部署到另一个服务器/数据库,如果成功,你可能在目标数据库中有一些垃圾,这就是我得出结论,因为我能够部署到另一个数据库。