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

SMO.传输和文件流

  •  1
  • DanDan  · 技术社区  · 14 年前

    有人设法让传输机制与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();
    

    创建包含filestreaming列的表时收到错误消息:

    “错误:errorCode=-1073548784 description=正在执行查询。。。失败,出现以下错误:“具有FILESTREAM列的表必须具有非NULL唯一ROWGUID列。”。可能的失败原因:查询有问题,“ResultSet”属性设置不正确,参数设置不正确,或者连接建立不正确。

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

    1 回复  |  直到 14 年前
        1
  •  1
  •   DanDan    14 年前

    奇怪的是,这很管用:

    //transfer.TransferData();
    
    System.Collections.Specialized.StringCollection script = transfer.ScriptTransfer();
    
    Microsoft.SqlServer.Management.Smo.Database targetDatabase = server.Databases["dbname"];
    targetDatabase.ExecuteNonQuery(script);
    

    有人能解释一下吗?为什么传输失败,而生成和运行脚本工作正常?