代码之家  ›  专栏  ›  技术社区  ›  Abdu

SQL Server SMO TransferData()一直失败

  •  0
  • Abdu  · 技术社区  · 15 年前

    我正在使用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);
                }
    
    1 回复  |  直到 14 年前
        1
  •  0
  •   Abdu    15 年前

    承载WCF服务(上面的代码)的服务需要在域用户下运行。