2013-03-28 13 views
6

シナリオ:ExcelファイルをSQL Server 2008 R2データベースのそれぞれのテーブルにアップロードできるようにするWebアプリケーションを開発しています。また、ユーザーがアップロードボタンをクリックしたときにSSISを使用して開発されたETLプロセスも実行しています。ファイル名をsqlデータベースに保存してssisパッケージを同時に実行

私の開発環境:Asp.net、IIS7、C#のは、SQL Server 2008 R2

私も作成されるように、私は現在のテーブルの別の列にファイルのファイル名を保存する問題に直面しています既にデータベースにアップロードされているファイルをユーザが見ることができるようにし、ユーザがエラーファイルをダウンロードできるようにする。

質問:ETLプロセス中にSSISパッケージを実行しているときにファイル名を同じテーブルに保存する方法はありますか?

以下

は、私のコードのサンプル例です:

string filePath1 = Server.MapPath(System.IO.Path.GetFileName(file.FileName.ToString())); 
file.SaveAs(filePath1); 

package = app.LoadPackage(packageString, null); 
package.Connections["Excel Connection Manager"].ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath1 + ";Extended Properties=Excel 12.0;HDR=YES;IMEX=1"; 
Microsoft.SqlServer.Dts.Runtime.DTSExecResult results = package.Execute(); 

この方法は、私はファイル名を取得することができます:

String.Format("File : {0} uploaded.", file.FileName) 

だから私はパッケージを実行するとき、私は、ファイル名を保存する方法同時にテーブルに?

+0

私は問題を解決することができました: – Spencer

+0

string connectionString = DAO.GetConnectionString(); SqlConnection sqlConn =新しいSqlConnection(connectionString); sqlConn.Open() strQuery = "update uploadSummaryDBはファイル名を@fileNameに設定します(idは(uploadSummaryDBからmax(id)を選択してください)"; SqlCommandコマンド=新しいSqlCommand(strQuery、sqlConn); command.Parameters.Add( "@ fileName"、SqlDbType.NVarChar).Value = file.FileName.ToString(); command.ExecuteNonQuery(); – Spencer

+0

あなたの問題を解決したことを知ってうれしい。あなたの答えを回答として投稿してください。そうすれば、他の人たちがより多くの利益を得ることができます。 – grahamj42

答えて

0
string connectionString = DAO.GetConnectionString(); 
SqlConnection sqlConn = new SqlConnection(connectionString); 
sqlConn.Open() 
strQuery = "update uploadSummaryDB set fileName = @fileName where id in (select max(id) from uploadSummaryDB)"; 
SqlCommand command = new SqlCommand(strQuery,sqlConn); 
command.Parameters.Add("@fileName", SqlDbType.NVarChar).Value = file.FileName.ToString(); command.ExecuteNonQuery(); 
関連する問題