2017-01-17 33 views
0

SSISパッケージを使用していましたが、現在この問題が発生しています。私はパッケージ変数で書いた接続文字列を使って開発しており、その値は式を通してConnection Mannagerに送られます。このようなもの:@ [User :: Connection]SSISパッケージのXML構成ファイルのエラー

デバッグにはうってつけでした。スクリプトタスクとスクリプトコンポーネントの中でいくつかのストアドプロシージャを呼び出す必要があるので、データベースへの文字列接続としてPackage変数を呼び出すだけです。私はETLの世界(1ヵ月未満)に慣れていて、いくつかのパッケージ(実際には6)をやっているので、最近私はConnectionStringをxmlファイルに保存し、ユーザー、パスワードはここに記載されている通りです(プロダクションサーバーはおそらく異なるユーザーアカウントを持っているので、とhere

今、私はそれを言うことを試みましたが、それは私のためには機能しません。だから私はSSISの新しいパッケージを作成してテストし、スクリプトタスクとそれを呼び出す単純なストアドプロシージャを含んでいます。パッケージ構成は、接続マネージャからのみConnectionStringプロパティが含まれており、それがこのようなものになります。私は開始時にリンクが提案し、取得しようと同じように、最後にパスワードを追加

<?xml version="1.0" ?> 
- <DTSConfiguration> 
- <DTSConfigurationHeading> 
    <DTSConfigurationFileInfo GeneratedBy="JohnSmith" GeneratedFromPackageName="Package" GeneratedFromPackageID="{2C421533-C76C-4583-841C-367C50DB61C1}" GeneratedDate="17/01/2017 --:--:-- p.m." /> 
    </DTSConfigurationHeading> 
- <Configuration ConfiguredType="Property" Path="\Package.Connections[OLEDB_CONNECTION].Properties[ConnectionString]" ValueType="String"> 
    <ConfiguredValue>Data Source=ServerName;User ID=UserName;Initial Catalog=DatabaseName;Provider=SQLNCLI10.1;Auto Translate=False;Application Name=SSIS-Package-{C24F1A69-A9A3-40D4-8A1E-7EA61E0EB57D}ServerName.DatabaseName.UserName;Use Encryption for Data=False;Password=abc123;</ConfiguredValue> 
    </Configuration> 
    </DTSConfiguration> 

String cn = Dts.Connections["OLEDB_CONNECTION"].ConnectionString; 

し、このように、ストアドプロシージャでそれを呼び出す:

using (OleDbConnection con = new OleDbConnection(cn)) 
{ 
    using (OleDbCommand cmd = new OleDbCommand("dbo.usp_sgn_conseguirNumDoc", con)) 
    { 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.Add("@var_CODDOC", OleDbType.VarChar, 3).Value = "001"; 
     cmd.Parameters.Add("@var_NUMDOC", OleDbType.BigInt).Direction = ParameterDirection.Output; 
     con.Open(); 
     cmd.ExecuteNonQuery(); 
     result = Int64.Parse(cmd.Parameters["@var_NUMDOC"].Value.ToString()); 
    } 
    } 
スクリプトタスクでこのようconnetionString 363010

しかし、con.Open()で失敗します。私はConnectionStringをチェックすると、同じですが、のパスワードの値は書きません。そのようなそれはxmlの設定ファイルからそれを読んでいない。私は、エラー一覧ウィンドウにメッセージタブをチェックすると、私はこれを参照してください。何をすべきかのアイデアのうち

<DTS:ConnectionManager> 
<DTS:Property DTS:Name="DelayValidation">0</DTS:Property> 
<DTS:Property DTS:Name="ObjectName">OLEDB_CONNECTION</DTS:Property> 
<DTS:Property DTS:Name="DTSID">{C24F1A69-A9A3-40D4-8A1E-7EA61E0EB57D}</DTS:Property> 
<DTS:Property DTS:Name="Description"></DTS:Property> 
<DTS:Property DTS:Name="CreationName">OLEDB</DTS:Property><DTS:ObjectData><DTS:ConnectionManager> 
<DTS:Property DTS:Name="Retain">0</DTS:Property><DTS:Password DTS:Name="Password" Sensitive="1"></DTS:Password> 
<DTS:Property DTS:Name="ConnectionString">Data Source=ServerName;User ID=UserName;Initial Catalog=DatabaseName;Provider=SQLNCLI10.1;Auto Translate=False;Application Name=SSIS-Package-{C24F1A69-A9A3-40D4-8A1E-7EA61E0EB57D}ServerName.DatabaseName.UserName;Use Encryption for Data=False;</DTS:Property></DTS:ConnectionManager></DTS:ObjectData></DTS:ConnectionManager> 

イム、任意のヘルプは、Visual Studio 2008とSQL Server 2008を使用して

イムを理解されるであろう

+0

パッケージを次のように設定ファイルにリンクしましたか?https://technet.microsoft.com/en-us/library/ms140213(v=sql.105).aspx –

+0

@ Nick.McDermaid Connection Managerから接続文字列プロパティのみをリンクしました – Mokz

答えて

0

最後に、数日後に私の頭を机にぶつけて、それをすることができました。それは愚かな解決ですが、それは千年のうちに私の心を越えたことはありません! this questionはここ受け入れ答えが、この部分、私を助けていない:

あなたがプロパティに行くとパスワードを追加することにより、構成文字列でパスワードを保存することができます=あなたのパスワードが、非常に重要な「パスワード」単語の前にスペースを入れて、その後 ';'

それが働いたという事実は、私の心を吹き飛ばしました。スクリプト内で、その後、および:その後、スクリプトタスクで私は、接続マネージャ]タブを設定する必要がありました

String cn = Dts.Connections["OLEDB_CONNECTION"].ConnectionString; 

とスクリプトコンポーネント(データフロータスク)の内部で使用します(OLEDB_CONNECTIONそれに同じ名前を与えました)私は使用します:

String cn = This.Connections.OLEDBCONNECTION.ConnectionString; 

それはうまくいった!

+0

うわー、私はそれを知らなかった。もう1つの方法は、Windows統合認証を一貫して使用することです。その後、パスワードは必要ありません –

+0

ええ、私はそれをしたかったのですが、特にSQL Server認証を使用するように求められました – Mokz

関連する問題