4

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

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

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

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

这可能吗?

4

2 回答 2

2

正确答案的链接已损坏。我遇到了类似的问题。我的解决方法是使用同义词表来查找基础表名,然后运行动态 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
于 2016-11-15T17:38:16.273 回答
0

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

像这样 :-

执行 [Server2].[DBName].[SchemaName].sp_TruncateTable;

于 2016-11-09T13:12:11.393 回答