1


0

SMO.Transferとファイルストリーミング

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 回答


1


奇妙なことに、これはうまくいきます:

//transfer.TransferData();

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

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

誰もがこれに光を当てることはできますか? 転送が失敗するのに、スクリプトの生成と実行がうまくいくのはなぜですか?