Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 绕过SQL Server中的错误_Sql Server - Fatal编程技术网

Sql server 绕过SQL Server中的错误

Sql server 绕过SQL Server中的错误,sql-server,Sql Server,在SQL Server中将多行插入到表中时,如果a出现错误,我如何记录该错误并通过绕过该错误继续插入下一条记录?当所有插入都一次性运行时(如在插入到…选择中)。数据库实现ACID,其中一个组件(a,原子性)意味着(根据): 原子性要求每个事务都是“全部或无” 这意味着您必须在单个语句中分离您的操作,而在SQL Server中,这些语句是单个事务(另一方面,在Oracle中,由于默认情况下,它在一个事务中运行所有后续查询,因此这仍然不起作用) 您可以创建单独的insert语句,并将每个语句放在一个

在SQL Server中将多行插入到表中时,如果a出现错误,我如何记录该错误并通过绕过该错误继续插入下一条记录?

当所有插入都一次性运行时(如在
插入到…选择中)。数据库实现ACID,其中一个组件(a,原子性)意味着(根据):

原子性要求每个事务都是“全部或无”

这意味着您必须在单个语句中分离您的操作,而在SQL Server中,这些语句是单个事务(另一方面,在Oracle中,由于默认情况下,它在一个事务中运行所有后续查询,因此这仍然不起作用)

您可以创建单独的insert语句,并将每个语句放在一个单独的insert语句中

样本:

-- first
begin try
    insert into ...
end try
begin catch
    -- log error
end catch; 

-- second
begin try
    insert into ...
end try
begin catch
    -- log error
end catch; 

谢谢Patrick,但我听到并尝试在插入后添加GO,它实际上会插入下一条记录。就此而言,更新也会成功。另外,你能告诉我哪些表日志被存储,或者我如何手动存储日志吗?我不知道是否有保存此类错误的默认日志位置(我不这么认为)。有一个选项,但这可能不是您想要的。您可以使用
try…catch
,如果出现错误,您可以自己插入日志表。谢谢。但使用“go”只显示错误并继续输入下一条记录。它不会停止。这是怎么回事?我认为这在SQL Server Management Studio中有效,但在calli来自外部代码的ng。