2017-10-05 53 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])