2017-10-05 4 views
1

나는 연결된 서버와 관련된 업무에서 프로젝트를 수행하고 있습니다. 우리는 연결된 서버의 이름을 전달해야로서 나는이 방법을 함께했다 :Openquery에서 삭제

DECLARE @OPENQUERY nvarchar(4000), @TSQL nvarchar(4000), @LinkedServer nvarchar(4000); 
DECLARE @name nvarchar(10) = 'Y4081'; 
SET @LinkedServer = 'linkedserver' 
SET @OPENQUERY = 'DELETE FROM OPENQUERY('+ @LinkedServer +', ''' 
SET @TSQL = 'SELECT * FROM [MyDataBase].[dbo].[MyTable] WHERE Name = ''Y4081'' '')' 
EXEC(@[email protected]) 

그러나 나는 다음과 같은 오류 얻을 : 잘못된 근처의 구문이 'Y4081'를. 그런 식으로하려고 할 때

나는 같은 오류가 발생합니다 :

DECLARE @OPENQUERY nvarchar(4000), @TSQL nvarchar(4000), @LinkedServer nvarchar(4000); 
DECLARE @name nvarchar(10) = 'Y4081'; 
SET @LinkedServer = 'linkedserver' 
SET @OPENQUERY = 'DELETE FROM OPENQUERY('+ @LinkedServer +', ''' 
SET @TSQL = 'SELECT * FROM [MyDataBase].[dbo].[MyTable] WHERE Name = ''' + @name + ''' '')' 
EXEC(@[email protected]) 

I'm really stuck at this point and I don't know how to solve it. If you guys could help me I'd be the happiest man alive! Or if you have a better and/or easier approach just tell me! 

사전에 감사!

답변

0
DECLARE @OPENQUERY nvarchar(4000), @TSQL nvarchar(4000); 
DECLARE @linkedserver nvarchar(100); 
DECLARE @name nvarchar(10) = 'Y4081'; 
SET @linkedserver = 'linkedserver'; 
SET @OPENQUERY = 'DELETE FROM OPENQUERY('+ @linkedserver +',''' 
SET @TSQL = 'SELECT * FROM [MyDataBase].[dbo].[MyTable] WHERE Name = ''''' + @name + ''''' '')' 
EXEC(@[email protected]) 

, 일종의 바보가) 얼마나 많은 '' ''당신이이 OPENQUERY 것들에 필요한 ''.

0

확인하십시오.

이것은 나를 위해 일한
DECLARE @OPENQUERY nvarchar(4000), @TSQL nvarchar(4000), @LinkedServer nvarchar(4000); 
DECLARE @name nvarchar(10) = 'Y4081'; 
SET @LinkedServer = 'linkedserver' 
SET @OPENQUERY = 'DELETE FROM OPENQUERY('+ @LinkedServer +', ''' 
SET @TSQL = 'SELECT * FROM [MyDataBase].[dbo].[MyTable] 
WHERE Name = '[email protected]+' '')' 
EXEC(@[email protected])