Nolock non funziona per me.
Tuttavia, utilizzando OPENQUERY fa ...
Sostituire DMS_DB.dbo.tfu_V_DMS_Desktop(''de'')'
con [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
In una nota, il problema è OPENQUERY non permette una variabile, quindi non si può avere parametri variabili. È tuttavia possibile fare riferimento a tutte le tabelle e le viste come viste da un server remoto e creare semplicemente la funzione 1: 1 con valori di tabella localmente. Questo probabilmente sarà lento, comunque.
fonte
2014-10-03 08:51:40
CON parola chiave fa davvero il trucco. –
Questo genera un errore per me. Sembra in conflitto con la risposta su http://dba.stackexchange.com/questions/71174/use-nolock-hint-when-calling-table-valued-function. –
Questo ha funzionato per me. Qualche vecchio codice aveva solo ** (nolock) ** e ricevevo un errore nell'usarlo in SSMS. L'aggiunta di ** WITH ** ha risolto il problema. –