黎波

Windows Mobile Development for Line of Business
posts - 179, comments - 1037, trackbacks - 33, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

从SQL Server到SQL Server Compact的转换工具

Posted on 2008-04-30 21:05 黎波 阅读(79) 评论(4)  编辑 收藏 所属分类: SQL Server CE
我前段时间写了《如何将数据导入到 SQL Server Compact Edition 数据库中》系列文章,介绍如何从SQL Server数据库到SQL Server Compact数据库的数据导入,吸引了不少人的目光。今天在CodeProject上看到一个很棒的工具,能够从SQL Server 7.0/2000/2005数据库直接生成SQL Server Compact 3.1/3.5数据库,生成的SQL Server Compact数据库包含源数据的主键、外键、索引和数据。



我简单看了一下它的核心代码,获取源数据库的Schema是用了SQL Server 2005的SQL Server Management Objects (SMO)实现的,有了Schema之后生成创建数据库的SQL脚本就不是难事了。

不过我在为SQL Server 2000自带的Northwind数据库生成相应的SQL Server Compact 3.5数据库时,有些表在复制数据库的时候出错,可能是没有处理好image类型的字段。为了兼容SQL Server Compact 3.1和3.5,用了反射技术来创建System.Data.SqlServerCe命名空间下的类型的实例。建议自己下载代码研究研究,我这里不再详细介绍了。

原文:SQL Server to SQL Server Compact Edition Database Copy Utility
SMO文档:http://msdn.microsoft.com/zh-cn/library/ms162169.aspx

Feedback

#1楼    回复  引用  查看    

2008-05-04 11:37 by maizi [未注册用户]
其实,如果使用LINQ的话有更简便的方法: 首先使用SqlMetal.exe工具生成Linq to Sql的中间dbml文件和.cs代码文件,然后呢?DBDataContext db = new DBDataContext(); db.CreateDatabase();数据库就出来了。哈哈

#2楼    回复  引用  查看    

2008-05-04 14:54 by maizi [未注册用户]
该工具似乎无法将源数据库中表间关系转换过来,有朋友测试过吗?

#3楼 [楼主]   回复  引用  查看    

2008-05-06 12:40 by 黎波      
@maizi
LINQ to SQL支持SQL Server Compact数据库吗?我知道LINQ to Entities支持SQL Server Compact 3.5 sp1,现在还是beta版。
另外我并不觉得这个方法更方便,要是数据库结构变了,是不是又要用SqlMetal.exe工具做一次呢?

#4楼 [楼主]   回复  引用  查看    

2008-05-06 12:49 by 黎波      
--引用--------------------------------------------------
maizi: 该工具似乎无法将源数据库中表间关系转换过来,有朋友测试过吗?
--------------------------------------------------------
按原文的说法是可以:
“This utility will copy Indexes, Primary Keys, Foreign Keys, Table structure and data.”

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交