sql - 从 Openquery 中删除

标签 sql 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(@OPENQUERY+@TSQL)

但是我收到以下错误: “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(@OPENQUERY+@TSQL)

我现在真的很困惑,不知道如何解决。如果你们能帮助我,我将是世界上最幸福的人!或者,如果您有更好和/或更简单的方法,请告诉我! 提前致谢!

最佳答案

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(@OPENQUERY+@TSQL)

这对我有用;)有点愚蠢,在这些 openquery 中你需要多少个 ''''''。

关于sql - 从 Openquery 中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46580369/

相关文章:

sql - IF EXISTS语句中的UNION无法正常工作

MySQL 加权平均值

sql - 删除 SQL Server 2016 中的前导或尾随 CR LF、制表符和空格

sql - 高级 Postgres 的插入/更新速度下降了吗?

sql-server - 是否可以从本地 SQL Server 查询 Azure Active Directory?

SQL 获取组子句的最高重复值

tsql - 如何在动态 SQL 中处理从 OpenQuery 调用到链接分析服务器的空结果集?

mysql - 从 MS SQL 服务器更新 MySql

sql-server - 使用动态查询在 openquery 中转义单引号

mysql - MSSQL链接服务器到mysql实例排序规则字符问题