於是在script task中,利用讀取dtsConfig中的connectionString,再傳遞給自訂的DLL method
執行時,在script task出現了一段錯誤
System.ArgumentException: 不支援關鍵字: 'provider'。
於 System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable
synonyms, Boolean firstKey)
於 System.Data.Common.DbConnectionOptions..ctor(String connectionString, Hashtable synonyms, Boolean useOdbcRules)
於 System.Data.SqlClient.SqlConnectionString..ctor(String connectionString)
於 System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous)
於 System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(String connectionString, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions)
於 System.Data.SqlClient.SqlConnection.ConnectionString_Set(String value)
於 System.Data.SqlClient.SqlConnection.set_ConnectionString(String value)
於 System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Initialize(IDataServices dataServices, Object connection)
於 System.Data.Linq.DataContext.Init(Object connection, MappingSource mapping)
於 System.Data.Linq.DataContext..ctor(String fileOrServerOrConnection, MappingSource mapping)
於 System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable
synonyms, Boolean firstKey)
於 System.Data.Common.DbConnectionOptions..ctor(String connectionString, Hashtable synonyms, Boolean useOdbcRules)
於 System.Data.SqlClient.SqlConnectionString..ctor(String connectionString)
於 System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous)
於 System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(String connectionString, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions)
於 System.Data.SqlClient.SqlConnection.ConnectionString_Set(String value)
於 System.Data.SqlClient.SqlConnection.set_ConnectionString(String value)
於 System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Initialize(IDataServices dataServices, Object connection)
於 System.Data.Linq.DataContext.Init(Object connection, MappingSource mapping)
於 System.Data.Linq.DataContext..ctor(String fileOrServerOrConnection, MappingSource mapping)
於是乎,將dtsConfig中connectionstring的provider移除, 接著又出現了以下的錯誤
"ConnectionString 中未指定 OLE DB 提供者。正確範例為 Provider=SQLOLEDB;。"
於是乎,又將dtsConfig中connectionstring的Provider改成 Provider=SQLOLEDB
怎麼著..., 又出現剛剛的 不支援關鍵字: 'provider'。 的錯誤...
也過給多種不同的連線字串,也爬了很久很久的文, 攏無法度解決....
唉, 同樣的連線字串,在不同的地方使用, 有的OK, 有的出搥...
最後, 試了半天,只好先在自訂的DLL,把接收過來的連線字串中,其中Provider的關鍵字後的字串全移除掉
所以原本傳入
Data Source=ttt;User ID=sa;Password=1234;Initial Catalog=test;Provider=SQLNCLI.1;Persist Security Info=True;
取代後就變成
Data Source=ttt;User ID=sa;Password=1234;Initial Catalog=test;
然後,我的SSIS就可以正常執行了.
方法不好,只能解燃眉之急, 還得要Provider=SQLNCLI.1;Persist Security Info=True;這段寫在最後面才行
後記.....
同事在問, 你很奇怪耶, 既然要移掉Provider, 那何不在傳入時就不要給不就行了??
我也很想啊, 就是不行啊,一直出現
"ConnectionString 中未指定 OLE DB 提供者。正確範例為 Provider=SQLOLEDB;。"
到底connectionString 要怎麼給呢?
沒有留言:
張貼留言