0

我有以下代码:

set identity_insert CapModel.LedgerAmountByECMAccountByRptLOB ON

INSERT INTO [AnalyticsV2P7].[CapModel].[LedgerAmountByECMAccountByRptLOB] (AccountintDate,Ledger,Period,RptLOB,ECMAccount,Amount,AmountId)
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=E:\Database\Data\AnalyticsV2P7\LedgerAmountByECMAccountByRptLOB.xlsx', 'SELECT * FROM [Sheet1$]');

set identity_insert CapModel.LedgerAmountByECMAccountByRptLOB Off

whereAmountID是一个标识列,其中不允许 NULL 值。在我的 Excel 文件中,该列是空白的(除了标题)

我收到以下错误消息:

无法将值 NULL 插入列“AmountId”、表“AnalyticsV2P7.CapModel.LedgerAmountByECMAccountByRptLOB”;列不允许空值。插入失败。

我知道不允许 NULL 值,因为我是这样设置的,但它不应该填充标识列所以没有 NULL 值吗?

我将不胜感激任何帮助!

谢谢

4

1 回答 1

1

SET IDENTITY_INSERT意味着您正在为标识列提供值 - 您就是这样,因为它既在您的列列表中,又从您的 SELECT 语句返回。

删除 SET IDENTITY_INSERT 行,并从列列表中删除 AmountId。您还需要枚举从 Excel 工作表返回的列,以免提供 AmountId。

于 2012-10-05T20:22:48.923 回答