Sql 无法执行存储过程以插入链接服务器上的表中

Sql 无法执行存储过程以插入链接服务器上的表中,sql,sql-server-2008,Sql,Sql Server 2008,我在服务器a上有一个表a,其中有一组用户数据列。我需要将它插入服务器B上的表B中。我已经编写了一个存储过程来每晚运行这个insert语句(下面的SQL)。如果我选择并执行该过程的任何部分,那么它工作正常,但是如果我尝试作为一个整体执行该过程,那么它会给我一个错误: 对象名ServerB.DatabaseB.dbo.TableB的前缀数超过了最大值。这个 最大值为2 T-SQL语句: IF EXISTS (SELECT * FROM SERVERA.DatabaseA.dbo.TableA) BE

我在服务器a上有一个表a,其中有一组用户数据列。我需要将它插入服务器B上的表B中。我已经编写了一个存储过程来每晚运行这个insert语句(下面的SQL)。如果我选择并执行该过程的任何部分,那么它工作正常,但是如果我尝试作为一个整体执行该过程,那么它会给我一个错误:

对象名ServerB.DatabaseB.dbo.TableB的前缀数超过了最大值。这个 最大值为2

T-SQL语句:

IF EXISTS (SELECT * FROM SERVERA.DatabaseA.dbo.TableA)
BEGIN
 TRUNCATE TABLE SERVERB.DatabaseB.dbo.TableB
 INSERT INTO 
    SERVERB.DatabaseB.dbo.TableB
 SELECT 
   Firstname,
   Surname,
   Username
 FROM 
   SERVERA.DatabaseA.dbo.TableA
END 

有人知道我做错了什么吗?

TRUNCATE TABLE命令的语法如下:

TRUNCATE TABLE 
    [ { database_name .[ schema_name ] . | schema_name . } ]
    table_name
[ ; ]
如您所见,此命令仅支持由不超过三个组件组成的名称,即不能使用
TRUNCATE TABLE
指定链接服务器名称

一种解决方案是使用远程调用
sp_executesql
,如下所示:

EXECUTE SERVERB.DatabaseB.sys.sp_executesql N'TRUNCATE TABLE dbo.TableB';

欢迎使用StackOverflow:如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,并单击编辑器工具栏上的“代码示例”按钮(
{}
),以精确地格式化和语法突出显示它!我将检查您的链接服务器(/权限)是否适用于运行时用户。在ManagementStudio中,执行用户是否可以从SERVERB.DatabaseB.dbo.tableb中选择如何发布整个存储过程代码?你不会碰巧在那里有一个执行者,是吗?