提问人:Rchee 提问时间:11/6/2023 最后编辑:marc_sRchee 更新时间:11/6/2023 访问量:104
突触存储过程中用于sp_rename的参数数不足
Insufficient number of arguments for sp_rename in synapse stored procedure
问:
我在 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
有什么想法为什么吗?
答:
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 有点混乱,我试图找出在不中断最终用户的情况下加载暂存表并更新目标表的最佳方法
下一个:通过对象隔离实现原子性
评论