• Bhuvnesh (11/12/2008)


    hi ,

    Below is the linked server query ,here i m passing the server and linked server name dynamically

    The problem is that its giving error for very last line (it is not taking linked server name dynamically)

    but if i hard coded the linked server in last line its working

    i need to have linked server dynamically

    ----------------------------------------------------------------------------

    declare @servername varchar(20),

    @Linked_server varchar(20),

    @SQLCmd varchar(200),

    @TableName varchar(50)

    set @TableName = 'sysobjects'

    SELECT @servername = @@servername

    IF LEFT(@servername,2) ='D2'

    SET @Linked_server = 'IN\DEV'

    ELSE

    SET @Linked_server = 'D2\DEV'

    print @servername

    print @Linked_server

    SET @SQLCmd = 'SELECT top 10 * from [' + @servername + '].PROD.dbo.' + @TableName + ' WITH (NOLOCK)'

    EXEC(@SQLCmd) AT @Linked_server

    ------------------------------------------------------------------------------

    Please help

    Use it Like this

    ------------------------------------------

    declare @servername varchar(100),

    @Linked_server varchar(100),

    @SQLCmd varchar(200),

    @TableName varchar(100)

    set @TableName = 'sysobjects'

    SELECT @servername = @@servername

    --IF LEFT(@servername,2) ='D2'

    --SET @Linked_server = 'IN\DEV'

    --ELSE

    SET @Linked_server = '[xx.xxx.x.xxx]'

    print @servername

    print @Linked_server

    SET @SQLCmd = '(''SELECT top 10 * from abc.dbo.' + @TableName + ' WITH (NOLOCK)'') AT ' + @Linked_server

    select @SQLCmd = 'EXEC ' + (@SQLCmd)

    EXEC(@SQLCmd)

    Regards

    Ashok