2012-02-03 19 views
-1

SSISを使用してExcelファイルをSql Server Tableに挿入しています。私はそれが一括挿入を使用し、結果として 'CreationDate'と 'ModificationDate'カラム(どちらもデフォルトとしてgetdate()で計算されたカラム)に挿入されないと信じています。SSISは計算された列を挿入しません。

この問題を回避する方法はありますか?

また、これらの日付の列は両方ともExcelの一部ではありません。正確なシナリオは次のとおりです。

私のExcelにはコードと説明の2つの列があります。私のSQL Serverテーブルには、コード、説明、CreationDate、ModificationDateの4つの列があります。

したがって、SSISはデータをコピーするときにコードと説明をコピーしますが、CreationDateとModificationDate(SQL Server Computed Columns)は両方とも空です。

+2

「計算された列はSSIS」または「デフォルトのターゲット表の通常の列」を意味しますか? 「Computed column」はSQL Serverでは正確な意味を持ち、 – gbn

+0

のようには聞こえません。SQL Serverでは「Computed Columns」です。これは、sqlserverコマンドgetdate()を使用して計算されます。 – Prabhuram

+2

@Prabhuram - そうではありません。 'CreationDate as getdate()'として定義された計算カラムを*持っていた場合、常に現在のdatetimeが返されます。 gbnが示唆するように、列にデフォルト値が設定されていることを意味します。 –

答えて

3

あなたはGETDATE()のように定義computed columnは、あなたがそれを照会するたびに変更されます創造 をログに記録する場合は、デフォルトの制約で通常の列を使用する必要があります。

それははあなたが「デフォルトで通常の列」を意味と仮定し、そう

を埋めることがに計算列にも不可能ではないが、あなたはこれがデフォルト

を上書きしますSSISからstop sending NULLを必要としますすべてはここに示された:

CREATE TABLE #foo (
    bar int NOT NULL, 
    testCol1Null datetime NULL DEFAULT GETDATE(), 
    testCol1NotNull datetime NOT NULL DEFAULT GETDATE(), 
    testCol2 AS GETDATE() 
    ); 
INSERT #foo (bar, testCol1Null) VALUES (1, NULL); 

SELECT * FROM #foo; 
WAITFOR DELAY '00:00:00.100'; 
SELECT * FROM #foo; 
WAITFOR DELAY '00:00:00.100'; 
SELECT * FROM #foo; 

DROP TABLE #foo; 

あなたがBulk Insert Task in SSISを使用していると仮定すると、あなたはオプションPAに「未チェック/ヌルの=をオフにしてください」に設定する必要がありますGE

1

あなたが

col1 datetime default getdate() 

もオフにする必要があり一括挿入KEEPNULLSためのオプションがあるはず取得指定する列(複数可)のデフォルトの制約を持つべきです。 Bulk Insert on MSDN:

から

は、空の列の代わりに挿入さ 列の任意のデフォルト値を有することが、一括インポート操作中にNULL値を保持することを指定します。詳細については、一括インポート中のNULL値の保持または の既定値の使用を参照してください。

KEEPNULLSも文書化されている:http://msdn.microsoft.com/en-us/library/ms187887.aspx

0

は、あなたのデータフローで派生列に入れて、必要な値を持つ2つの欠落しているカラムを投入。

0

計算された列の値はデータベースに物理的に存在せず、SQL Serverがアクセスするたびに計算されます。そのため、挿入時に値を通知できません。

必要なものはデフォルトの列です。これは、他の値を通知しない場合に挿入されるデフォルト値を持つ列です。

CreationDate datetime default getdate() 
ModificationDate datetime default getdate() 
関連する問題