Tsql T-SQL';无法插入值NULL';具有非空值的错误

Tsql T-SQL';无法插入值NULL';具有非空值的错误,tsql,ssms-2012,Tsql,Ssms 2012,我正在将一个简单的成员数据库迁移到Identity 2.0。我正在将createdatetime-NULL列复制到createdatetime-NOT-NULL列。我已经检查了数据源表中Membership.CreateDate列中的所有记录,以验证它们是否包含有效的日期时间。返回此错误: Cannot insert the value NULL into column 'CreateDate', table 'Settlement.dbo.AspNetUsers'; column does n

我正在将一个简单的成员数据库迁移到Identity 2.0。我正在将
createdatetime-NULL
列复制到
createdatetime-NOT-NULL
列。我已经检查了数据源表中Membership.CreateDate列中的所有记录,以验证它们是否包含有效的日期时间。返回此错误:

Cannot insert the value NULL into column 'CreateDate', table 'Settlement.dbo.AspNetUsers'; column does not allow nulls. INSERT fails.
The statement has been terminated.
我还尝试删除成员资格中的所有记录,但只删除了一条(其CreateDate列包含
2012-12-27 01:35:03.610
)。我也犯了同样的错误

我正在SSMS中运行脚本

迁移脚本摘录:

CREATE TABLE [dbo].[AspNetUsers] (
    [Id] [nvarchar](60) NOT NULL,
    [UserName] [nvarchar](15) NOT NULL,
    [AcId]  INT          NOT NULL,
    [LocId] INT          NOT NULL,
    [CreateDate] [datetime]      NOT NULL,
    [Email] [nvarchar](60),
    [EmailConfirmed] [bit] Default ((0)) NOT NULL,
    [PasswordHash] [nvarchar] (100),
    [SecurityStamp] [nvarchar] (60),
    [PhoneNumber] [nvarchar] (15),
    [PhoneNumberConfirmed] [bit] Default ((0)) NOT NULL,
    [TwoFactorEnabled] [bit] Default ((0)) NOT NULL,
    [LockoutEndDateUtc] [datetime],
    [LockoutEnabled] [bit] Default ((0)) NOT NULL,
    [AccessFailedCount] [int] Default ((0)) NOT NULL,
    CONSTRAINT [PK_dbo.AspNetUsers] PRIMARY KEY ([Id])
);
GO

INSERT INTO AspNetUsers(Id, UserName, AcId, LocId, PasswordHash, SecurityStamp, CreateDate )
SELECT UserProfile.UserId, UserProfile.UserName, UserProfile.BaId, UserProfile.OfcId,
webpages_Membership.Password, webpages_Membership.PasswordSalt, webpages_Membership.CreateDate
FROM UserProfile
LEFT OUTER JOIN webpages_Membership ON UserProfile.UserId = webpages_Membership.UserId
GO
如果我将AspNetUsers CreateDate列更改为NULL,它会成功地将datetimes从一个表复制到另一个表,这样我就知道所有列名和类型都是正确的。 (做完这件事后,我跑了
ALTER TABLE[dbo].[AspNetUsers]ALTER COLUMN[CreateDate]datetime非空
并且得到了相同的错误)

这在数据库的生产副本中发生。我有一个数据库的开发副本,它是通过相同的EF代码first代码生成的,它成功地将数据复制到CreateDate NOT NULL字段中


我在这一点上束手无策。当源数据是有效的datetimes时,为什么会出现
无法将值NULL插入列
的错误?或者为什么它不能将CreateDate列数据识别为有效的日期时间?

您在
用户配置文件中有一些用户在
网页中没有相应的用户,因此您尝试插入没有任何信息的用户。您必须使用
内部联接
而不是
左侧外部联接
,或者为没有相应信息的用户提供默认值。

谢谢,就是这样。UserProfile中有一个额外的孤立记录。一旦我删除了它,脚本就开始工作了。不删除额外记录的内部联接也起作用。