星期三, 10月 21, 2015

[SQL] Linked Server 使用資料表值函數

論壇問題
利用 Linked Server 呼叫資料表值函數
建立一個資料表值函數來測試
CREATE FUNCTION dbo.GetDepartment(@DepartmentID smallint)
RETURNS TABLE
AS
RETURN
(
    SELECT
        GroupName ,
        DepartmentID ,
        Name 
    FROM Adventureworks2014.HumanResources.Department
    WHERE DepartmentID = @DepartmentID
) 
GO
利用 Linked Server(已事先建立,名稱為 HyperV)四部份名稱來呼叫資料表值函數
SELECT * FROM HyperV.Adventureworks2014.dbo.GetDepartment(1)
GO
會得到下面錯誤訊息
訊息 4122,層級 16,狀態 1,行 22
不允許遠端資料表值函數呼叫。
改利用 OPENQUERY() 來呼叫
SELECT * 
FROM OPENQUERY
     (
         HyperV,
         'SELECT * FROM AdventureWorks2014.dbo.GetDepartment(1)'
     )
[SQL] Linked Server 使用資料表值函數

搜尋到這篇文章時 Remote table-valued function calls are not allowed 還想說,2008 的版本應該就不會有這個問題,實際在 2014 上測試,這問題來是存在

沒有留言:

張貼留言