0

エラーの取得に関する多くの投稿があります。

「IDENTITY_INSERT が ON に設定されている場合、またはレプリケーション ユーザーが NOT FOR REPLICATION ID 列に挿入している場合は、テーブルの ID 列に明示的な値を指定する必要があります」

問題は常に、ユーザーが次のようなことをしようとしていることです。

insert into table1 select * from table2

私の場合、列名を指定していますが、それでもエラーが発生します。

編集: ID 列をキャプチャしようとしている理由は、一時テーブルが最終的に他のデータを に挿入するときのテスト バージョンであるためRC_Incomingです。私のアルゴリズムは次のとおりです。

  1. TempTableのクローンとして作成RC_Incoming
  2. 他のテーブルからデータを挿入しますTempTableRecordID自動生成させます)
  3. すべてが正しく見えることを確認してください
  4. OK の場合は、realz に対して実行します -- に挿入しRC_Incomingます。

コード:

<cfquery datasource="#LOCAL.DataSource#">
    IF OBJECT_ID('tempdb.dbo.##TempTable') IS NOT NULL
        DROP TABLE ##TempTable
    ELSE
    DBCC CHECKIDENT ([##TempTable], RESEED, 1);
    CREATE TABLE ##TempTable
    (   
        [RecordID] [INTEGER] IDENTITY NOT NULL,
        [StudentID] [varchar](15) NOT NULL,
        [CourseNumber] [varchar](6) NOT NULL,
        [CompDateTime] [datetime] NOT NULL,
        [SystemInfo] [varchar](250) NULL,
        [WriteTime] [datetime] default GETDATE() NULL,
        PRIMARY KEY CLUSTERED 
        (
            [StudentID], [CourseNumber], [CompDateTime]
        )
        WITH
        (
            PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = ON, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON
        )
    )
</cfquery>


<cfquery datasource="#LOCAL.DataSource#">
    SET IDENTITY_INSERT ##TempTable ON
    INSERT INTO ##TempTable
        (
            RecordID
            ,StudentID
            ,CourseNumber
            ,CompDateTime
            ,SystemInfo
            ,WriteTime
        )
    SELECT  RecordID
            ,StudentID
            ,CourseNumber
            ,CompDateTime
            ,SystemInfo
            ,WriteTime
     FROM   RC_Incoming
</cfquery>

私はまだ得ています:

データベース クエリの実行中にエラーが発生しました。[Macromedia][SQLServer JDBC ドライバー][SQLServer]IDENTITY_INSERT が ON に設定されている場合、またはレプリケーション ユーザーが NOT FOR REPLICATION ID 列に挿入している場合、テーブル '#TempTable___________________________________________________________________________________________00000000066E' の ID 列に明示的な値を指定する必要があります。

RC_Incoming既にデータがあり、まったく同じ構造を持っています (SQL Server Management Studio で行われます):

CREATE TABLE dbo.[RC_Incoming]
(
    [RecordID] [INTEGER] IDENTITY NOT NULL,
    [StudentID] [varchar](15) NOT NULL,
    [CourseNumber] [varchar](6) NOT NULL,
    [CompDateTime] [datetime] NOT NULL,
    [SystemInfo] [varchar](250) NULL,
    [WriteTime] [datetime] default GETDATE() NULL,
    PRIMARY KEY CLUSTERED 
    (
        [StudentID], [CourseNumber], [CompDateTime]
    )
    WITH
    (
        PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = ON, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON
    ) ON [PRIMARY]
) ON [PRIMARY]
4

0 に答える 0