2010-08-03 1 views
1

У кого-нибудь удалось получить механизм передачи, работающий с колонками FILESTREAM?SMO.Transfer and filestreaming

Мой код выглядит следующим образом:

Transfer transfer = new Transfer(sourceDatabase); 
transfer.CopyAllObjects = true; 

transfer.DropDestinationObjectsFirst = true; 
transfer.CopySchema = true; 
transfer.CopyData = false; 
transfer.CopyAllTables = true; 
transfer.Options.WithDependencies = true; 

transfer.DestinationServer = server.Name; 
transfer.DestinationDatabase = targetDatabaseName; 

transfer.TransferData(); 

Я получаю сообщение об ошибке при создании таблицы с filestreaming столбцами:

«ОШИБКА: ERRORCODE = -1073548784 описание = Выполнение запроса ... не удалось со следующей ошибкой: «Таблица с столбцами FILESTREAM должна иметь уникальный столбцы ROWGUID, отличные от NULL». Возможные причины сбоя: проблемы с запросом, свойство ResultSet неправильно установлены, параметры не установлены правильно или соединение установлено неправильно. helpFile = helpContext = 0 idofInterfaceWithError = {C81DFC5A-3 B22-4DA3-BD3B-10BF861A7F9C} "

Это нечетно, потому что исходная таблица имеет эти свойства. Я пропустил часть процесса передачи?

ответ

1

Как ни странно, это работает отлично:

//transfer.TransferData(); 

System.Collections.Specialized.StringCollection script = transfer.ScriptTransfer(); 

Microsoft.SqlServer.Management.Smo.Database targetDatabase = server.Databases["dbname"]; 
targetDatabase.ExecuteNonQuery(script); 

Может кто-нибудь пролить свет на это? Почему передача будет неудачной, но генерация и запуск скрипта работают нормально?

+0

Это решение, но я не знаю почему. – DanDan