This is a dynamic stored procedure that will pass the database, linked server and state. When executing this stored procedure, it runs the stored procedure on the database on the linked server and gives the results back.
Working code - here the linked server is absolute and not passed as a variable
EXECUTE MYPROC 'CA','MYDB'
CREATE PROCEDURE [dbo].[MYPROC]
(
@state varchar(2),
@DATABASE char(20)
)
AS
DECLARE @SQL @VARCHAR(MAX)
SELECT @SQL = 'use ' + @DATABASE + ';
SELECT * FROM pubs.dbo.authors WHERE state = @state'
EXEC MYLINKSERVER.master.dbo.sp_executesql
@SQL, N'@state char(2)', @state
Not working code: here the linked server is passed through a variable.
I get a "Syntax error" at @LINKEDSERVER**.**master
EXECUTE MYPROC 'CA','MYDB','MYLINKSERVER'
CREATE PROCEDURE [dbo].[MYPROC]
(
@state varchar(2),
@DATABASE char(20),
@LINKEDSERVER VARCHAR(20)
)
AS
DECLARE @SQL @VARCHAR(MAX)
SELECT @SQL = 'use ' + @DATABASE + ';
SELECT * FROM pubs.dbo.authors WHERE state = @state'
EXEC @LINKEDSERVER.master.dbo.sp_executesql
@SQL, N'@state char(2)', @state
Thanks in advance