我需要創建一個控制檯應用程序,該應用程序可以將表從一個遠程SQL Server實例複製到另一個遠程SQL Server實例。如何使用EzAPI在遠程SQL Server源和目標上創建和執行SSIS包
我使用了一個名爲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));
}
這段代碼的問題是:
- 它不創建目標服務器上的表,所以我應該 通過自己手動創建它。
- 這段代碼成功運行在本地主機,但是當我嘗試 更改服務器名稱到遠程服務器,它提出了這樣的錯誤:
Unhandled Exception: System.Runtime.InteropServices.COMException (0xC020801C): Exception from HRESULT: 0xC020801C
在網絡上搜索後,我發現這個錯誤的手段該錯誤是Integration services AcquireConnections異常。
那麼我怎麼能得到這個代碼在遠程sql服務器實例上運行,並讓包在傳輸數據之前在目標服務器上創建表。
預先感謝您。