导出Azure SQL数据库时出现一个奇怪的错误。在最近进行一些模式更改之前,导出一直工作良好,但是现在却出现错误SQL71501。
数据库为V12,兼容性级别130(尽管master数据库仍为兼容性级别120)。
master
该问题似乎是由使用内置STRING_SPLIT函数的新表值函数引起的。已经使用了存储过程STRING_SPLIT,它们似乎并没有影响导出,但是该函数(编译正常,并且工作正常)似乎导致导出问题。
STRING_SPLIT
下面的函数是实际函数的简化版本,但会导致相同的问题。
CREATE FUNCTION [dbo].[TestFunction]( @CommaSeparatedValues VARCHAR(MAX) ) RETURNS TABLE AS RETURN SELECT c.ClientId, c.FullName FROM dbo.Client c INNER JOIN STRING_SPLIT(@CommaSeparatedValues, ',') csv ON c.ClientId = csv.value
导入/导出历史记录刀片中给出的完整错误消息如下:
服务操作期间遇到错误。 在用作数据包一部分的架构中找到一个或多个不受支持的元素。 错误SQL71501:验证元素[dbo]时出错。[TestFunction]:功能:[dbo]。[TestFunction]对对象[dbo]。[STRING_SPLIT]有未解决的引用。 错误SQL71501:验证元素[dbo]。[TestFunction]时出错:功能:[dbo]。[TestFunction]包含对对象的未解析引用。对象不存在或引用不明确,因为它可以引用以下任何对象:[dbo]。[Client]。[csv],[dbo]。[STRING_SPLIT]。[csv]或[dbo]。 [STRING_SPLIT]。[值]。
服务操作期间遇到错误。
在用作数据包一部分的架构中找到一个或多个不受支持的元素。
错误SQL71501:验证元素[dbo]时出错。[TestFunction]:功能:[dbo]。[TestFunction]对对象[dbo]。[STRING_SPLIT]有未解决的引用。
错误SQL71501:验证元素[dbo]。[TestFunction]时出错:功能:[dbo]。[TestFunction]包含对对象的未解析引用。对象不存在或引用不明确,因为它可以引用以下任何对象:[dbo]。[Client]。[csv],[dbo]。[STRING_SPLIT]。[csv]或[dbo]。 [STRING_SPLIT]。[值]。
这是来自Microsoft SQL团队的Xiaochen。我们已经在解决此问题。该修复程序将在接下来的几周内部署到导出服务。同时,此修复程序已在最新的DacFX 16.4(https://blogs.msdn.microsoft.com/ssdt/2016/09/20/sql-server-data- tools-16-4-release/)。在我们在服务中解决此问题之前,您可以下载DacFX 16.4并使用sqlpackage解决。