仓酷云

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

[学习教程] MSSQL教程之全打仗SQLServer非常与伶仃事件!

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

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

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

x
mysql的原来开发者又开发了MariaDB,MariaDB适合用来替代mysql吗server|sqlserver
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


关于sql中怪辟的各类毛病,和伶仃事件在t-sql编程中必定要注重,当心伶仃事件的圈套,只管制止华侈或伶仃资本,Microsoft公然公布过SQLServe下一版本Yukon将有内置非常处置语法。当时能够经由过程代码对没法意料的毛病有更好的把持。

CSV逻辑上由逗号分割数据的存储引擎
莫相离 该用户已被删除
沙发
发表于 2015-1-19 13:52:00 | 只看该作者
但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。
只想知道 该用户已被删除
板凳
发表于 2015-1-24 15:32:03 | 只看该作者
是要和操作系统进行Socket通讯的场景。否则建议慎重!
谁可相欹 该用户已被删除
地板
发表于 2015-2-1 19:59:10 | 只看该作者
财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..
若相依 该用户已被删除
5#
发表于 2015-2-7 15:03:47 | 只看该作者
对于微软系列的东西除了一遍遍尝试还真没有太好的办法
飘灵儿 该用户已被删除
6#
发表于 2015-2-22 10:48:21 | 只看该作者
换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的
再现理想 该用户已被删除
7#
发表于 2015-3-7 00:07:02 | 只看该作者
varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
若天明 该用户已被删除
8#
发表于 2015-3-13 23:07:20 | 只看该作者
其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?!
柔情似水 该用户已被删除
9#
发表于 2015-3-20 21:10:56 | 只看该作者
一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-22 23:55

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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