文章插图
大家好,小龙来为大家解答以上的问题 。mars server provider这个很多人还不知道,现在让我们一起来看看吧!
1、启用多个活动结果集 (MARS)多个活动结果集 (MARS) 是一项用于 SQL Server 2005 的功能 , 可用来对单个连接执行多个批处理 。
2、要在以前版本的 SQL Server 上使用 SqlDataReader对象访问多个结果集,必须对每个 SqlCommand对象使用独立的 SqlConnection对象 。
3、但是,如果对 SQL Server 2005 启用了 MARS,使用的每个命令对象将向该连接添加一个会话 。
4、说明一个 MARS 会话打开一个逻辑连接以供 MARS 使用,然后为每个活动命令打开一个逻辑连接 。
5、在连接字符串中启用和禁用 MARS说明下列连接字符串使用随 SQL Server 2005 提供的 AdventureWorks 示例数据库 。
【mars server provider】6、提供的连接字符串假定数据库安装在名为 MSSQL1 的服务器上 。
7、根据环境的需要修改连接字符串 。
8、默认情况下禁用 MARS 功能 。
9、可以通过在连接字符串中添加“MultipleActiveResultSets=True”关键字对来启用此功能 。
10、"True”是启用 MARS 的唯一有效值 。
11、以下示例演示如何连接到 SQL Server 实例以及如何指定应启用 MARS 。
12、C#string connectionString = "Data Source=MSSQL1;" +"Initial Catalog=AdventureWorks;Integrated Security=SSPI" +"MultipleActiveResultSets=True";使用 MARS 时的特殊注意事项通常情况下,现有的应用程序不需要修改,即可使用启用 MARS 的连接 。
13、但是,如果要在应用程序中使用 MARS 功能,应了解下列特殊注意事项 。
14、语句交替MARS 操作在服务器上同步执行 。
15、允许 SELECT 和 BULK INSERT 语句的语句交替 。
16、但是,数据操作语言 (DML) 和数据定义语言 (DDL) 语句会自动执行 。
17、将阻止任何在执行原子批处理时尝试执行的语句 。
18、服务器上的并行执行不是 MARS 功能 。
19、如果在 MARS 连接下提交两个批处理,其中一个批处理包含 SELECT 语句,另一个包含 DML 语句,DML 可以在 SELECT 语句执行过程中开始执行 。
20、但是,DML 语句必须运行完成,SELECT 语句才可以继续执行 。
21、如果两个语句在相同事务下运行,读取操作将看不到 DML 语句在 SELECT 语句开始执行后所作的任何更改 。
22、SELECT 语句中的 WAITFOR 语句在等待时不生成事务,即直到生成第一行时才生成事务 。
23、这意味着在 WAITFOR 语句等待时,无法在相同连接内执行任何其他批处理 。
24、MARS 会话缓存如果打开启用了 MARS 的连接,将创建一个逻辑会话,这样会增加系统开销 。
25、为了使系统开销最小并提高性能,SqlClient 将 MARS 会话缓存在连接内 。
26、缓存最多可以包含 10 个 MARS 会话 。
27、用户不可调整此值 。
28、如果达到会话限制,将创建一个新会话 — 不会生成错误 。
29、缓存及其包含的会话针对特定连接;不在连接之间共享 。
30、会话释放后,除非已达到池的上限,否则,将返回池中 。
31、如果缓存池已满,会话将关闭 。
32、MARS 会话不会过期 。
33、只在连接对象断开后才进行清理 。
34、MARS 会话缓存不会预加载 。
35、如果应用程序需要更多的会话,将加载该会话 。
36、线程安全MARS 操作不是线程安全的 。
37、连接池启用 MARS 的连接像任何其他连接一样建立池连接 。
38、如果应用程序打开两个连接,一个启用了 MARS,一个禁用了 MARS,这两个连接将位于独立的池中 。
39、有关更多信息 , 请参见SQL Server 连接池 (***.net) 。
40、SQL Server 批处理执行环境打开连接时 , 将定义默认的环境 。
41、然后,将此环境复制到逻辑 MARS 会话中 。
42、批处理执行环境包括下列组件:*设置选项(例如 ANSI_NULLS、DATE_FORMAT、LANGUAGE、TEXTSIZE)*安全上下文(用户/应用程序角色)*数据库上下文(当前数据库)*执行状态变量(例如 @@ERROR、@@ROWCOUNT、@@FETCH_STATUS @@IDENTITY)*顶级临时表在 SQL Server 2000 以及更低版本中,在相同连接下执行的所有批处理将共享相同的批处理环境 。
43、所有后续的批处理可以看到通过批处理对批处理环境所作的更改 。
44、使用 MARS,默认的执行环境将与连接关联 。
45、在给定连接下开始执行的每个新的批处理会接收默认环境的副本 。
46、只要代码在给定的批处理下执行 , 对环境所作的所有更改将作用于特定的批处理 。
47、执行完成后,执行设置将复制到默认环境中 。
48、如果单个批处理发出的多个命令要在相同事务下顺序执行,语义与通过与早期客户端或服务器有关的连接公开的语义相同 。
49、并行执行使用 MARS 后,并非不再需要在应用程序中使用多个连接 。
50、如果应用程序需要对服务器真正地并行执行命令,应使用多个连接 。
51、例如 , 考虑以下方案 。
52、创建了两个命令对象,一个用于处理结果集,另一个用于更新数据;这两个命令对象通过 MARS 共享公共连接 。
53、在此方案中,***.commit 在更新时失败,直到在第一个命令对象上读取了所有结果,并生成以下异常:消息:其他会话正在使用事务的上下文 。
54、可以通过三种方式处理此方案:1.在创建读取器之后开始事务,使读取器不是事务的一部分 。
55、每次更新将变为读取器自己的事务 。
56、2.在读取器关闭之后提交所有工作 。
57、对于大量的更新批处理 , 可能会这样做 。
58、3.不使用 MARS;而是对每个命令对象使用独立的连接 , 就像在 MARS 之前一样 。
59、检测 MARS 支持应用程序可以通过读取 ***.serverversion 值来检查 MARS 支持 。
60、SQL Server 2005 的主版本号为 9 。
本文到此分享完毕,希望对大家有所帮助 。
推荐阅读
- SQL Server不存在或访问被拒绝解决方案,提示SQL Sever不存在或拒绝访问,要怎么解决?
- sql2008安装图解教程,sqlserver2008安装注意事项?
- 删除 如何彻底卸载SQL Server,怎样彻底卸载SQL server2000?
- sql2008安装图解 sql server 2008 R2安装教程,win10上如何安装SQL Server 2008 R2图文教程?
- 关于服务器搭建与管理:WindowsServer2003简述 服务器搭建与管理:WindowsServer2003
- Monitor II A.N.C.主动降噪蓝牙耳机评测 马勺耳机Marshall
- SQL Server 2005完全安装教程,sqlserver2005可以安装在winserver2012的服务器上吗?
- SQL Server 2000 的安装教程,SQLserver2000的安装?
- .NET应用开发之SQLServer常见问题分析
- Azure DevOps Server 设置项目管理用户,用户组