我想建立一个sql server数据库的dacpac。我使用ssdt将数据库对象导入到项目中。构建成功,没有任何错误,但是有很多警告(超过100条)与未解决的引用有关。
未解决的参考点归因于以下原因:
-其他SQL Server实例中其他数据库的对象(警告SQL71562)
-引用使用三部分命名约定的同一数据库本身的对象[DatabaseName]。[SchemaName]。[ObjectName](警告SQL71562)
-包含对对象的未解析引用。该对象不存在,或者引用不明确,因为它可以引用以下任何对象。 (警告SQL71562)
-对象定义[xxx]。[#xyz]与对象定义[xxx]只是大小写不同。[#xyz](SQL警告:SQL71558)
-警告SQL71562:计算列:[#abc]。[def]包含对对象的未解析引用。该对象不存在,或者引用不明确,因为它可以引用以下任何对象:
我曾尝试部署仅包含警告,但部署失败的构建。
我对SSDT相当陌生,非常感谢您的帮助。
谢谢。 :)
这里有几个问题要解决,最简单的是大小写和三部分名称。
对于三部分名称,在所有* .sql文件中进行查找/替换以替换[数据库名称]。[dbo]。与[dbo]。并且带方括号/非方括号的项目的各种组合应足够。
对于大小写差异,如果差异不大,请修复它们。否则,您可以为该特定警告编号设置全局忽略。
外部数据库引用将变得更加棘手-需要外部数据库引用(带有dacpac)或指向要编译的另一个项目的指针。我发现dacpac更容易入门,但这是您必须玩的东西。我的博客@ https://schottsql.com/all-ssdt-articles上的SSDT上有一些内容可能对您有所帮助。 (请注意-文章很旧,但是概念并没有太大改变)
[对于其余部分,您可能必须逐案处理。可能是因为它们所依赖的对象使用的是“相同的数据库,由3部分组成的名称”约定,并且在更改时将得到解析。有些可能是由于外部参考。这些将需要一些工作来解决。如果项目成功构建,则可以尝试生成脚本或发布/比较。