CopyAllViews = false 被 SMO 忽略

CopyAllViews = false is being ignored by SMO

我希望 SMO 不编写视图脚本,所以我这样做

 var transfer = new Transfer(database)
    {
        CopyAllTables = true,
        CopyAllDefaults = false,
        CopyAllStoredProcedures = true,
        CopyAllDatabaseTriggers = true,
        CopyAllObjects = false,
        CopyAllPartitionFunctions = false,
        CopyAllPartitionSchemes = false,
        CopyAllRoles = false,
        CopyAllRules = true,
        CopyAllSchemas = true,
        CopyAllSqlAssemblies = false,
        CopyAllSynonyms = false,
        CopyAllUserDefinedAggregates = true,
        CopyAllUserDefinedDataTypes = true,
        CopyAllUserDefinedFunctions = true,
        CopyAllUserDefinedTypes = true,
        CopyAllUsers = false,
        CopyAllViews = false,
        Options =
        {
            WithDependencies = true,
            DriAll = true,
            Triggers = true,
            Indexes = true,
            SchemaQualifyForeignKeysReferences = true,
            ExtendedProperties = true,
            IncludeDatabaseRoleMemberships = false,
            Permissions = true,
            IncludeDatabaseContext = true
        },
        PreserveDbo = true,
    };

    transfer.ScriptTransfer()

但视图仍然是脚本化的。

我真的希望能够使用传输,因为它似乎是在不编写更多代码的情况下按依赖顺序编写对象脚本的唯一方法。我设置 "CopyAllObjects = false" 因为我认为这可能导致我设置的其余选项被忽略,但它似乎没有任何用处。

我的目标是分别编写视图脚本,因为我有一个数据库服务器,其中的视图相互依赖,并且需要对所有数据库中的视图使用 dependencywalker 以按依赖顺序编写脚本。

请帮忙?

我没有完全修复它,但最终过滤掉了所有包含 "create view" 的行。所以我打电话给

 transfer.ScriptTransfer().Cast<string>().ToList()

除非我遗漏了什么,否则 SMO 选项中的许多这些标志(如 CopyAllUsers)似乎只在感觉合适时才会兑现。 :( 当某些选项看起来完全符合我的需要但不起作用时,这真是一种耻辱。