스크립트 작업을 실행하는 SSIS 패키지가 있습니다 (대부분 다른 점이 많습니다). 스크립트 태스크는 OleDB 연결을 사용하여 Access 데이터베이스에 연결합니다. 이것은 Microsoft Jet 4.0 연결입니다. 나는 드라이버를 설치했다. 그러나 프록시 계정을 통해 SQL Agent에서 실행되지는 않습니다. Visual Studio 및 패키지 저장소에서 직접 올바르게 실행됩니다. 사실 프록시가 연결된 특수 계정으로 로그인 할 때 두 위치 모두에서 정상적으로 실행됩니다. 그러나 SQL Server Agent를 통해 실행하면 "Unspecifed Error"OleDbException이 발생합니다. 스크립트 작업에서SSIS 패키지에서 Access DB에 대한 SQL Agent 작업이 실패했습니다.
관련 코드 : 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