У меня возникли проблемы с использованием OPENQUERY (для получения данных со связанного сервера) в хранимой процедуре. Я читал о переменных SQL, но не могу заставить его работать, поэтому, возможно, я неправильно понимаю переменные/строки в SQL. Это вызывает ошибку «Неправильный синтаксис рядом с« + ».» и я не уверен, что я делаю неправильно.Сохраненная процедура/переменная SQL внутри строки OPENQUERY
Код:
ALTER PROCEDURE [dbo].[sp_getPerson]
@myName nvarchar(MAX)
AS
BEGIN
SET NOCOUNT ON;
SELECT *
FROM OPENQUERY(MY_LINKED_SERVER, 'SELECT * FROM myTable
WHERE (myName= ''' + @myName + ''')
') AS derivedtbl_1
END
В случае, если эта работа, в теории?
Отлично! Я просто не уверен в синтаксисе - нужна ли в связанной таблице полный префикс? E.g. SELECT * FROM [LINKED_SERVER] .MYDATABASE.dbo.MYTABLE1 LEFT OUTER JOIN [LINKED_SERVER] .MYDATABASE.dbo.MYTABLE2 ON ... – valoukh
exec sp_addlinkedserver @ server = 'test-sql01'; exec sp_addlinkedsrvlogin @ rmtsrvname = 'test-sql01', @ useself = false, @ rmtuser = 'sa', @ rmtpassword = 'sapassword'; yup ему нужен весь префикс .. но вы можете псевдонимом linkedserver-table, как указано выше. – maSTAShuFu