【问题标题】:How do I truncate a table via linked server using a synonym for the table name?如何使用表名的同义词通过链接服务器截断表?
【发布时间】:2013-02-11 23:17:12
【问题描述】:

我知道我可以做到以下几点:

EXEC Server_Name.DBName.sys.sp_executesql N'TRUNCATE TABLE dbo.table_name'

但是如果我想为表格使用同义词怎么办?

我在 SERVER1 上,我想使用表名的同义词截断 SERVER2 上的表。

这可能吗?

【问题讨论】:

  • 您能否更改标记的答案,因为它只是一个不再起作用的链接,所以那里没有有价值的信息。

标签: sql-server tsql linked-server synonym sp-executesql


【解决方案1】:

正确答案的链接已损坏。我遇到了类似的问题。我的解决方法是使用同义词表来查找基础表名,然后运行动态 sql 语句。据记载,同义词不能与 TRUNCATE 一起使用,但至少这是一个不错的解决方法。

DECLARE @TableName VARCHAR(500) = (SELECT TOP 1 base_object_name
    FROM Server_Name.DBName.sys.synonyms WHERE name = 'table_name')
DECLARE @Sql NVARCHAR(MAX) = 'EXEC Server_Name.DBName.sys.sp_executesql N''TRUNCATE TABLE ' + @TableName + ''''
EXEC sys.sp_executesql @Sql

【讨论】:

    【解决方案2】:

    在 Server2 数据库中为截断表创建一个存储过程,然后从 Server1 调用该存储过程。

    像这样:-

    EXEC [Server2].[DBName].[SchemaName].sp_TruncateTable;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-16
      • 1970-01-01
      • 2019-02-19
      相关资源
      最近更新 更多