生成数据库创建脚本

sTo*_*rov 7 .net c# sql-server

是否可以从.NET生成SQL Server数据库的数据库创建脚本?

我正在使用C#,我想为我的应用程序创建一些安装程序项目,我可以在其上选择现有数据库,生成创建脚本并在另一个SQL服务器实例上运行它们.

Den*_*nis 5

对的,这是可能的.使用SMO很容易做到这一点,请参阅用于脚本操作的Transfer类和用于数据库操作的Database类(创建,删除等).用法如下:

    private StringCollection GetTransferScript(Database database)
    {
        var transfer = new Transfer(database);

        transfer.CopyAllObjects = true;
        transfer.CopyAllSynonyms = true;
        transfer.CopyData = false;

        // additional options
        transfer.Options.WithDependencies = true;
        transfer.Options.DriAll = true;
        transfer.Options.Triggers = true;
        transfer.Options.Indexes = true;
        transfer.Options.SchemaQualifyForeignKeysReferences = true;
        transfer.Options.ExtendedProperties = true;
        transfer.Options.IncludeDatabaseRoleMemberships = true;
        transfer.Options.Permissions = true;
        transfer.PreserveDbo = true;

        // generates script
        return transfer.ScriptTransfer();
    }
Run Code Online (Sandbox Code Playgroud)