SQL Server SMO TransferData () продолжает сбой - PullRequest
0 голосов
/ 20 мая 2009

Я использую метод TransferData класса передачи в SQL Server SMO. У меня есть вызов, работающий в Windows XP, с SQL Server 2008 с пакетом обновления 1 (SP1), пытающийся перенести таблицу с SQL Server 2000 на другом сервере на компьютер с XP. Они оба используют одно и то же имя пользователя и пароль SQL. Я проверил с помощью мастера импорта / экспорта, и он работал нормально.

Ниже приведена исключительная ситуация, и в журнале событий есть ошибка "Пакет" ShellPackage "ошибка".

Ошибка исключения показывает свойство запроса как пустое и не заменяющее. Я предполагаю, что какая-то часть DTS терпит неудачу, но я не уверен, что и почему.

Исключение: "ОШИБКА: 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 Ответ

0 голосов
/ 21 мая 2009

Служба, на которой размещается служба WCF (код выше), необходимая для запуска под пользователем домена.

...