如何从 C# 代码将 SQL Server CE 迁移到 SQL Server 2012 Express

Posted

技术标签:

【中文标题】如何从 C# 代码将 SQL Server CE 迁移到 SQL Server 2012 Express【英文标题】:How to migrate SQL Server CE to SQL Server 2012 Express from C# code 【发布时间】:2013-02-27 14:53:48 【问题描述】:

目前,我们的应用程序使用 SQL Server CE 作为我们的数据库。出于规模和性能的原因,我们决定继续使用 SQL Server 2012 Express(如果我错了,请纠正我)。

我的问题:我们需要将数据库从 SQL Server CE 迁移到具有所有 SB 属性(架构、索引、外键、数据...)的 2012 Express

此迁移应在 C# 代码中处理的升级过程中执行。

我们该怎么做?

【问题讨论】:

【参考方案1】:

您可以使用我的脚本 API 将 SQL CE 数据库脚本写入文件,然后针对 SQL Server 数据库运行脚本(示例需要一个空的服务器数据库,并且所需的 SQL Server 安全性已到位)

using ErikEJ.SqlCeScripting;
using System;    
using System.IO;

class Program

  static void Main(string[] args)
  
    try
    

        using (IRepository ceRepository = new DB4Repository(@"Data Source=C:\Data\SQLCE\Test\nw40.sdf"))
        
            string fileName = Path.GetTempFileName();
            var generator = new Generator4(ceRepository, fileName);
            generator.ScriptDatabaseToFile(Scope.SchemaData);
            using (IRepository serverRepository = new ServerDBRepository4("Data Source=.;Trusted_Connection=true;Initial Catalog=Test"))
            
                serverRepository.ExecuteSqlFile(fileName);
                Console.WriteLine("Database exported");
            
        
    
    catch (Exception ex)
    
        Console.WriteLine(ex);
    
    Console.ReadKey();
  

【讨论】:

谢谢,在哪里可以找到您的脚本?你有例子吗? nuget.org/packages/ErikEJ.SqlCeScripting

以上是关于如何从 C# 代码将 SQL Server CE 迁移到 SQL Server 2012 Express的主要内容,如果未能解决你的问题,请参考以下文章

从 C# 代码中使用 SQL Server CE 选择 @@ IDENTITY

在 SQL Server CE 和 C# 中获取新插入行的主键?

SQL Server CE 回滚不撤消删除

如何在 SQL Server CE 数据库中插入多行? [关闭]

用于多个应用程序中的 C# 类库的 SQL Server CE 私有部署

如何从 SQL Server CE 表中删除一行?