C# 用于在SQLServer中导入/导出数据的实用程序

C# 用于在SQLServer中导入/导出数据的实用程序,c#,asp.net,sql-server,visual-studio,visual-studio-2005,C#,Asp.net,Sql Server,Visual Studio,Visual Studio 2005,我们已经构建了一个桌面(windows)应用程序,它需要SQL Server来存储数据。现在,如果我们在数据库端做任何更改,我们需要备份用户应用程序的数据库,修改我们的更改并将其恢复到用户应用程序 我们已经编写了代码来备份和恢复应用程序中运行良好的.bak文件 但现在我们需要建立一个在线实用程序,用户可以上传数据文件,然后我们的更改可以终止,然后他们可以下载更新数据进行恢复 请为我提供一些实现此功能的想法 附言:我把问题贴在了我认为正确的区域。请切换到适当的区域(如果需要) 谢谢 为什么不向用户

我们已经构建了一个桌面(windows)应用程序,它需要SQL Server来存储数据。现在,如果我们在数据库端做任何更改,我们需要备份用户应用程序的数据库,修改我们的更改并将其恢复到用户应用程序

我们已经编写了代码来备份和恢复应用程序中运行良好的.bak文件

但现在我们需要建立一个在线实用程序,用户可以上传数据文件,然后我们的更改可以终止,然后他们可以下载更新数据进行恢复

请为我提供一些实现此功能的想法

附言:我把问题贴在了我认为正确的区域。请切换到适当的区域(如果需要)


谢谢

为什么不向用户提供他们可以在数据库上运行的脚本(或者作为安装程序的一部分提供脚本,或者使用一个简单的实用程序来运行脚本)以应用更改呢

通常,当您在开发环境中进行数据库端更改时,为其生成脚本并维护它们,直到发布应用程序的新版本

使用编写迁移以更新架构,并将架构更改作为可运行的更新部署到客户端

以下是来自以下方面的示例:


添加/删除列有很好的包装器,但您可以执行任意SQL。

所谓“更改”,是指架构更改还是数据更改?这是客户端无法接受的,因为这意味着向100多个客户端用户启动脚本。@Xor power,这意味着每个用户都有一个应用程序和数据库的副本。用户如何获得应用程序的新版本?如果它是一个安装程序,那么你可以在你的安装程序中有一个自定义操作来运行升级数据库的脚本。如果您以zip(或一组文件)的形式提供新版本,则应在应用程序代码中内置升级逻辑。e、 g.应用程序启动时可以检查什么是db版本(您必须在某些表中维护版本信息),并可以运行嵌入式脚本升级数据库。相信我,从用户体验和支持角度来看,自动化解决方案都要好得多。
using Migrator.Framework;
using System.Data;

namespace DBMigration
{
        [Migration(20080401110402)]
        public class CreateUserTable_001 : Migration
        {
                public void Up()
                {
                        Database.CreateTable("User",
                                new Column("UserId", DbType.Int32, ColumnProperties.PrimaryKeyWithIdentity),
                                new Column("Username", DbType.AnsiString, 25)
                                );
                }

                public void Down()
                {
                        Database.RemoveTable("User");
                }
        }
}