【发布时间】:2020-11-19 12:35:53
【问题描述】:
尝试执行存储过程时出现以下错误:
消息 2714,级别 16,状态 6,过程 Hire_Termination,第 18 行 [批处理开始第 2 行]
数据库中已经有一个名为“Employees”的对象
我在另一个实例中创建了表,我必须使用 JSON 文件并将其导入 SQL Server:
USE [Kronos]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Hire_Termination]
AS
DECLARE @JSON nvarchar(max)
SET @JSON = N'{C:\Automation\Kronos.JSON}'
BEGIN
SELECT @JSON = BulkColumn
FROM OPENROWSET (BULK 'C:\Automation\Kronos.JSON', Single_Clob) import
SET NOCOUNT ON;
SELECT *
INTO [Kronos].[dbo].[Employees]
FROM OPENJSON (@JSON)
END
【问题讨论】:
-
在另一个实例上创建表是什么意思?每次执行时,proc 代码都会尝试使用
SELECT INTO创建新表dbo.Employees。一旦proc第一次运行,后续的执行就会出错,因为表已经存在。 -
不要在没有充分理由的情况下随意使用 3 个零件名称 - 这只会成为维护问题。您的过程在 Kronos 数据库中 - 只需使用 2 部分名称 (schema.table) 来引用正确的对象。
标签: sql json sql-server stored-procedures import