Thank You For Your Guidness
this is the final result :
1- Check Connection With linked Server
Declare @LinkedServerName nvarchar(128)
Declare @retval int
Set @LinkedServerName='YourLinkedServerName'
begin try
exec @retval = sys.sp_testlinkedserver @LinkedServerName;
--Print 'OK'
end try
begin catch
set @retval = sign(@@error);
--Print @retval
end catch;
[/size]
2- It's Better Put This in an storedPrcedure
Create Procedure Sp_CheckLinkedserverConnection
@LinkedServerName nvarchar(128),
@retval int OutPut
As
Begin
begin try
exec @retval = sys.sp_testlinkedserver @LinkedServerName;
end try
begin catch
set @retval = sign(@@error);
end catch;
End
3- After That You Should Bring Your main Code. You Must hidden your linked server Name inan Function or Procedure Such This :
Create Function dbo.RunOnRemoteServer(@AParameter char(50))
Returns @OutPutResult Table (OrderID int,
CustomerName varchar(20),
OrderTotal money)
as
Begin
insert into @OutPutResult
select Orderid,CustomerName,OrderTotal from [LinkedServerName].RowLevel.dbo.Orders
Return
End
4- There is a tip : Don't Forget that Complie Your Function when Your Connection to linked server is OK.
5- Sample Of use this Func.
Declare @IsConnectionError int
Set @IsConnectionerror=0
EXEC Sp_CheckLinkedserverConnection 'YourLinkedServerName', @IsConnectionError OUTPUT
If @IsConnectionError =0
Begin
select * from dbo.RunOnRemoteServer('ParameterValue')
End
Else
select 'Error on Connection'