这是 EzAPI 中连接管理器的源代码。基于此,EzSqlOleDbCM(这是您正在使用的)扩展 EzOleDbConnectionManager 进而扩展 EzConnectionManager
您在 EzSqlOleDbCm 上使用 SetConnectionString 方法;不幸的是,它被硬编码为仅使用 Windows Auth。
所以这里是我会尝试的选项:
选项1:
EzConnectionManager 公开了一个名为 ConnectionString 的属性并有一个 setter;因此您可以使用此属性直接分配连接字符串(使用您的用户名和密码)(并避免调用 SetConnectionString 方法)。例如:
srcConn.ConnectionString = @"Provider=my_oledb_provider;Data Source=myServerAddress;Initial Catalog=myDataBase; User Id=myUsername;Password=myPassword";
选项 2:
此外,EzOleDbConnectionManager 公开了 UserName 和 Password 属性;因此您也可以使用这些属性来指定您的用户名和密码。但是,如果您这样做,则不能使用 SetConnectionString 方法;cos 被硬编码为使用 Windows Auth,这意味着您必须使用上一个选项再次覆盖它。
srcConn.UserName = "my_user_name";
srcConn.Password = "my_password";
选项 3:
如果您在项目中直接使用 EzAPI 源代码,我将添加另一种称为 SetConnectionString 的便捷方法,但它接受用户名和密码。
public void SetSqlAuthConnectionString(string server, string db, string user, string pwd)
{
// Notice that we are just setting the ConnectionString property.
ConnectionString =string.Format("Provider=my_oledb_provider;Data Source={0};Initial Catalog={1};User Id={2};Password={3}", server, db, user, pwd
};
然后你可以使用如下:
srcConn.SetSqlAuthConnectionString(myServer, myDB, userName, password);
或者,在更高的层次上:我也会给 Biml 一个机会。如果这能很好地满足您的需求。另外,我写了一个类似于 EzApi 的库,叫做Pegasus;你可以在这里找到。您可以查看源代码并重新使用它或按原样使用代码。现在 EzAPI 和 Pegasus 都是 SSIS 对象模型 API 的包装器。因此,您可以直接使用 SSIS API;但是直接使用它会很痛苦,因为您将编写大量样板代码并重复您的代码。您最好针对官方 API 编写自己的包装器;或使用 EzAPI 或 Pegasus 之类的东西。
如果 SSIS 是您的日常工作,并且您根据某些模式创建了很多包,那么我建议您一定要研究包自动化。开发和测试时间的节省是巨大的,巨大的,巨大的。如果您不愿意使用 3rd 方库(如 EzApi 或 Pegasus),我建议您查看这些库的源代码并自行开发;或比姆尔。
如果您需要有关包自动化的任何指导/意见,请告诉我。