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())
端接