[SQL Server]2005 Express Edition概述4

来源:百度文库 编辑:神马文学网 时间:2024/06/13 02:13:24
[SQL Server]2005 Express Edition概述 (4)
发布时间:2006.07.17 06:07     来源:赛迪论坛    作者:
SQL Service Broker
SQL Service Broker (SSB) 是 SQL Server 2005 中一个新的、可靠的消息传送基础结构。该服务程序可以选择通过对等消息交换约定(称为对话框)进行通信。此功能可以通过 T-SQL 语言的扩展插件来访问。
SQL Server Express 只有在与其他 SQL Server 2005 版本一起使用时,才可以使用 Service Broker。如果 SQL Server Express 接收到一条来自另一个 SQL Server Express 实例的 Broker 消息,并且另一个 SQL Server 2005 版本未处理该消息,则该消息将被删除。因此,消息可以源于一个 SQL Server Express 实例而终止于另一个 SQL Server Express 实例,但是如果要这样,该消息必须通过非 SQL Server Express 实例进行路由。您可以检查 Message Drop 跟踪事件,该事件可以通过事件探查器访问,也可以使用跟踪存储过程来跟踪此类事件。与删除的消息关联的错误消息包括与以下消息类似的消息:"This message has been dropped due to licensing restrictions."(“由于授权限制,此消息已被删除。”)
以扩展情况为例。应用程序在收银机上部署了 100 个 SQL Server Express 实例。它们正连接到后端的非 SQL Server Express 服务器上。只要后端服务器涉及所有对话框,就会发生这种情况。SQL Server Express 实例无法在不经过后端服务器的情况下成功进行会话。
用户实例
用户实例是 SQL Server Express 中的新功能,可以像处理文件一样处理数据库。现在,本地数据库可以随应用程序一起移动、复制或通过电子邮件传送。在新的位置,不需要进行额外配置就可以使其正常运行。用于在 SQL Server Express 中启用应用程序用户实例支持的主要功能有三个:连接字符串中的 AttachDBFilename 选项、不需要指定逻辑数据库名称和“用户实例”选项。
在用户实例支持中,暗含着几个假设。假设实例名为 SQLEXPRESS 的 SQL Server Express 已安装在计算机上。还假设它是一个仅托管堆栈解决方案,您必须使用 .NET SQL Server 数据访问接口开发可部署的 XCopy 应用程序。也就是说,不能使用 SQL Native Client 或 MDAC 来开发可用于用户实例的应用程序。
通常,应用程序开发人员仅将用户数据库和日志文件随应用程序一起复制。但是,在 SQL Server 中,一个特定数据库(称为 master 数据库)中存在多个配置条目。依赖于 master 数据库中的条目的功能包括 SQL 身份验证(建议您尽可能使用 Windows 身份验证)。如果您的应用程序依赖于 master 数据库中的任何条目,则应用程序开发人员必须确保将这些配置条目复制到目标系统中。一个方法是:当将运行的应用程序安装到目标计算机上时,要随之包括一个 SMO、DMO 或 T-SQL 配置脚本。对于大多数使用 Windows 身份验证运行的应用程序,从 master 数据库复制信息并不难。
AttachDBFileName
您可以为 AttachDBFileName 连接字符串条目指定相对文件路径或绝对文件路径。当打开连接时,将附着指定的数据库文件,此数据库用作该连接的默认数据库。如果调用 AttachDBFileName 时该数据库已附着,则附着操作不会产生任何影响。此关键字支持称为 |DataDirectory| 的特定字符串,该字符串在运行时指向存储数据库文件的应用程序的数据目录。此特定字符串应位于文件路径的起始处,仅对本地文件系统有效,并且会检查 \..\ 语法以便该文件路径不高于替换字符串指向的目录。
使用 AttachDBFileName 时,日志文件的用法有些变化。日志文件名的格式必须为:_log.ldf,并且在使用 AttachDBFileName 时,没有用于指定日志文件名的选项。例如,如果数据库文件名为 myDb.mdf 且位于 c:\myApp,则日志文件名应为 myDb_log.ldf。如果 SQL 在数据库文件所在的目录中找不到此文件,则在附着过程中将创建一个新的日志文件。这意味着,在使用 AttachDBFileName 时,不支持用户定义的日志文件名。
SQL Server 支持对一个数据库使用多个数据和日志文件,这些文件可以分布在多个文件组中。AttachDBFileName 语法不支持此功能,也不支持网路共享、HTTP 路径或通用命名约定 (UNC) 远程数据库。
逻辑数据库名称
如果在连接字符串中未指定逻辑数据库名称,则将为要附着的数据库自动生成一个名称。该名称是基于 .mdf 文件的相对文件路径生成的。例如,如果文件位于 c:\myDocuments\Myapp\myDB.mdf,则逻辑数据库名称将基于完整路径。如果文件路径的字符多于 128 个,则此功能将使用现有路径和一个哈希来生成逻辑数据库名称。这是 SQL Server Express 中的新功能,因为在 SQL Server 2000 中不指定数据库名称将导致出现错误。支持的语法包括 database=; 或 initial catalog=;,或者用户也可以在连接字符串中完全省略它们。
在同一台计算机上移动或复制数据库时,此功能非常有用,因为基于文件路径的逻辑名称是唯一的。如果没有此功能,则在使用同一个逻辑名称打开两个不同目录中的数据库时,SQL Server 中将会发生命名冲突。计算机之间还支持应用程序 XCopy。
请注意,仍然可以使用关键字 database 或 Initial Catalog 来显式指定逻辑数据库名称。用户在使用复制、使用 SQL Service Broker、在 T-SQL 查询中使用多个部分组成的名称或使用跨数据库方案时,可能想要显式指定逻辑数据库名称。
自动关闭
SQL 2000 具有自动关闭功能,此功能在 SQL Server Express 中,默认情况下处于启用状态。此功能在不存在到用户数据库的活动连接时,解除对用户数据库的文件锁定。这样,在使用该数据库的应用程序关闭后,就可以移动或复制该数据库了。
但是,在用户看来,自动关闭功能并非始终有效,特别是在发生意外客户端终止或使用连接池时。对于意外客户端终止,连接最终会被超时机制清除。连接池启用后,用户调用连接关闭时,连接实际上并没有关闭,而是返回到连接池。为了关闭所有连接,通常不得不关闭应用程序域或所有打开的连接。ADO.NET 还包含 ClearPool 之类的函数,用于手动重设。
用户实例
用户实例允许非管理员用户附着和管理 SQL Server Express 数据库。他们通过创建 SQL Server 专用副本来进行附着和管理,该副本运行在打开与某个数据库的连接的用户的安全上下文中。打开连接的用户成为用户实例的服务帐户,从而具有完整的数据库系统管理员权限。这些权限允许非管理员 Windows 用户具有数据库管理员权限,从而允许用户使用 AttachDBFilename 附着数据库。这些权限还允许用户创建任何必要的数据库对象;使得此模式对于开发数据库应用程序比较理想。