突触存储过程中用于sp_rename的参数数不足

Insufficient number of arguments for sp_rename in synapse stored procedure

提问人:Rchee 提问时间:11/6/2023 最后编辑:marc_sRchee 更新时间:11/6/2023 访问量:104

问:

我在 Synapse 专用 sql 池中有此存储过程,该存储过程正在将临时表重命名为主表。

ALTER PROCEDURE [dbo].[RenameStagingTableToDedicatedTable]
(

    @DedicatedTableName VARCHAR(MAX)
)
AS
BEGIN
    -- Check if the Dedicated table exists
    IF EXISTS (SELECT 1 FROM sys.objects WHERE type = 'U' AND name = @DedicatedTableName)
    BEGIN
        -- Rename the staging table to the Dedicated table
        EXEC sp_rename 'gold.Service_Staging', 'gold.Service'
 
        -- Drop the existing Dedicated table
        EXEC ('DROP TABLE ' + @DedicatedTableName)
    END
    ELSE
    BEGIN
        -- The Dedicated table does not exist, so rename the staging table to the Dedicated table
        EXEC sp_rename 'gold.Service_Staging', 'gold.Service'
 
    END
END
GO

执行此存储过程时,出现以下错误:

为过程或函数提供的参数数量不足sp_rename

有什么想法为什么吗?

sql azure stored-procedures azure-sql-database azure-synapse

评论


答:

2赞 Mitch Wheat 11/6/2023 #1

sp_rename在 Azure Synapse Analytics 中处于预览状态:

适用于:Azure Synapse Analytics

在 Azure Synapse Analytics 的 sp_rename(预览版)中,COLUMN 是 指定要重命名的对象类型为 列,并且必须始终包含在 sp_rename 语句中。一个 仅当列不是分布列时,才能重命名该列。

因此,您目前只能重命名列(这似乎是一个奇怪的限制)。

此外,您似乎可能遇到 XY 问题。临时表通常创建一次并被截断,或者根据需要简单地创建并删除。

评论

0赞 Rchee 11/6/2023
@Mitch_Wheat 是的,我认为我正在使用的 SP 有点混乱,我试图找出在不中断最终用户的情况下加载暂存表并更新目标表的最佳方法