我们有一个表值函数,当使用错误SQL71561(未解析的引用)创建时,该函数会导致dacpac失败。像同一数据库中的许多其他功能一样,该函数引用同一服务器上另一数据库中的表。与其他功能不同,此功能始终导致dacpac失败。
我尝试使用四部分名称来引用表格,并且还创建了同义词。两者似乎都不起作用,而我现在完全不知所措。我无法在线找到足够的信息,也无法从SQL获得足够的反馈来正确地解决错误。有人可以帮我指出正确的方向吗?
以下详细信息:
我们有一个SQL Server 2014 Enterprise实例,其中包含3个独立的数据库,分别名为[dbParks],[dbLandmarks]和[dbPeople]。服务器名称为[sCity2]。
[dbParks]数据库内部是一个表值函数[fn_GetEmployeeList],其中包含对[dbPeople]。[dbo]。[Employees]的引用。此功能始终存在以下错误:
错误SQL71561:验证元素[dbo]。[fn_GetEmployeeList]时出错:功能:[dbo]。[fn_GetEmployeeList]包含对对象的未解析引用。该对象不存在,或者引用不明确,因为它可能引用以下任何对象:[sCity2]。[dbPeople]。[dbo]。[Employees]。[a]或[sCity2]。[dbPeople]。 [dbo]。[Employees]。[EmployeeCode]。
我更新了下面的函数,以在引用该表时使用四部分名称而不是三部分名称,但仍然失败:
CREATE FUNCTION [dbParks].[dbo].[fn_GetEmployeeList] ( )
RETURNS TABLE
AS
RETURN (
SELECT
a.EmployeeCode,
a.MunicipleCode,
a.FullName,
a.Supervisor
FROM
[sCity2].[dbPeople].[dbo].[Employees] a
)
GO
然后,我创建了一个同义词,该同义词引用了名为syn_Employees的[dbPeople]。[dbo]。[Employees],这也导致dacpac在创建过程中失败。
CREATE FUNCTION [dbParks].[dbo].[fn_GetEmployeeList] ( )
RETURNS TABLE
AS
RETURN (
SELECT
a.EmployeeCode,
a.MunicipleCode,
a.FullName,
a.Supervisor
FROM
[dbo].[syn_Employees] a
)
GO
真正令人困惑的是,同一数据库中还有其他使用同义词和三部分名称引用的函数不会导致dacpac失败。另外,当我删除[fn_GetEmployeeList]时,将成功创建dacpac。
任何帮助都是由衷的感谢