65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 SQL Server Management Objects (SMO) 复制数据库架构和数据

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.88/5 (6投票s)

2008 年 5 月 28 日

CPOL
viewsIcon

59754

downloadIcon

1846

如何使用 SMO 通过 C# 复制数据库架构和数据。

引言

本文展示了如何使用 SQL Server Management Objects (SMO) 和 C# 脚本来复制数据库架构,包含或不包含数据。

使用代码

我创建了一个 DBHelper 类,用于存储 SQL Server 实例信息,例如服务器名称和数据库名称,并且 CopyDatabase 方法用于复制数据库。请确保您的计算机上已安装 SQL Server 2005 和 MS SQL Server Management Objects。

public static void CopyDatabase(bool bCopyData)
{
    //Set Source SQL Server Instance Information
    Server server = new Server(DBHelper.SourceSQLServer); 

    //Set Source Database Name [Database to Copy]
    Database database = server.Databases[DBHelper.SourceDatabase]; 

    //Set Transfer Class Source Database
    Transfer transfer = new Transfer(database);

    //Yes I want to Copy All the Database Objects
    transfer.CopyAllObjects = true;

    //In case if the Destination Database / Objects Exists Drop them First
    transfer.DropDestinationObjectsFirst = true;

    //Copy Database Schema
    transfer.CopySchema = true;

    //Copy Database Data Get Value from bCopyData Parameter
    transfer.CopyData = bCopyData;

    //Set Destination SQL Server Instance Name
    transfer.DestinationServer = DBHelper.DestinationSQLServer;

    //Create The Database in Destination Server
    transfer.CreateTargetDatabase = true; 

    //Set Destination Database Name
    Database ddatabase = new Database(server, DBHelper.DestinationDatabase);

    //Create Empty Database at Destination
    ddatabase.Create();

    //Set Destination Database Name
    transfer.DestinationDatabase = DBHelper.DestinationDatabase;

    //Include If Not Exists Clause in the Script
    transfer.Options.IncludeIfNotExists = true; 

    //Start Transfer
    transfer.TransferData();

    //Release Server variable
    server = null;
}

关注点

是的,我们可以使用 Microsoft SQL Server Management Objects (SMO) 与 SQL Server 进行交互。我现在正在编写一个库,它将与 SQL Server 交互以处理各种参数,例如实例信息、网络信息、备份和还原脚本等,并将尽快发布它。

© . All rights reserved.