Sql server T-SQL&;Access::生成未插入值的日志

Sql server T-SQL&;Access::生成未插入值的日志,sql-server,tsql,ms-access,logging,sql-insert,Sql Server,Tsql,Ms Access,Logging,Sql Insert,我有一个用Access编写的非常旧的应用程序,它试图在sqlserver上的表中插入一些数据。 应用程序无法插入,因为该表上有主键 所以我用这种方式解决了这个问题: IF NOT EXISTS (SELECT 'X' FROM [dbo].[Loan Type] WHERE [Loan Type ID] = 'HOME EQUITY') INSERT INTO [dbo].[Loan Type] ( [Loan Type ID], [Name] )

我有一个用
Access
编写的非常旧的应用程序,它试图
sqlserver
上的表中插入一些数据。 应用程序无法插入,因为该表上有主键

所以我用这种方式解决了这个问题:

IF NOT EXISTS (SELECT 'X' FROM [dbo].[Loan Type]
               WHERE [Loan Type ID] = 'HOME EQUITY')
    INSERT INTO [dbo].[Loan Type] ( [Loan Type ID], [Name] )
    VALUES ('HOME EQUITY', 'Home Equity Loan')
现在我没事了,所有的数据都被插入,已经存在的数据被跳过。:)

问题:如何在
T-SQL
Access
中生成一个日志,告诉我跳过了哪些数据?我需要类似于错误继续时的
,LOG=MAXERRORS=10


欢迎使用任何
T-SQL
Access
解决方案

继续出错,LOG=MAXERRORS=10

SQL Server没有满足您要求的功能。一些ETL工具,比如SSI,也有它

因此,将逻辑放入t-sql代码中可以实现类似的功能:

1:
If..Else

如果不存在(从[dbo]中选择“X”。[贷款类型]
其中[贷款类型ID]=“房屋净值”)
插入[dbo].[Loan Type]([Loan Type ID],[Name])
价值(“房屋净值”、“房屋净值贷款”)
其他的
插入到[dbo].[Log]([Loan Type ID],[Name],DateAdd)中
价值('HOME EQUITY','HOME EQUITY Loan',GETDATE())
  • Try..Catch
    。类似于:
  • 开始尝试
    插入[dbo].[Loan Type]([Loan Type ID],[Name])
    价值(“房屋净值”、“房屋净值贷款”)
    结束尝试
    开始捕捉
    插入到[dbo].[Log]([Loan Type ID],[Name],DateAdd)中
    价值('HOME EQUITY','HOME EQUITY Loan',GETDATE())
    端接