将行插入具有预定义标识的表中

Mal*_*ist 0 sql t-sql sql-server

我正在将数据从旧数据库传输到新数据库,并且在将数据库插入新数据库时需要保留旧数据库中的ID.但是,它不起作用.

这是我的查询:

SET IDENTITY_INSERT RentalEase.dbo.tblTenant ON
INSERT INTO RentalEase.dbo.tblTenant SELECT [ID]
    ,1
      ,[PropertyID]
    ,0
      ,[UnitID]
      ,[TenantName]
      ,[Sex]
      ,[BirthDate]
      ,[SSNO]
      ,[CoTenant1]
      ,[CoTenant1Sex]
      ,[CoTenant1BirthDate]
      ,[CoTenant1SSNO]
      ,[CoTenant2]
      ,[CoTenant2Sex]
      ,[CoTenant2BirthDate]
      ,[CoTenant2SSNO]
      ,[CoTenant3]
      ,[CoTenant3Sex]
      ,[CoTenant3BirthDate]
      ,[CoTenant3SSNO]
      ,[CarColor]
      ,[CarModel]
      ,[CarYear]
      ,[CarState]
      ,[CarPlateNumber]
      ,[Memo]
      ,[Address1]
      ,[Address2]
      ,[Address3]
      ,[Address4]
      ,[Phone]
      ,[ReferBy]
      ,[BeginDate]
      ,[NoticeGiven]
      ,[LeaseMonth2Month]
      ,[LeaseEnds]
      ,[DepositPaid]
      ,[DepositRefundable]
      ,[RefundMemo]
      ,[RentDueDay]
      ,[Charge1]
      ,[Charge1Amount]
      ,[Charge2]
      ,[Charge2Amount]
      ,[Charge3]
      ,[Charge3Amount]
      ,[Charge4]
      ,[Charge4Amount]
      ,[ContractText]
      ,[BalanceDue]
  FROM [oldTables].[dbo].[tblCurrentTenant]

  SET IDENTITY_INSERT RentalEase.dbo.tblTenant OFF
Run Code Online (Sandbox Code Playgroud)

SQL Server抱怨"只有在使用列列表并且IDENTITY_INSERT为ON时才能指定表RentalEase.dbo.tblTenant中的标识列的显式值".

我需要做些什么才能让它发挥作用?

Rem*_*anu 6

" 只有在使用列列表且IDENTITY_INSERT为ON 时,才能指定 "RentalEase.dbo.tblTenant表中标识列的显式值".

因此,请使用列列表,如消息所示:

SET IDENTITY_INSERT RentalEase.dbo.tblTenant ON
INSERT INTO RentalEase.dbo.tblTenant ([ID], [fieldname], [fieldname], ...)
SELECT [ID], ...
Run Code Online (Sandbox Code Playgroud)