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