2015-09-02 37 views
0

我無法在鏈接服務器中調用UDF。如何在鏈接服務器上的主數據庫中調用UDF

這裏是我的T-SQL代碼:

DECLARE @Phone_Digits_Input varchar(12); 
DECLARE @Phone_Min_Max_Input varchar(5); 
DECLARE @Phone_Digits_String varchar(10); 
DECLARE @Phone_Min_Max_String varchar(5); 
DECLARE @SQLString nvarchar(500); 
DECLARE @ParmDefinition nvarchar(500); 
DECLARE @phone_digits varchar(10); 

SET @Phone_Digits_String = 'phone_digits'; 
SET @Phone_Min_Max_String = '10-10'; 

SET @SQLString = N'SELECT @phone_digitsOUT = RemoteServer.master.dbo.myUDF(@Phone_Digits_Input, @Phone_Min_Max_Input)'; 
SET @ParmDefinition = N'@Phone_Digits_Input varchar(10), @Phone_Min_Max_Input varchar(5), @phone_digitsOUT varchar(10) OUTPUT'; 

EXECUTE RemoteServer.master.dbo.sp_executesql @SQLString, @ParmDefinition, @Phone_Digits_Input = @Phone_Digits_String, 
    @Phone_Min_Max_Input = @Phone_Min_Max_String, 
    @[email protected]_digits OUTPUT; 
SELECT @phone_digits; 

當我運行它,我得到一個消息:

消息344,級別16,狀態1,行1
遠程函數引用'RemoteServer.master.dbo.myUDF'是不允許的,並且列名'RemoteServer'找不到或者不明確。

我該如何解決這個問題?

+0

OPENQUERY可能會工作。 –

+0

您是否嘗試從字符串中刪除服務器名稱(將「RemoteServer.master.dbo.myUDF(」更改爲「master.dbo.myUDF(」)因爲您的EXECUTE包含遠程服務器名稱,您應該可以 –

回答

0

我得到了服務器名稱擰! UDF是我不同的數據庫!對不起,我的困惑。 最終代碼如下:

DECLARE @Phone_Digits_Input varchar(12); 
DECLARE @Phone_Min_Max_Input varchar(5); 
DECLARE @Phone_Digits_String varchar(10); 
DECLARE @Phone_Min_Max_String varchar(5); 
DECLARE @SQLString nvarchar(500); 
DECLARE @ParmDefinition nvarchar(500); 
DECLARE @phone_digits varchar(10); 

SET @Phone_Digits_String = 'phone_digits'; 
SET @Phone_Min_Max_String = '10-10'; 

SET @SQLString = N'SELECT @phone_digitsOUT = dbo.MyUDF(@Phone_Digits_Input, @Phone_Min_Max_Input)'; 
SET @ParmDefinition = N'@Phone_Digits_Input varchar(10), @Phone_Min_Max_Input varchar(5), @phone_digitsOUT varchar(10) OUTPUT'; 

EXECUTE MyServer.MyDB.dbo.sp_executesql @SQLString, @ParmDefinition, @Phone_Digits_Input = @Phone_Digits_String, 
     @Phone_Min_Max_Input = @Phone_Min_Max_String, 
     @[email protected]_digits OUTPUT; 
SELECT @phone_digits; 

謝謝。

相關問題