スクリプトタスクを実行するSSISパッケージがあります(主に、その他いくつかのものがあります)。スクリプトタスクは、OleDB接続を使用してAccessデータベースに接続します。これは、Microsoft Jet 4.0接続です。私はドライバがインストールされている。しかし、プロキシアカウント経由でSQLエージェントで実行されることはありません。 Visual Studioとパッケージストアから直接正常に実行されます。実際、プロキシが結びついている特別なアカウントとしてログインすると、両方の場所で正常に動作します。しかし、私がSQL Serverエージェントを介して実行すると、恐ろしい "Unspecifed Error" OleDbExceptionが発生します。スクリプトタスクからSSISパッケージでAccessデータベースにSSISパッケージでエラーが発生しました
関連するコード:SQLエージェントのジョブ履歴を経由して
// class field
private string accessConnectionStringTemplate = "Data Source=\"{0}\";Provider=Microsoft.Jet.OLEDB.4.0;";
// in method that connects to database
Print(file, "Connection string: " + string.Format(accessConnectionStringTemplate, file.FileName));
// outputs: Data Source = "\Path\To\File";Provider=Microsoft.Jet.OLEDB.4.0"
using(access = new OleDbConnection(string.Format(accessConnectionStringTemplate, file.FileName))) {
access.Open();
// other code
}
エラーメッセージ:
- アクセス:
Started: 12:35:10 PM Error: 2016-11-03 12:35:33.51 Code: 0x00000000 Source: Import Files Main Description: Exception: Unspecified error End Error Error: 2016-11-03 12:35:33.51 Code: 0x00000000 Source: Import Files Main Description: at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) at System.Data.ProviderBase.DbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) at System.Data.OleDb.OleDbConnection.Open() at ST_cc0028a4b56242909c2eae546a807995.csproj.ScriptMain.ImportFile(AccessFile file, DateTime startRecordDate, DateTime endRecordDate, List`1 accessTables, Boolean includeTransactionTables, List`1 specifiedTableList) at ST_cc0028a4b56242909c2eae546a807995.csproj.ScriptMain.Main() End Error Error: 2016-11-03 12:35:33.51 Code: 0x00000006 Source: Import Files Description: The script returned a failure result. End Error
いくつかのものは、私は確かで作られてきましたドライバがインストールされ、SQL Agentがオンになっているサーバー上で動作します。私はVSでパッケージを私のアカウントとプロキシのアカウントの両方で問題なく実行することでこれを確認しました。
- プロキシアカウントは問題のファイルにアクセスできます。再度、サーバーにプロキシのアカウントとしてログインして確認します。ファイルはネットワーク共有にありますが、パスはUNCパスとして指定されています。
- プロキシアカウントは、この操作の一部である他のデータベースにアクセスし、他の潜在的なエラーの原因を排除します。
- パッケージストアからSSMS経由でパッケージを実行すると、自分のアカウントとプロキシのアカウントの両方が機能します。私はデータベースサーバー上でこれを確認しました。
私はこれについてインターネットで見たことがあります。これは通常、ドライバの問題です。この場合、私はそれがどうなるかは分かりません。
他の診断に役立つ追加情報を提供していただきありがとうございます。なぜ私はこれがうまくいかないのか全く分かりません。
奇数、ファイルが開かれているか、ロックされていますか? – Siyual
@Siyual:そうではありません。私はSQL Agentの外で実行することができるので、それは問題ではないようです。私はエージェントの仕事を実行しているときに誰かがそれを開いている可能性が高いと思います。 – siride
うん、ここには言葉があります。名目上、接続文字列の引数はセミコロンで区切られていて、引数の前後に引用符がついていません。引用符を取り出してみてください。それはキッカーだろうか? – Clay