1

以下のエラーが表示されます

テーブル 'c365online_script1.dbo.tProperty' の ID 列の明示的な値は、列リストが使用され、IDENTITY_INSERT が ON の場合にのみ指定できます。

問題は、私が収集したものから2つのネストされたカーソル内で動的に構築されるステートメントにあります。

INSERT INTO dbo.Table(col1, col2, ...., colN) VALUES(Val1, val2, ...., ValN)

ただし、上記のように BELOW INSERT ステートメントをどのように構築するかはわかりません。

EXEC('INSERT INTO ' + @Destination_Database_Name + '.dbo.' + @tablename + ' SELECT * FROM ' + @Source_Database_Name + '.dbo.' + @tablename + ' WHERE ' + @Source_Database_Name + '.dbo.' + @tablename + '.CompanyID = ' + @Company_Id)
SET @Counter = 1 -- set the counter to make sure we execute loop only once.
END 
4

1 に答える 1

2

列のすべてに挿入するわけではないため (ID 列には挿入しないため)、列のリストを指定する必要があります。別のデータベースの同じ構造のテーブルから挿入していると思います。この場合、すべてのソース列も指定する必要があります。

クエリは次のようになります (列名を編集します)。

EXEC('INSERT INTO ' + @Destination_Database_Name + '.dbo.' + @tablename + '(col1, col2, col3) SELECT col1, col2, col3 FROM ' + @Source_Database_Name + '.dbo.' + @tablename + ' WHERE ' + @Source_Database_Name + '.dbo.' + @tablename + '.CompanyID = ' + @Company_Id)
于 2013-11-01T10:36:09.580 に答える