SQL Server Compact - 架构管理

时间:2009-03-31 03:12:24

标签: sql-server sql-server-ce

我一直在寻找一个好的解决方案来实现在SQL Server Compact 3.5数据库上管理模式的想法。

我知道在SQL Server Express,SQL Server Standard,SQL Server Enterprise上管理架构的几种方法,但Compact Edition不支持使用相同方法所需的必要工具。

有任何建议/提示吗?


我应该扩展这个说它是100多个带有包装软件的客户端。随着系统的变化,我需要将更新脚本与新二进制文件一起发布到客户端。我正在寻找一种不错的方法来发布它,而不必只是将客户端的脚本文件交给客户端并说“在SSMSE中运行它”。大多数客户都无法做这样的野兽。

我的一个伙伴披露了关于如何处理我的任务的SQL Server部分的部分脚本,但从未使用过Compact Edition。看起来我会独自一人。

我认为我决定这样做,并且需要一个“极客周”来完成,就是编写某种工具,就像WiXNAnt的工作方式一样,这样我就可以编写一个过于热心的XML文档来处理这项工作。

如果我认为这是值得的,我会将它发布在CodePlex和/或The Code Project上,因为我已经使用了两个网站来更好地理解我过去所做的工作的概念,我认为回馈一点可能是值得的。


2010年5月3日编辑:

如果有人愿意“命名”该项目,我会将我为MS SQL编写的脏/讨厌版本上传到CodePlex,这样我们就可以开始攻击SQL Compact版本了。虽然,我认为在我计划的初始应用程序的下一版本中,我将放弃SQL Compact并仅使用XML文件进行存储,因为该软件正在从Installable包转换为Silverlight应用程序。 Silverlight只是提供了更好的访问策略。

4 个答案:

答案 0 :(得分:2)

我目前正在调查Migrator.Net。 这允许您直接在C#中将对数据库的更改(称为迁移)写入 这些迁移可以包含从简单表添加/删除,列修改到复杂数据更新代码的所有内容。

当您的应用程序启动时,它可以验证数据库当前所处的版本,并应用使其更新所需的任何迁移。所有这些都是自动处理的。运行此更新的代码非常简单:

Assembly asm = Assembly.Load("LocalModels.migration");
Migrator m = new Migrator("SqlServerCe", "Data Source=LocalModels.sdf", asm, false);
m.MigrateToLastVersion();

我在Compact支持方面遇到了一些小问题(假设默认架构是dbo)。但我认为修复它们并不太难。

答案 1 :(得分:0)

一些随意的想法(不确定我能完全回答)

  1. Microsoft Sync Framework是一个选项。我没有机会完全欣赏它在最初的第一次(这似乎工作正常)后部署它可以做什么。它有一个MSDN网站here

  2. 您可以在移动设备上执行脚本,但不能通过SQL Management Studio执行脚本,因此理论上您可以管理/维护T-SQL脚本,但缺点是T-SQL会被复杂化( CE的支持声明)我不知道“自动化”执行的方法 - 但Sync Framework可能会有一些答案..

答案 2 :(得分:0)

如果您的一个关键标准是在小管道上高效工作,那么您唯一真正的选择是存储数据库架构版本(可能以某种方式与检查到CMS中的脚本相关联)以及何时更新需要时,更改脚本通过线路发送并按顺序应用。您可能希望在应用这些脚本时保留数据库中的日志,以便您可以优雅地处理断开连接,重新启动和其他可能令人讨厌的问题。

答案 3 :(得分:-2)

SQL Server Management Studio对您有用吗? http://technet.microsoft.com/en-us/library/ms172933.aspx