仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 768|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL网站制作之SQL Server的怪辟:非常与伶仃事件

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:16:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
修复过程包含最多4个阶段,在下面描述。在你开始前,你应该cd到数据库目录和检查表文件的权限,确保他们可被运行mysqld的Unix用户读取(和你,因为你需要存取你正在检查的文件)。如果它拒绝你修改文件,他们也必须是可被你写入的。关于sql中怪辟的各类毛病,和伶仃事件在t-sql编程中必定要注重,当心伶仃事件的圈套,只管制止华侈或伶仃资本,Microsoft公然公布过SQLServe下一版本Yukon将有内置非常处置语法。当时能够经由过程代码对没法意料的毛病有更好的把持。1、起首从SQLServer中Error讲起,SQL中毛病处置有些怪辟毛病级别同是16但了局都分歧。
以下是援用片断:
以下为援用的内容:
select*from一个不在的表
  if@@error0
  print这个没有输入
  go
  raiserror(,16,3)
  if@@error0
  print这个输入了
  go
  exec(select*from一个不在的表)
  if@@error0
  print这个输入了
  go
  execsp_executesqlNselect*from一个不在的表
  if@@error0
  print这个输入了

如许你能够发明经由过程exec或sp_executesql实行可疑的sql,如许就能够在前面捕获到被非常停止的毛病。
2、引出伶仃事件:
1、伶仃事件的发生
以下是援用片断:

  select@@trancount以后毗连的举动事件数--以后毗连的举动事件数为0
  begintran
  select*from一个不在的表
  if@@error0
  begin
  print没有实行到这里来!
  if@@trancount0rollbacktran
  end
  committran

select@@trancount以后毗连的举动事件数--实行后你看看以后毗连的举动事件数为1,且反复实行会每次累加,这是很耗资本的。
应为rollback基本就没有被回滚。
2、利用现有手腕办理伶仃事件
以下是援用片断:
以下为援用的内容:
  print@@trancountprint以后毗连的举动事件数--以后毗连的举动事件数为0
  if@@trancount0rollbacktran--在这里写可让伶仃事件只坚持到下次你的历程被挪用
  begintran
  select*from一个不在的表
  if@@error0
  begin
  print没有实行到这里来!
  if@@trancount0rollbacktran
  end
  committran
  ---实行后你看看以后毗连的举动事件数为1,但反复实行不会累加
  print@@trancountprint以后毗连的举动事件数

3、利用setxact_abort来把持部分违背束缚的毛病的实行历程

  createtableTable1(aintcheck(a>100))
  go
  setxact_aborton
  begintran
  inserttable1values(10)
  print这里没有被实行
  committran
  go
  printprint==============================================print
  setxact_abortoff
  begintran
  inserttable1values(10)
  print这里被实行
  committran
  go
  droptabletable1
  但setxact_abort关于编译发生的毛病确没有起感化,且一样会发生伶仃事件
  setxact_aborton
  begintran
  insert一个不在的表values(10)
  print这里没有被实行
  committran
  go
  printprint==============================================print
  setxact_abortoff
  begintran
  insert一个不在的表values(10)
  print这里没有被实行
  committran
  go
  select@@trancount以后毗连的举动事件数---有两个伶仃事件
  if@@trancount0rollbacktran

支持AIX、FreeBSD、HP-UX、Linux、MacOS、NovellNetware、OpenBSD、OS/2Wrap、Solaris、Windows等多种操作系统
分手快乐 该用户已被删除
沙发
发表于 2015-1-19 06:28:23 | 只看该作者
你可以简单地认为适合的就是好,不适合就是不好。
冷月葬花魂 该用户已被删除
板凳
发表于 2015-1-25 15:50:58 | 只看该作者
如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。
老尸 该用户已被删除
地板
发表于 2015-2-3 06:04:44 | 只看该作者
分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。
第二个灵魂 该用户已被删除
5#
发表于 2015-2-8 19:57:54 | 只看该作者
这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?
莫相离 该用户已被删除
6#
发表于 2015-2-26 01:42:54 | 只看该作者
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
深爱那片海 该用户已被删除
7#
发表于 2015-3-8 11:27:12 | 只看该作者
但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。
小妖女 该用户已被删除
8#
发表于 2015-3-15 22:24:25 | 只看该作者
现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.
海妖 该用户已被删除
9#
发表于 2015-3-22 17:09:19 | 只看该作者
Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-22 19:36

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表