技术开发 频道

访谈:SQL Server Everywhere仅仅是另一种数据库吗?


安全性
DDJ:
谈一下引擎本身的维护问题吧。如果引擎存在
bug或者安全隐患,怎样获取补丁呢?

SL:3.1版本中我们将支持两种配置模型。第一种,如果你使用MSI完成传统的安装,SQL Server Everywhere Edition在每台机器上就安装一次。在这种情况下SQL Server Everywhere EditionMicrosoft Update中直接得到服务,Microsoft Update是一个用户可选的服务模型。使用这种模型的挑战性在于,它需要管理权限来把SQL Server Everywhere Edition安装到机器上。SQL Server Everywhere Edition产品由本地和被管理组件组成。本地组件不需要管理权限安装。它们能够从“文件和设置”文件夹中打开。在这种模型里,SQL Server Everywhere Edition简单地用作动态链接库和应用程序绑定到一块,Windows Update不会更新SQL Server Everywhere Edition。应用软件的厂家还必须维护他们程序中的那些动态链接库。许多应用软件厂家经常告诉我们他们不希望微软来维护这些部件。他们希望当有一个可安装的组件时,安装上那个组件测试一下他们的应用程序,然后用SQL Server Everywhere Edition的组件去配置他们应用程序的一个新版本。

我们在3.1版本中实现了这些功能:你可以进入一个Windows Forms项目,添加一个SQL Server Everywhere Edition的引用,把SQL Server Everywhere Edition DLLs拷贝到应用项目中,并且有ClickOnce配置工具替你把所有东西都配置好。当你用这种方式配置一个应用程序时,你将会在“添加/删除程序”中看到你的程序,但是你看不到SQL Server Everywhere Edition

有关.NET框架是如何工作的有一个原始工具,它在安全性方面有趣的是,当汇编程序装载器装载汇编程序时,它总是首先查看全局程序集高速缓存(GAC)。如果它在GAC中找不到那个程序集,那么它就会在应用程序目录中查找。如果公司里的SQL Server Everywhere Edition存在一个关键的服务问题,他们又不确定哪台机器安装了SQL Server Everywhere Edition,因为应用程序已经悄悄地和SQL Server Everywhere Edition绑定到一起了,他们则能够使用MSI安装将SQL Server Everywhere Edition找到,这种新版本将会超越个人应用版。

在和我们过去产品的历史对比中,讨论一下安全和风险问题也是很有趣的。如果你看一下SQL Server Everywhere Edition的表层区域,我们传统上有问题的地方正是一个产品特征成为安全陷阱的地方。SQL Server Everywhere 版本,因为它不作为服务运行,所以不监听网路通信量。事实上,它不能监听网路通信量。表层区域和我们的SKUs服务器,包括SQL Server Express 版本,有天壤之别。SQL Express确实会错误地将网络切断,但是它还能接上,所以它是作为服务来运行的。这些特征可以受保护,但是它们仍然存在。使用SQL Server Everywhere版本受攻击的可能性会更少。

另一个安全方面的考虑是运行在数据库内部的代码。许多数据库允许你把代码嵌入到数据库里面。但是因为SQL Server Everywhere Edition在你的应用程序中使用处理器,它和你的代码一起在处理器中,所以你为何要在在数据库中运行代码呢。在SQL Server Everywhere版本中,你不能把代码放到数据库里。这也减少了受攻击的可能性。它不存在像SQL ServerxpCommandshellxp命令内核)的东西。用户根本不可能脱离数据库而在应用程序范围之外做一些事情。

DDJ:那么它和Access相比的话,Access数据库中可以包含宏,因此用e-mail到处发送是不安全的,一个SQL Server Everywhere Edition的数据库用e-mail发送给某人则是安全的,因为它仅仅是数据。里面没有可运行的东西。

SL:完全正确。过去某段时期在数据库文件里不存在代码。在AccessSQL Express中,数据库文件可以包含代码,但是在SQL Server Everywhere Edition中又不能了。

DDJ:内存数据库引擎存在的一个问题是数据文件可能会损坏,需要修复并且需要压缩。SQL Server Everywhere Edition中也存在这样的情况吗?它是内存数据库吗?

SL:你要想一下SQL Server Everywhere Edition的起源。它起源于设备。设备若是关闭了,或者它们的电池没电了,你可以将它们搁置或者切断。SQL Server Everywhere Edition始终是为那种环境设计的,颇具可靠性。但是,当然了,任何事物都有瘫痪的可能性。我不会说决不可能。有趣的是,当问题真的发生了,你怎么着手解决它们?若是使用SQL Server,你需要解雇SQL Server管理者,让DBA介入,然而使用SQL Server Everywhere Edition有一种简单的API来实施这些操作。这是SQL Server Everywhere Edition另外一个备受开发者关注的地方。这种逻辑编码到你的应用程序中很容易。有一种叫做SqlCeEngine的组件,它具有一些这方面的API恰好提供你正谈论的那些功能子集。有了这些API,当你修复时,你可以试着选择修复故障发生时正在处理的任何一个事务,或者,如果你无法修复它们,则可以清除那些事务。

DDJ:那么人们怎样才能使用到SQL Server Everywhere Edition呢?

MJ:目前可以得到它的预览版(CTP)。你可以登录www.microsoft.com/sql/everywhere,更多地了解有关SQL Server Everywhere Edition的信息,可以下载部件,评价它并且在上面做开发。发布日期将会在今年的年末。

DDJ:感谢您能抽出时间来和我们聊天。

    -------转载请与责编联系------

0
相关文章