SMO.Transfer和文件流

时间:2010-08-03 12:18:37

标签: sql-server smo sql-server-2008-r2

有没有人设法让传输机制与FILESTREAM列一起使用?

我的代码如下:

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();

我在使用文件流列创建表时收到错误消息:

“错误:errorCode = -1073548784 description =执行查询...失败并出现以下错误:”具有FILESTREAM列的表必须具有非NULL唯一的ROWGUID列。“。可能的失败原因:问题查询,“ResultSet”属性设置不正确,参数设置不正确,或连接未正确建立。  helpFile = helpContext = 0 idofInterfaceWithError = {C81DFC5A-3B22-4DA3-BD3B-10BF861A7F9C}“

这很奇怪,因为源表肯定设置了这些属性。我错过了转移过程的一部分吗?

1 个答案:

答案 0 :(得分:1)

奇怪的是,这很好用:

//transfer.TransferData();

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

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

任何人都可以对此有所了解吗?为什么传输失败,但生成和运行脚本工作正常?