2017-10-05 8 views
1

Je suis en train de travailler sur un projet concernant les serveurs liés. Comme nous devons transmettre le nom du serveur lié je suis venu avec cette approche:DELETE FROM 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]) 

Mais je reçois l'erreur suivante: syntaxe incorrecte près de « Y4081 ».

je reçois la même erreur en essayant de cette façon:

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! 

Merci à l'avance!

Répondre

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]) 

Cela a fonctionné pour moi;) Un peu ridicule combien de '' '' '' dont vous avez besoin dans ces choses OPENQUERY.

0

Cochez cette case.

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])