Nolock nie działa dla mnie.
Jednak użycie OPENQUERY robi ...
Wymień DMS_DB.dbo.tfu_V_DMS_Desktop(''de'')'
z [110.10.10.100].testdbname.dbo.ufn_getdata(''4/25/2013'')
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tfu_V_DMS_Desktop]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[tfu_V_DMS_Desktop]
GO
CREATE FUNCTION [dbo].[tfu_V_DMS_Desktop]
(
@param1 int
)
RETURNS table
AS
RETURN
(
-- Add the SELECT statement with parameter references here
-- SELECT 0 as abc
SELECT * FROM OPENQUERY(CORDB2008R2, 'SELECT * FROM DMS_DB.dbo.tfu_V_DMS_Desktop(''de'')')
)
GO
W przypisie, problem jest OPENQUERY nie pozwala na zmienną, więc nie można mieć zmienne parametry. Można jednak odwoływać się do wszystkich tabel i widoków jako widoków ze zdalnego serwera i po prostu utworzyć lokalnie funkcję o wartości tabelarycznej 1: 1. Prawdopodobnie będzie to jednak powolne.
Z słowo kluczowe naprawdę działa. –
Generuje to błąd dla mnie. Wydaje się, że jest to sprzeczne z odpowiedzią na http://dba.stackexchange.com/questions/71174/use-nolock-hint-when-calling-table-valued-function. –
To zadziałało dla mnie. Jakiś stary kod właśnie miał ** (nolock) ** i otrzymywałem błąd używając go w SSMS. Dodanie ** Z ** poprawiło mój problem. –