当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-05-02 14:53:00  来源:本站整理

Microsoft SQL Server数据库开发问题详解[MSSQL防范]

赞助商链接



  本文“Microsoft SQL Server数据库开发问题详解[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

1.sql server 2005中的存储历程并发问题

问:我在SQL Server2005中碰到了并发问题.我持有车票的大众汽车上有一些闲暇的座位.我在插入贩卖的查票之前,需求查看能否还有闲暇的座位.我的存储历程做的事情以下所示:

CREATE PROCEDURE add_ticket — parameters 
DECLARE free_seats int BEGIN 
TRANSACTION SELECT free_seats
 = COUNT(*) FROM tickets WHERE 
seat_is_not_taken IF free_seats 
<> 0 INSERT INTO tickets VALUES(…) 
— some other statements END TRANSACTION

问题就是两个历程可以同时读取闲暇票数,并且都可以预约一张票,即便是那边已经没有空余的了.我需求一种办法来避免一个历程在另一个历程运行add_ticket程序,但是还没有插入一张新票的时刻读取空票的数目.

解答: 你是精确的;更高的断绝级别也不会保证多个读者去同时去读取同一个数据行.但是,还有几种办法你可以完成这项工作.比方,你可以给每个座位分配一个惟一的标识符(意思是,惟一键——不一定是GUID),并且成立一个描写哪些座位已经被预订了的表.在表上放一个 UNIQUE约束,你便可以确保同一个座位不会被插入两次了.

就是说,我认为一个更风趣的办法就是利用SQL Service Broker.你可认为每个公交成立一个会话,并且将这个会话的句柄存放在一个表中,读者在履行RECEIVE之前可以参考这个表.通过这种方法,读者便可以精确地过滤.大众汽车上的每个座位都插一个消息到行列中.读者便可以简单地RECEIVE到所需的消息(在这个历程中,预定大众汽车上的座位). Service Broker会确保没有消息会被承受两次,也就是说你不会再碰到并发问题了.

2.SQL Server 2005中的索引类别

问:SQL Server 2005中能否有新的索引类别了?

解答: SQL Server 2005没有为关系表引入新的索引范例.基本上——聚簇和非聚簇索引是以B-trees的方法实现的——还仍旧在利用.但是,SQL Server 2005确切包含了一些索引上的加强,不管是完好文本索引,还是关于XML数据,此外这些加强还可以改进一些与关系型索引有关的问题.

SQL Server 2005的完好文本索引特点是全新的,并且是重新编写的.要得到这个特点的信息,请阅读Nimish Khanolkar的MSDN广播文档,介绍SQL Server 2005中的全文本查找.

XML是SQL Server 2005中别的一个在方法上发生了宏大改变的内容.目前关于开辟人员来说有第一流的XML数据范例可用了.这个范例支持XQuery查询语言,利用了这个范例的字段可以通过特别格局的XML索引被索引到.要理解更多有关XML范例的信息,请查找MSDN 上的文章.

还有各种各样的有关T-SQL索引号令的加强.大概最令人感爱好的就是新的“在线”索引范例,它答应数据库管理员在不需求把用户锁到表表面的情形下履行索引保护任务.这个很有大概标志着数据库管理员需求等到夜里3点才能翻开保护窗口改正问题的情况的终结!

3.关于表和字段的常见名字约束

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

解答:SQL Server 2000下的表和字段名称有1到128字节的限制,并且遵守用于标识的法则.

第一个字母必须是以下的一种:

· Unicode Standard 2.0中规定的字母.

Unicode对字母的定义包含:拉丁字母,从A到Z,除了来自其他语言的字母之外.

· 下划线(_),at标记(@),大概数字标记(#)

在SQL Server中以这些标记作为标识符的开始具有特别的含义.一个以at标记(@)开首的标识符表示一个本地的变量大概参数.一个以数字标记(#)开首的标识符代表一个暂时表大概历程.一个以两个数字标记(##)开首的标识符标识的是一个全局暂时对象.

一些Transact-SQL函数的名字以两个at标记(@@)开首.为了避免与这些函数混合,举荐你不要利用两个at标记(@@)开首的标识符.

接下来的字母可以是以下的肆意几种:

· Unicode Standard 2.0定义的字母

· 来自底子拉丁文大概其他语音的十进制数字

· at标记(@),美圆标记($),数字标记(#),大概下划线

标识符绝对不能是Transact-SQL的保存字.SQL Server保存了一些大写和小写的保存字.内建的空间大概特别的字母都不答应呈现,固然你可以在好的老版本的Northwind中看到它们包含了内建的空间.你必须通过把它们括在括号中才可以拜候.

4.不具有任何T-SQL知识的情形下编写SQL Server2005存储历程

问:有没有大概在不理解T-SQL的情形下编写存储历程? ]

解答:作为过去几年里面微软试图用SQL Server 2005的.NET集成来称霸市场的野心的后果,很多程序员都认为成立SQL Server存储历程不再必须T-SQL了.不幸的是(大概并非如此,这按照你的概念),这并不满是事实.在技术上是可以在不理解T-SQL的情形下成立存储历程的,但是没有T-SQL的话则无法拜候任何的数据.

在CLR存储历程内部举行数据拜候,是通过利用尺度的ADO.NET类来完成的.开辟人员会在利用程序层发现很多一样的没有效处的数据拜候代码,这些代码会很简单地转移到SQLCLR例程中去.当中间层的这些ADO.NET类需求利用T-SQL来拜候数据的时刻,在 CLR主机供应的环境中就会利用一样的类.

我要夸大的是,从技术角度来说,不利用T-SQL来编写存储历程是大概的.那么有没有来由这么做呢?一种情形就是这是一个用来从普通文件大概网络服务中检索数据的CLR存储历程,并将数据格局设置为行集.这里大概就会用到不需求T-SQL的操作——但是这并非对T -SQL存储历程本领的一个很好的比方.   以上是“Microsoft SQL Server数据库开发问题详解[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • SQL 无法装载DLL Microsoft缘由(无法改正sa密码)
  • Ubuntu获得免费的Microsoft Word
  • Windows家庭医生Microsoft Fix it Center
  • 办理安装软件时呈现未在本地计算机注册"Microsoft.Jet.OLEDB.4.0"办法...
  • Microsoft SQL Server 7.0数据库设置与数据构造
  • <b>Microsoft SQL Server 7.0安全问题</b>
  • Microsoft SQL Server 7.0安装问题(一)
  • Microsoft SQL Server 7.0安装问题(二)
  • Microsoft SQLServer安装示例
  • Microsoft SQL Server 7.0 备份及恢复相关问题
  • Microsoft SQL Server 7.0数据库的成立与管理
  • Microsoft SQL Server 7.0数据库进级转换问题
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .