【发布时间】:2011-07-20 11:50:19
【问题描述】:
我需要创建一个控制台应用程序,它可以将表从一个远程 sql server 实例复制到另一个远程 sql server 实例。
我正在使用一个名为 EzAPI 的库
连接(源和目标)和表名都将作为参数提供给控制台应用程序。
这是我的尝试:
public class OleDBToOleDB : EzSrcDestPackage<EzOleDbSource, EzSqlOleDbCM, EzOleDbDestination, EzSqlOleDbCM>
{
public OleDBToOleDB(Package p) : base(p) { }
public static implicit operator OleDBToOleDB(Package p) { return new OleDBToOleDB(p); }
public OleDBToOleDB(string SrcServer, string SrcDB, string SrcTable,string SrcUser,string SrcPassword, string DstServer, string DstDB, string DstTable,string DstUser,string DstPassword)
{
SrcConn.SetConnectionString(SrcServer, SrcDB);
SrcConn.ServerName = SrcServer;
SrcConn.InitialCatalog = SrcDB;
SrcConn.UserName = SrcUser;
SrcConn.Password = SrcPassword;
Source.Table = SrcTable;
DestConn.SetConnectionString(DstServer, DstDB);
DestConn.ServerName = DstServer;
DestConn.InitialCatalog = DstDB;
DestConn.UserName = DstUser;
DestConn.Password = DstPassword;
Dest.Table = DstTable;
}
}
static void Main(string[] args)
{
OleDBToOleDB p = new OleDBToOleDB("localhost", "TestDB", "Address", "sa", "123", "localhost", "DestDB", "Address", "sa", "123");
p.Execute();
Console.Write(string.Format("Package2 executed with result {0}\n",p.ExecutionResult));
}
这段代码的问题是:
- 它不会在目标服务器上创建表,所以我应该 自己手动创建。
- 此代码在本地主机上成功运行,但是当我尝试 将服务器名称更改为远程服务器会引发此错误:
未处理的异常:System.Runtime.InteropServices.COMException (0xC020801C):HRESULT 异常:0xC020801C
在网上搜索后发现这个错误表示这个错误是Integration services AcquireConnections异常。
那么我怎样才能让这段代码在远程 sql server 实例上运行,并在传输数据之前让包在目标服务器上创建表。
提前谢谢你。
【问题讨论】:
标签: c# sql-server-2008 ssis etl ezapi