我正在使用SQL Server SMO中传输类的TransferData方法。
我有一个在Windows XP上运行的调用,运行SQL Server 2008 SP1,试图将表从另一台服务器上的SQL Server 2000传输到XP计算机。它们都使用相同的SQL用户名和密码。我已经使用导入/导出向导进行了测试,运行正常。
异常在下面,事件日志中有一个条目“package”shellpackage“failed”错误。
异常错误将查询属性显示为空,不替换。我假设某些数据传输服务部分失败了,但我不确定是哪一个,为什么。
例外:
“错误:errorcode=-1073548784 description=执行查询\”“失败,错误如下:”““”的类型初始值设定项引发了异常.\”“。”可能的失败原因:查询问题、“resultset”属性设置不正确、参数设置不正确或连接未正确建立。\r\n helpfile=helpContext=0 idofInterfaceWitherRor=c81dfc5a-3b22-4da3-bd3b-10bf861a7f9c
我的代码:
try
{
string MasterUser = ConfigurationSettings.AppSettings["SQLUserName"];
string MasterPassword = ConfigurationSettings.AppSettings["SQLPassword"];
Server server = new Server(SourceServer);
server.ConnectionContext.LoginSecure = false;
server.ConnectionContext.Login = MasterUser;
server.ConnectionContext.Password = MasterPassword;
Database databaseSource = server.Databases[SourceDatabaseName];
Transfer transfer = new Transfer(databaseSource);
transfer.CopyAllObjects = false;
transfer.DropDestinationObjectsFirst = false;
transfer.UseDestinationTransaction = true;
if (IsBasic)
{
transfer.CopyAllDefaults = false;
transfer.Options.Indexes = false;
transfer.Options.DriAll = false;
transfer.CopyAllDefaults = false;
}
else
{
transfer.CopyAllDefaults = true;
transfer.Options.Indexes = true;
transfer.Options.DriAll = true;
transfer.CopyAllDefaults = true;
}
transfer.Options.AnsiFile = true;
transfer.Options.SchemaQualify = true;
transfer.Options.WithDependencies = false;
transfer.CreateTargetDatabase = false;
transfer.CopySchema = true;
if (CopyData)
transfer.CopyData = true;
else
transfer.CopyData = false;
transfer.DestinationServer = DestinationServer;
transfer.DestinationDatabase = DestinationDatabaseName;
transfer.DestinationLoginSecure = false;
transfer.DestinationLogin = MasterUser;
transfer.DestinationPassword = MasterPassword;
//find the able object
foreach (Table table in databaseSource.Tables)
{
if (table.Name == TableName)
{
tableToTransfer = table;
break;
}
}
transfer.Options.IncludeIfNotExists = true;
transfer.ObjectList.Add(tableToTransfer);
transfer.TransferData();
}
catch (DbException dbExp)
{
throw new FaultException(dbExp.Message);
}
catch (Exception ex)
{
throw new FaultException(ex.Message);
}