在项目进行中,需要于 sql server ce数据库进行数据同步,以前都是用2000来实现同步的。这次我想用2005来实现,但是在实现过程中发现了一些问题,就贴出来分享下。
大家也可以参考 Sql server 2005 book online ,但是有些东西,觉得它写的不是很清楚。
我们需要一下五步来完成我们的数据同步,当然了机器上必须要安装上开发环境。开发环境的具体配置我们等下再说。
1、创建 sql server 2005的数据库发布。
2、配置该发布的web同步(也就是配置IIS)
3、创建订阅(于创建发布对应)
4、创建应用程序
5、部署发布并测试
预备工作:
我们需要xp 系统,并且安装了IIS, Visual Studio 2005 于Sql Server 2005的计算机
现在我们开始我们的数据同步工作
1,为Sql Server Agent 创建一个用户。
创建办法:我的电脑→管理→本地用户和组→用户→新建用户 。在这里我们用"SnycTest"帐户并只设置密码永不过期的属性。
管理工具→服务→ Sql Server Agent并在其属性中设置登陆“此帐户”并输入密码,重新启动服务。
2、创建快照文件夹。
在盘符中创建新的文件夹,并为它赋予相应的权限。
创建办法:我的电脑→D:→新建文件夹→命名为"Syncsnapshot"→右键→共享和安全→共享→共享此文件→权限→添加→高级→立即查找→选择SyncTest→确定→并付给权限:更改和读取。安全选项卡→如同上面添加SyncTest用户→并设置权限为一下四个:读取和运行,列出文件夹目录,读取,写入。
至此我们的准备工作就可以了。(其实还有一些准备工作)
3,创建发布。
具体方法:
复制→本地发布→右键新建发布→....接下来的步骤是
如果以前未曾在计算机上创建发布,将提示您配置分发服务器。选择第一个选项将本地计算机作为它自己的分发服务器,然后单击“下一步”。
如果以前未曾在此计算机上创建发布,将提示您指定快照文件夹。键入在前面过程中创建的快照文件夹的共享路径。以//servername/SyncTest 格式键入共享路径,不要键入本地路径。在此演练中,我们要用//computer_name/SyncTest(其中 computer_name是您计算机的名称),然后单击“下一步”。
下一步我们选择要发布的数据库MobileTest,→发布类型,在这里有个四个发布类型
快照发布:
发布服务器按预定的时间间隔向订阅服务器发送已发布数据的快照。
事务性发布:
在订阅服务器收到已发布数据的初始快照后,发布服务器将事务流式传输到订阅服务器。
具有可更新订阅的事务性发布:
在 SQL Server 订阅服务器收到已发布数据的初始快照后,发布服务器将事务流式传输到订阅服务器。来自订阅服务器的事务被应用于发布服务器。
合并发布:
在订阅服务器收到已发布数据的初始快照后,发布服务器和订阅服务器可以独立更新已发布数据。更改会定期合并。Microsoft SQL Server Mobile Edition 只能订阅合并发布。
所有我们选择“合并发布”→订阅服务器类型,我们选择Sql Server 2005 Mobile Edition(M)→选择要发布的项目。我在这张表中有表,视图,存储过程,用户定义函数。四个可以都选也可以只选表,因为在后面建好了之后我们还可以在本地发布里设置我们发布数据库的属性。→,筛选的表。在这里我们不需要,如果按照要求我们需要发布一些用户不能见的字段时就需要设置了。→快照代理(使用默认配置)→代理安全性→安全设置,,,
- 在“快照代理安全性”对话框中,输入前面过程中所创建帐户的登录信息。进程帐户为 computer_name/SyncTest(其中 computer_name 是您计算机的名称),密码为 password。
- 单击“确定”以保存设置。
- 在“代理安全性”页中,单击“下一步”。
→向导操作,您可以确定创建发布的时间以及是否希望创建脚本文件。单击“下一步”以接受默认选择。在这里我们使用默认设置→输入发布名SyncTest→完成发布
保护发布
这里是用来提高发布数据库权限。
具体方法:
-
在对象资源管理器中,展开“安全性”,右键单击“登录”,然后选择“新建登录”。
-
在“新建登录”对话框中,选择“Windows 身份验证”,键入 computername/iusr_computername(其中 computername 是您计算机的名称)。
-
在导航窗格中,选择“数据库访问”窗格。
-
设置默认数据库。
-
在对象资源管理器中,展开“复制”,展开“发布”,右键单击“SyncTest”发布,然后选择“属性”。
-
在导航窗格中,选择“发布访问列表”。
-
单击“添加”。在“添加发布访问项”对话框中,列出了 IUSR 帐户。选择该帐户,然后单击“确定”。
-
请确保 IUSR 帐户当前位于 PAL 中,然后单击“确定”。
接下来我们进行的是配置IIS和Sql Server 2005。
既然 SQL Server 已经配置了发布,我们还必须使该发布可以被 SQL Server Mobile 客户端通过网络进行访问。SQL Server Mobile 通过 IIS 连接到 SQL Server。特别是,您可以创建并配置一个虚拟目录,以允许客户端访问 SQL Server Mobile 服务器代理。
在C:/Program Files/Microsoft SQL Server/90/Tools/Binn/VSShell/Common7/IDE下运行sqlce30setupen.msi 安装 SQL Server Mobile 服务器组件。
之后就是配置IIS。
在 SQL Server Management Studio 的对象资源管理器中,展开“(本地)”计算机节点。
右键单击“复制”文件夹,然后选择“配置 Web 同步”。
-
在 SQL Server Management Studio 的对象资源管理器中,展开“(本地)”计算机节点。
-
右键单击“复制”文件夹,然后选择“配置 Web 同步”。
-
- 在该向导的简介屏幕上,单击“下一步”。
-
在“订阅服务器类型”屏幕上,选择“SQL Server Mobile Edition”,然后单击“下一步”。
-
在“Web 服务器”屏幕的“运行 IIS 的计算机”文本框中,键入您计算机的名称(如果尚未提供),然后单击“创建新的虚拟目录”。
-
在显示的树中,展开该计算机,展开“网站”,然后选择“默认网站”。
-
单击“下一步”。
-
在“虚拟目录信息”屏幕上的“别名”文本框中,键入SyncTest,然后单击“下一步”。
-
在“客户端身份验证”屏幕上,选择“客户端将以匿名方式进行连接”,然后单击“下一步”。
-
在“匿名访问”屏幕上,单击“下一步”接受默认设置。
-
在“快照共享访问”屏幕上,键入 //computer/SyncTestt(其中 computer 是您计算机的名称),然后单击“下一步”。
如果收到快照共享为空的警告,请单击“是”。
-
单击“完成”。
-
单击“关闭”。
接下来就是我们的订阅的设置了
-
在对象资源管理器中,展开“SQL Server Mobile”节点,展开“复制”,右键单击“订阅”,然后选择“新建订阅”。
-
在简介屏幕上,单击“下一步”。
-
-
在“选择发布”屏幕的“发布服务器”下拉列表中,选择“<查找 SQL Server 发布服务器…>”。
-
在“连接到服务器”对话框,键入或选择本地计算机,然后单击“连接”。
-
在“选择发布”屏幕的发布列表中,展开“SQLMobile”,选择“SQLMobile”发布,然后单击“下一步”。
-
在“标识订阅”屏幕上,为订阅名称键入 SQLMobile,然后单击“下一步”。
-
在“Web 服务器身份验证”屏幕上,键入前面过程中创建的虚拟目录的 URL。在此演练中,您已经创建了 URL 为 http://localhost/SQLMobile 的虚拟目录。
-
单击“订阅服务器将以匿名方式进行连接”,然后单击“下一步”。
-
在“SQL Server 身份验证”屏幕上,单击“下一步”接受默认设置。
在最终屏幕上,该向导将显示示例代码,您可以在应用程序中创建订阅时使用该代码。选择示例代码(Visual Basic 或 C#,取决于您在创建应用程序时使用的语言),然后复制代码。若要执行复制操作,请选择该代码并按 Ctrl+C。启动记事本或其他文本编辑器,然后粘贴示例代码。在使用下列步骤创建应用程序时,您将使用此代码。
-
在复制示例代码之后,单击“完成”。
-
单击“关闭”。