您当前位置:优侠库 > 资讯攻略 >
来源:未知
2021-03-28 01:53:39 浏览: 分类:资讯攻略

Microsoft SQL Server数据库开发问题详解

1.1.sql server 2005中的存储过程并发问题

问:我在SQL Server2005中遇到了并发问题。凭我的票,车上还有几个空空位。在我插入销售的机票支票之前,我需要检查是否有任何座位可用空。我的存储过程的作用如下:

以下是引用的内容:

创建过程add _ ticket & mdash参数
DECLARE free _ seats int BEGIN
TRANSACTION SELECT free _ seats
= COUNT(*)FROM ticket WHERE
seat _ is _ not _ taken IF free _ seats
& lt;& gt0插入到票证值(& hellip)
& mdash;其他一些语句结束事务

问题是两个进程可以同时读取空空闲票,都可以预留一张票,即使没有空剩余。我需要一种方法来防止一个进程在另一个进程中运行add_ticket程序,但是在没有插入新票的情况下读取空票的数量。

回答:你是正确的;较高的隔离级别不能保证多个读取器会同时读取同一数据行。然而,有几种方法可以完成这项工作。例如,您可以为每个座位分配一个唯一的标识符(即唯一键& mdash& mdash不一定是GUID),并创建一个描述哪些座位已被预订的表。在表上放一个惟一的约束,就可以保证同一个座位不会被插入两次。

也就是说,我觉得更有趣的方式是使用SQL Service Broker。您可以为每条总线建立一个会话,并将该会话的句柄存储在一个表中,读者可以在接收之前参考该表。这样读者才能正确筛选。公共汽车上的每个座位都在队列中插入一条消息。读者可以简单地接收所需的信息(在此过程中,在公共汽车上预订座位)。Service Broker将确保任何消息都不会被接受两次,这意味着您不会再遇到并发问题。

2.2中的索引类别。SQL Server 2005

问:SQL Server 2005中有新的索引类别吗?

答:SQL Server 2005没有为关系表引入新的索引类型。基本上& mdash& mdash聚集索引和非聚集索引由B树实现& mdash& mdash仍在使用。但是,无论是全文索引还是XML数据,SQL Server 2005都包含一些对索引的增强。此外,这些增强还可以改善一些与关系索引相关的问题。

SQL Server 2005的全文索引功能是全新的,并且经过了重写。要获取有关此功能的信息,请阅读Nimish Khanolkar的MSDN广播文档,该文档介绍了SQL Server 2005中的全文搜索。

XML是SQL Server 2005中的另一项内容,它在方式上经历了巨大的变化。现在,开发人员可以使用一流的XML数据类型。该类型支持XQuery查询语言,使用该类型的字段可以通过特殊格式的XML index进行索引。要了解更多关于XML类型的知识,请查阅MSDN的文章。

T-SQL索引命令也有各种增强功能。也许最有趣的是新的“在线”索引类型,它允许数据库管理员执行索引维护任务,而不会将用户锁定在表之外。这很可能标志着数据库管理员必须等到下午3点才能打开维护窗口来修复问题的情况结束了!

3.表和字段的通用名称约束

问:表和字段的常见名称约束是什么?

答:SQL Server 2000下的表名和字段名有1到128字节的限制,遵循规则识别。

第一个字母必须是下列之一:

& middotUnicode 2.0中指定的字母。

Unicode字母的定义包括:拉丁字母,从A到Z,其他语言的字母除外。

& middot下划线(_)、at符号(@)或数字符号(#)

在SQL Server中,将这些符号作为标识符的开头具有特殊的意义。以at符号(@)开头的标识符表示局部变量或参数。以数字符号(#)开头的标识符表示临时表或过程。以两个数字(# #)开头的标识符标识一个全局临时对象。

某些Transact-SQL函数的名称以两个at符号(@ @)开头。为了避免与这些函数混淆,建议您不要使用以两个at符号(@ @)开头的标识符。

以下字母可以是以下任意字母:

& middotUnicode 2.0定义的字母

& middot来自基本拉丁语或其他发音的十进制数

& middotAt符号(@)、美元符号($)、数字符号(#)或下划线。

标识符不能是Transact-SQL的保留字。SQL Server保留了一些大小写保留字。不允许内置空或特殊字母,虽然你可以看到在老版的北风之神里面有内置空。在访问它们之前,必须用括号将它们括起来。

4.在没有任何T-SQL知识的情况下编写SQL Server2005存储过程

问:在不了解T-SQL的情况下,有可能编写存储过程吗?]

答:由于微软的野心,以主导市场。NET集成SQL Server 2005在过去的几年里,很多程序员认为创建SQL Server存储过程对于T-SQL来说已经没有必要了。不幸的是(或者不是,根据你的观点),这并不是全部的真相。从技术上来说,你可以在不了解T-SQL的情况下创建存储过程,但是没有T-SQL就不能访问任何数据。

CLR存储过程中的数据访问是通过使用标准ADO.NET类来完成的。开发人员会在应用层发现很多同样无用的数据访问代码,这些代码会很容易地转移到SQLCLR例程中。当中间层的这些ADO.NET类需要使用T-SQL访问数据时,在CLR host提供的环境中也会使用相同的类。

我想强调的是,从技术角度来看,不使用T-SQL也可以编写存储过程。那么有什么理由这样做呢?一种情况是,这是一个CLR存储过程,用于从普通文件或网络服务中检索数据,数据格式设置为rowset。这里可以使用不需要T-SQL的操作& mdash& mdash但这并不能很好地比喻T -SQL存储过程的能力。

关键词:Microsoft SQL Server

优侠库网站每天提供最新最热门的安卓手机软件、游戏下载、分享热门手游资讯攻略教程、手机软件教程步骤,专注安卓手机游戏软件下载。

本文链接:http://www.123down.cn/gonglue/227216.html

攻略资讯
安卓软件
安卓游戏