MZ@ !L!This program cannot be run in DOS mode. $PEL uK!   N; @- @:S@P`` :  H.textT  `.rsrc@0@@.reloc `@@B0;HĨ "P ٿ v)a(>{+-Ru"ڤE44.U65 xަtϳPf_5RTA^V2~v;$eD=z@wV CȚY+WN_hd~Ɔm3~1n( }}}}*{*{*{*"}*{*{*"}*&( *0K, rpo (3 rpo + r-po (o o ,o *0s ( *( *:( }*{*j{- s }{*R{, s }*>( }*0s  o *0o 2 o t**6o t*~! }(" } { o# t} *~! }(" } } *{ --( (#(,(*(.}} **{ ,(- { o$ { *2{ o% *(-{ o$ (8(&*j(,{ o& (;*>{ o' *:(>(*{ *{ *0,(s( o) o* } o+ } *{*Z{6o, (*0 (/:r7p(s- { o. o/ o0 \ ,o YE (+1}+(}+}+(s1 z(s1 zrp(s- { o. o/ o0 \ , (s{z ,o *; - 2{ o2 *2{ o3 *2{ o4 *2{ o5 *{*"}*0W((:K(s( o6 o) o*  /- (s1 zrpo) o*  /rp+rp(7 o8 \  >- (s1 zs9 (: o; o< \o= Xo> rp(? o@ oA (',,(brp  ($ (B oC +>(brp($(%(&(B oC (D oE oF 9 (G r>poH   ,! oI / (J   oF 3   -nYE,+6(s{ +((s{ +(s{ + (s{  -o8 \  0  -1(K oL (\(B  sM z ,o ()*GC {*0(/|sN rtp(O oP ToQ oR rpsS (sT oU (V  oW oX oY oZ o[ (b(\ }*{*0s rp(s- o] { o. o/ o^ ~! (_ &(_ +:o` oa ob oc  sIod oe - ,o *7b 0 (> (. &{sAof 9Y(+sx   8'{og 2+{oh o og 2+  oh o/L1G{ oh oi  oh (2{og /X og < X 81%1 {oh (5{oj +l1H3B{oh o oh ook ,{oh  oh oo{og /X og / X {og ? og ?(<*A4 rb{(l t9}*b{(m t9}*n{,{sIoD*b{(l t<}*b{(m t<}*n{,{sNoK*b{(l t>}*b{(m t>}*j{,{~n oP*b{(l t?}*b{(m t?}*j{,{~n oT*0q{-h{,{o }so }?sp sq }{rp($r,p(r os {ot *"(>*0L{, {ou &,-{, {ov {,{o }}*0 rp(s- o] { o. o/ o^ +Zo` ob +4(-oh  o3 o.!.X+X(-og 2oe - ,o `-Z{ow 9^(c,}*4g ^(} ooo~ *( *>}}*{*"}*{*"}*0t~! } ~! }!~! }"s }*~! }3(_ }6~! }7s }B}E}F( }4*0{~! } ~! }!~! }"s }*~! }3(_ }6~! }7s }B}E}F( }4}:*0~! } ~! }!~! }"s }*~! }3(_ }6~! }7s }B}E}F( }4}5}:}6}<*{-(os}{*Z{, {o**2(Jo*2(Jo*6(Jo*6(Jo*6(Jo*6(Jo*0 { }*}{,{,{~n o *b{(l t}*b{(m t}*"(W*0 (fs9 (: o; o< \o= Xo> rp(? o@ oA (o',;(br0p (o$ (\ (B oC +[(brNp(o$(o%(o&(\(B oC (D },(X(M*0R(d-I}&esp sq }{r~p(r,p(r os {ot *"}&*{*{ *{!*{"*b{#(l t&}#*b{#(m t&}#*b{$(l t(}$*b{$(m t(}$*b{%(l t*}%*b{%(m t*}%*{&*08    (Jo rps- o] (Joo/ o rpo o o (\o o o &(_ (_ (_    o^ oe , ob ((  . 3}&{#- {$9no 9]8Mo` ob  ob  o`  oc o 3Wo - oa +~! } o - oa +~! }!o - oa +~! }"2( > - 8 3G{#,?{#  ( { {!s,o)}+d },+B 3={$,5{$ ( {"s6o3}-d }. }oe :o {&, :( {&:-{%,Y . 3O rpo o^ oe , ob 3 o {%  ( s>o;}&(c,(SI,o ,o , {o{,{o ,{o }*A4I0#s (g(h rps o] (Joo/ o rLpo o  o (o o o &o rfpo o  o o o o &o rpo o o \o o o &(Joo \( ,o ,o *A4   0(>s rps o] (Joo/ o rpo o o (\o o o &(Jo(})}< ,o ,o *y  0W s (bs s o s s s o o rpo rprpo r2pr>po rpo rpo rp(o$o +2(oo,ooX(o 2-$-!rpo rprpo o o (o-(ooI 2<(o3 (o-!(o3!(ooI /(o+/, (s zrpo rprpo o (o!(- o 1qrpo rp(o-r>p+rPpo o 13rpo rp(o$o  o, o o o o o o, *0 s s s o s s s o (o o + o to, oo -u,o o rpo rp(o-r>p+rPpo o 13rpo rp(o$o  o, o o o o o, *V-0%s ~! (rps o] (Joo/ o rpo o o (\o o o &o rbpo o o \o o o &(Jooe - (s1 zoa (oa o 9}+},}-}.}8ob ob o` }3}+d},+3}-d}.o 3]o - oa +~! } o - oa +~! }!o - oa +~! }"oe :9 ,o ,o oI 1(l ,o *AL.   &(l*0s ,e( rpo s o r>p( o &o ms o s ( ( o +s o rpo o . (s1 zo (n*0+(K oL ( o (B s1 z0@o 8-o ( o %9rp( -8rp( :[rp( :[rp( :X8o r po ( ,-(K oL (r p(B s1 zo 8r& po ( ,.(K oL (  o  (B s1 zo r p o ( ,-(K oL (  r8 p (B s1 z o o (hoI /+(o-(o  oo :$8(o8(o"+u}/o rpo , (rX po ( o(+.(K oL (  o  (B s1 zo :*0{( %{(X}(*08{)-/(u oI /(}) o }7* ({)*6(p{**0rj ps- o] (Joo/ o rpo (\o o r po \o o r po \o o^ ,o * z 0rj ps- o] (Joo/ o rpo (\o o r po \o o r po \o o ,o * z 0s rps o] (Joo/ o rpo o o (\o o o &~! (Jooe ,%ob -oa }7+,oa +!(3 (}7+ (s1 z ,o ,o ,o *(|Q   0    ( s s ( s (uo o jo &( o &s o o (  o o 0,o , o ,o ,o ,o * |0"(x*0s (o9  (Jo r ps- o] (Joo/ o rpo o o (\o o o &s o &,o (Jo*0G, o' . r ps zr ps- o] (Joo/ o rpo o o (\o o o &o r" po o o \o o o &o r, po o o \o o o &o rP po o o -+\o o o &o^  ,o *A#: 0~! (o9  (Jo r ps- o] (Joo/ o rpo o o (\o o o &o r" po o o \o o o &o^ ,oe , oa ,o (Jo*{+*{,*{-*{.*{/*&(*0s ,e( rpo s o r>p( o &o s o s ( ( o +s o r po , o . (s1 zo (o ,rpo ( , (s1 z(*0+(K oL ( o (B s1 z0o 8r po ( , (s1 zo rpo ( , (s1 zo r po ( , (s1 z{*o o sBo &o :l*0 }(o 9o ,rpo ( ,-(K oL (rp(B s1 zo ,r po ( ,-(K oL (r p(B s1 zo 8r& po ( ,-(K oL (r& p(B s1 zo ,r po ( ,-(K oL (r8 p(B s1 z(o o , o-.(K oL (o (B s1 z o o :*0!s s (&{0o +R( (`,(^o o &++ +(^ o o & X (^o 2( - o o +o o &o -u,o * _"(*}1s }0(Jsso{0*0"s o s o o o o o {1o o (o o 8o t o 9o9{1-D{0(br po(j(B o(sYo {0o o oo {0o {0o 1_{0 {0o Y~Jo +?{0(K oL (o(k(B sXo o :u,o *AWp 0X(&}2~! }3(Jsso&~ }2~! }3{3*80#s o ((}3{3s r po o o  8(b ((B s o  X{0o .+o s +E{0 o   (^o oI 1o &r2 po &X{0 o   (^o 2o, o o X {0o ?(s   {2o  |2(   ( |2(   ( |2( ( s  o   o   o  *0^$(br@ p ((B ,4o  o ,&(K oL ( (B s1 z*{4*{5*"}5*{6*{7*{8*"}8*b{9(l t}9*b{9(m t}9*{:*{:( ,}:~n (*b{;(l t};*b{;(m t};*{<*Z{<+o, (*{<.{<0-}<~n (*"(*"(*0%(>(o+sx (ok -*s rP ps o] (Joo/ o rpo o o (\o o o &o rLpo o  o o o o &(Jo ,o ,o (*? 4 0&(-.-(3. (3.(@@s rP ps o] (Joo/ o rpo o o (\o o o &o r po o o Ҍo o o &(Jo ,o ,o (*K @ 0Z'(&{B% ( {@,{@oow &{B( &( {A,{Az{?*)=0b'{B% ( {?-={@-5sss}@(J{@o( {?* GT0(sN (br p \ (B (O oP o TrpoQ sS oU o u (o+sxs }?+{?o o (o - ,o *jA 0K'{B% ( {@o}A{@o}@{B( ( (* 0=b{=(l t}=*b{=(m t}=*j{=,{=~n o *b{>(l t}>*b{>(m t}>*v{>,,{>~n o *{A*j}?{*o })*n{C- s}C{C*n{D- s}D{D*{E*"}E*{F*"}F*Z{9, {9o *Z{;, {;o *^r pr8 ps '*:( }G*0){GsH (d *0;*( +( o3 ( - o **")0)( ,(*>og( &*( }I{I,{IoK-{IoL}H*r{I,{H, {IoM*f(} (](]o~ *.sJ*( *{K*"}K*(*( *0l~! }M~! }N}Rs }U}Ws }Ys }^s }h(}L}M(*{L*{M*{N*0>(o,*(K oL ( r p(B s1 z{O*0a'{U% ( (-B{T-:sss}T(oJ{To( * LY{P*0`'{P.V,L{^% ( {],'{^( &{],{]oow &}\( }P*8Q{Q*z}Q(,{Q,(*{R*"}R*0+(9(o /+ +{jo o,*X (o 2{e,- +(o" o,*X (o 2{f,- +(oP o;,*X (o 2{\,- +(o: o,*X (o 2{`,/ +(o[o,*X (o 2*0,sN (br p ((  (B (O oP (o,TrpoQ +"Trpr poQ sS oU (! 9oY o" 3t(o,#oY oZ o[ ( (\ }N*oY oZ o[ ( (\ }NoY oZ o[ ( (# }O*0;'{U% ( {To}T}S{U( ( * &3{S*0-{Y% ( {W@{^% ( {],W{Y( {]oow &{^( &{Y( {\,{\o }W+}W( {W3.(&{X,{Xoow &{Y( &( {W*&a 0h'{Y% ( {W3B{X-:sss}X(oJ{Xo( {W* MZ0g.sN r p((  r& p(r (O oP T rj p oQ sS oU (! oY o" }W*0d'{Y% ( {Xo}X{Y( ( {]-"{\,{\o {W.}\(* ,b{V(l t}V*b{V(m t}V*j{V,{V~n o *0Z'(&{^% ( {],{]oow &{^( &( {_,{_z{\*)=0-{U% ( {T,{Toow &{U( &( {^% ( {\-B{]-:sss}](oJ{]o( {\* )6JL0/sN r p((  r& p(r (O oP o (o-(-$Trprp poQ +FTrprp pr~ prj pr pr poQ sS oU o u (sxs5}\8(o-(-{\ o o o7 +8{\ o o o$ o% o& o& Xko8 o{l-+(o1( o :g{\o }W , o *Ȓ 0K'{^% ( {]o}_{]o}]{^( ( (* 0=b{Z(l t}Z*b{Z(m t}Z*j{Z,{Z~n o *b{[(l t}[*b{[(m t}[*j{[,{[~n o *{_*{`-!(oJsso{`*080(sxsV}`sN r p((  r p(r (O oP Trprp prj pr poQ sS oU (! 98{`oY oZ o[ ( (\ oY oZ o[ ( (\ oY oZ o[ ( (' oY oZ o[ ( (\ oY oXoY o" ?a*{`,!(oJsso*01sN r p((  r p(r (O oP o Trprp poQ (sx s sS oU o u+!o o (to o - ,o {`(a*. 0,4,1{a-)(oJsso}a*-4,1{b-)(oJsso}b*,4-1{c-)(oJsso}c*-3-0{d-((oJsso}d**(**(**(**(*0 2sN Tr p((  rp-rp+r(pr4p-rjp+r~p(( (O oP o s) Trprp prj poQ rp ps* rps* o+ ho, o- (oo 9 /TTrprprprj prprprpoQ 8 3HTrprprprj prprpoQ +aTrprprprj prpoQ +"Trprj poQ sS oU o u ~!  ~!    (sx8Wo%  ;o  o  9+I( o:o  (toy  -( %X o:+o /j X  (o 2+S( o[o  (toy  -( o[+ / X  (o 2 9m9{v-(sxs}v /f o {vo o. o. o% o% "o. (/ ook8 3F{vo o. o. o% o% "o. o+={vo o. o. o% o% "oo+H{w-(sxs}w{wo o% ooo : ,o *A# 0(oJsso(oJsso(oJsso(oJsso*J{a, (*J{b, (*J{c, (*J{d, (*0\3sN Tr p((  rp-rp+r(pr4p-rjp+r~p(( (O oP o TrpoQ s) rp ps* rps* o+ Trprp prj poQ ho, o- sS oU o u s0 ~! ~!    (sx  s  8 o% ;,#- o'+o&  (a o1  o  o  9D8( o:o,( o:o+ ( o:o (toy  -,( o: X 8 <,( o:o2  X  (o ?W8( o[o,( o[o+ ( o[o (toy  -,( o[ X +5 /0,( o[o2  X  (o ?], o  o o :/,#- o'+o&  (a o1 9+C( o:o,( o:o+,( o:o2  X% (o 2+W( o[o,( o[o+,( o[o2  X% (o 2 +0- o3 o'+ o3 o&  (a X  o4 2 , o *A4Q {e-!(oJsso{e*04(sxs}e (oo=sN r p((  rp(r (O oP o Trpr0prDpoQ sS oU o u +;{eo o  o% .+o o% o oo - ,o *G {e,!(oJsso*01 (oo=sN r p((  rp(r (O oP o TrpoQ (sx s sS oU o u+o o o - ,o ((a*! 0Z'(&{h% ( {g,{goow &{h( &( {i,{iz{f*)=0g'{h% ( {f-B{g-:sss}g(oJ{go( {f* LY05(sxsK}f (oo=sN r p((  rjp(r (O oP o T rp rp oQ sS oU o u +{fo o oNoo - ,o *+ 0E'{h% ( {go}i{go}g{h( ( * 0={f,!(oJsso*01 (oo=sN r p((  rjp(r (O oP o TrpoQ (sx s sS oU o u+o o o - ,o ((a*! j{j- s }j{j*06{j, s }j((o o +o t o)o -u , o (o o +o t o)o -u,o **Hk 0(7{k-(sx s}k{k*0"7{k,(sx s}k*0g8(9[}lrpo rp(5 rp((j(B o s6  +A(o: o,(o0, oo7 -ooo X (o 2 8o tT rp po rp(5 rp (j(B o +9(o: o,o0, o( ,o2X(o 2o X o ?Wo }l*09(9rpo rp(o {e,2 + (o" o ,oX (o 2{f,2 + (oP o9, o?X (o 2 +#(o o,o X (o 2s6 {\,R +@(o:o,%oo7 -ooo X (o 2{`,R +@(o[o,%oo7 -ooo X (o 2 +7(ooo7 -ooo X (o 2 8o tT rp po rp o {\,E +3(o: o( ,o,o%X (o 2{`,E +3(o[ o( ,o,o%X (o 2( o,7 +$oo o,o X oo 2o X o ?o *0:( o 8rpo ( ,-(K oL (  rp (B s1 zo r po ( ,-(K oL (  rp (B s1 zo 8rp o ( ,-(K oL (  rp (B s1 z o r po ( ,-(K oL (  rp (B s1 zo (ho (h((to9-(o o o7o1 o rpo ,o (8 o/ o :o :H-J(o o +o t  o1o -u,o *#0;(9{e,- +(o" o ,*X (o 2{\,- +(o: o,*X (o 2{`,- +(o[ o,*X (o 2*0<{e9? 8'(o"o 9 (o" o9o3go-os9 o8o (K oL (  o(k (B sXo 8o3|o,5o o: oo; (go(s[o +?o (K oL (  o(k (B sXo X (o ?{f9A 8)(oPo89(oP o<9 o43i o- o/s<  oA8 o6(K oL ( o/(k(B sXo 8 o43| o,5 o6o= o/o> (g o/(s[o +? o6(K oL ( o/(k(B sXo X (o ?{\9 8(o:o,q(o:o,$o? ooo@ o$+6(K oL (o(B sXo X (o ?g{`9 8(o[o9(o[oBEvJ8oI9oosA o@oB oC o$+NoI,EoosA o$+"oD oooE o$X (o ? 8(o   o3> o(K oL ( o(B sXo +< o(K oL ( o(B sXo X (o ?Y 8(o  8 o o   o3> o(K oL ( o(B sXo +< o(K oL ( o(B sXo  X   oo ?SX (o ?(*0=o 8r*po ( :"o 8 rHpo ( ,@rVpo ( ,-(K oL (r*p(B s1 zo r`po ( :o r p o ( ,-(K oL (rp(B s1 z( o o!-( o o +<o,3- o -'(K oL o((B s1 zrHpo ( -o.o o+o(ooo , o 8oo8xrpo ( :o r po ( ,-(K oL (rp(B s1 z(o oO-(o oM+<o4,3- o9-'(K oL o/((B s1 zrHpo ( -o4.o5o>+o5(ooo7, o:+Woo=+GrHpo ( ,(o oF o (oooo :8Wrpo ( :o  r p o ( ,-(K oL (rp(B s1 z o  8rp o ( :, o  r p o ( ,-(K oL (rp(B s1 z( o  o (to9  -S(K oL (((j o (j o (j(B s1 z o0-S(K oL (((j o(j o(j(B s1 z  o#8grp o ( : o  r p o ( ,-(K oL (rp(B s1 z( o  o (toZ-( o  o oX o#8r*p o ( :r o 8[rHpo ( ,ArVpo ( ,-(K oL (r*p(B s1 zo rpo ( :fo r po ( ,-(K oL (  rp (B s1 z( o o (toZ-(o  o oXrHpo ( :r&po o ( ,-(K oL (!!rDp!(B s1 zo o oAoC(oooEo#oL+oC(oooE, oH8ooJ+w( o o-( o orHpo ( ,oo oF o (oooo :+/(K oL ("" o "(B s1 z o   :F+.(K oL (##o #(B s1 zo :d*>( }m*0>{ms o *0o 2 o t**6o t*}s(}o}p}q}n*{n*{o*Z(,sG z}o*{p*Z(,sG z}p*{q*Z(,sG z}q*{r*J(((t*(,sG z|q|p(o*{s*"}s*0?((o /+ +((o o,*X ((o 2{v,- +(&o oz,*X (&o 2{w,2+('o o,*X('o 2*F(-(!**{t*"}t*{u*"}u*0 @o 8r*po ( :o 8rHpo ( ,@rVpo ( ,-(K oL (r*p(B s1 zo o ( o %9rbp( -rnp( :8o r p o ( ,-(K oL (rp(B s1 zrHpo ( :(& o o:e"   8o  oH   o ( o %9rp( -:rp( -Drp( -Nrp( -[rp( -h+|rp o ( ,i+drp o ( ,Q+L o (b(I "DZ+1 rp o ( ,+rp o ( ,  X  o oJ ?(& o  o orot oo+<ov,3- oz-'(K oL o^((B s1 zow( +w(& o o-(& o o+<ov,3- oz-'(K oL o^((B s1 zow("99(ooooy, o{8oo}8o  r p o ( ,-(K oL (rp(B s1 zrHpo ( :(' o o-((' o o oo+<o,3- o-'(K oL o((B s1 zo( +y(' o o-(' o o+<o,3- o-'(K oL o((B s1 zo("9(oooo, o+loo+\rHpo ( , ("+( ((o oF o (ooooo :zo :K*0]A{v,R{vo o +o t o|, oo -u,o {w,R{wo o +o t o, oo -u,o  8(( o o3<o(K oL (o(B sXo +:o(K oL (  o (B sXo X ((o ?_*+Et+0B {v,B +0(&o oz,, rpo  oX (&o 2{w,B +0('o o,, rpo  oX ('o 2 +4, rpo  ((o o, o X ((o 2-o *0H{v-9((o{v-(osxs}v{v*0H{w-9((o{w-(osxs}w{w*j{x- s }x{x*R{x, s }x*.(*(}z}{}r}y*0C(oo,*(K oL ( rp(B s1 z{y*0C(oo,*(K oL ( rp(B s1 z{z*{{*{{.j/ (s z}{*{|*"}|*0C(09r(po (oo, j(.3 (oo->(-(..0rp(br0p (.(B o rp(5 rp ((j(B o o *F(0,(**r(po rp(o (%o *>( }}*{}*0D(6s* oo *0"D(6s+ oo *0o 2 o t**6o t*s}s }(}~}}r*{~*"}~*{*"}*{*"}*04E(o- +!(,(B + (B *{*z,(B- (s1 z}*{*z,(B- (s1 z}*F(G-(**6{o*0(G9rpo (B3Yrpo rpo rp(o rDpo {o(@oK o (%+'r-po rpo rp(o o o o *rpo rp(o (%o *0F(B@(:(D~! (((Y{(^o(f o + o (^o & o - u,o o ($*(D(K oL (((B sXo *(B3g(,$(D(g((s[o *(D(K oL (((B sXo *(, ($*(K oL (((B sXo *U!v0S'(P&{% ( {-'{,{oow &{( &( {*1E0l'{% ( {-G{-?QsRss}(ooJ{o( {* Q^0Gs o  (B3=o (oo ((sA (@oB oC +-o (oo oD ((oE (B(e}*0]'{% ( {o,{o(d}{o}{( ( (U* BOb{(l t}*b{(m t}*j{,{~n o *>( }*{*>~! (Y*0 H(Ws? oo *0o 2 o t**6o t*0~! }~! }~! }}s}s }s }s }(}}}}}}%(L (M %}}} }*{*{*Z(,sG z}*{*Z(,sG z}*{*Z(,sG z}*0U"{3A(]ooo,*(K oL ( rp(B s1 z{*{*{*"}*{*Z(,sG z}*{*"}*{*"}*{*{*{*{*"}*{*"}*04E(]o- +!(,(v + (v *{*"}*{*"}*{*z,(v- (s1 z}*{*z,(v- (s1 z}*{*"}*0GIo 8-o r po ( ,-(K oL (r8p(B s1 z  8o oH o ( o % ,N rTp( - rhp( -+0rrpo (  +Grpo ( -3 +/(K oL (  o  (B s1 zXo oJ ?F(o (h o&o ,rpo ( 98o ( o % 9 rp( -, rp( -2 rp( -8 rp( -H+Zo (h(g+uo (h(m+ao (h(o &+Co (h(k+/(K oL (  o  (B s1 zo :*6{o*0J(v.r-p+rpo r~po r p(`-rp+rpo r*p(b-rp+rpo (q,r8p(s-rp+rpo rFp(h-rp+rpo "(e4%rbp(e"D[k ( (N o {orp(^o (v@q +(oO oX (oP 2(]oo(loO 9o99(loI /3r~p(5 rp(l(j(B o (9 +Nrpo rp(5 rp(o (j(B o o X (o 2+S(foI /5rp(5 rp(f(j(B o +rprpo (h,rp(jo o o *rpoQ ,rpoR ,oI Yo> **0oK(]oooo (`oS (boT  0(q, (soU (: +H( oO osV oW  oX ooY  0 ooZ X (oP 2(loI 1((]oo-+ (loO,Ro<,I(lo[ {,O +!o\ ( o s] o^ X (o 2+(foI / (fo_ (h, (jo` *0L(^sa (v@(:(x~! (^(]o((Y{(^o((f o +o (^ o &o -u,o o *(x(K oL ((^(k(]o(B sXo *(9(oob (]oooo 26oc rpod (poe oc rpod of (x(g(^(]o(s[o *{(K oL ((^(k(]o(B sXo *u#0S'(&{% ( {-'{,{oow &{( &( {*1E0q'{% ( {-L{-Dsss}(]oooJ{o( {* Vc0Ms o  (v@(]o9(]o,Lo (]ooo oD (]o(]ooE (^sa 8o (]ooo (]o(]osA (^sa +Go (]ooo o? (]o(]oo@ (^sa (8(]o,No (]ooo oD (]o(]ooE og (^oh +Lo (]ooo o? (]o(]oo@ og (^oh (v(e}*0]'{% ( {o,{o(d}{o}{( ( (* BOb{(l t}*b{(m t}*j{,{~n o *0P'{-A{-9(,(+){% ( {- s}( {*-B0y'{% ( {-T{-L{-Dsss}(]oooJ{o( {* ^k0S'(&{% ( {,{oow &{( ( {,{z*(<0uNsN (brp(]oo(  (]o-r(p+rp(]o(  (]o(  (^(  (B (O oP o (]oooo  0-TrprprpoQ +"TrprpoQ s sS oU o u+'o o.  1+o. o&o - ,o }*-4a 0K'{% ( {o}{o}{( ( (* 0=b{(l t}*b{(m t}*j{,{~n o *0a'(&{% ( {,&{-{oow &{( ( {,{z{*0D0y'{% ( {-T{-L{-Dsss}(]oooJ{o( {* ^k0#Os  (]oooo=sN (brp(]oo(  (]o-r(p+rp(]o(  (]o(  (^(  (B (O oP o TrpoQ sS oU o u + o o & o - , o }* 0K'{% ( {o}{o}{( ( (* 0=b{(l t}*b{(m t}*j{,{~n o *>( }*0 "(*0 #P{s\ o *0o 2 o t**6o t*0G}s}s }(}}}}}*{*{*Z(,sG z}*{*{*"}*{*"}*04E(o- +!(,( + ( *{*"}*{*"}*{*z,(- (s1 z}*{*z,(- (s1 z}*{*"}*0;Qo 8(o ( o % 9rp( -,rp( -+rp( -;rp( -K8(8(o (J (8(o (J (8o r po ( ,*(K oL ( r8p (B s1 z(o (ho&+.(K oL (o (B s1 zo :*6{o*06R(.r-p+rpo rpo {orp(o (9( EU8rprpo +}r(po (br0p (\ (B oK o +?rJpo (br0p(\(B oK o  +(oi oX (oj 2o o *0S(sk (@(:(~! ((o((Y{(^o((f o +o (^ o &o -u,o o *((K oL (((k(o(B sXo *(,/((g((o(s[o *((K oL (((k(o(B sXo *u#0VT +)(oi ol osm on X (oj 2(,((oo *0S'(&{% ( {-'{,{oow &{( &( {*1E0q'{% ( {-L{-Dsss}(oooJ{o( {* Vc0]'{% ( {o,{o(d}{o}{( ( (* BO0Us o  (3Po (ooo o? (o(oo@ (sk (+Lo (ooo o? (o(oo@ op (oq ((e}*b{(l t}*b{(m t}*j{,{~n o *{-+(oooJsso{*0Vs}sN  T r p (oo(  r`p (o(  rp (o(  rp ((  rp (( (O oP o TrpoQ sS oU o u +{o o&o - ,o * >( }*&(*0W{s o *0o 2 o t**6o t*r( }}}*{*{*{*0rpo rp(-rp+rpo rp(-r p+r4po rp(5 rp ((j(B o o *0KXsr (5 rRp ((j(-rfp+rnpos &o, *0Ys (t *0+Z +(O o( ,*X (P 2*(u *:( }*{*0Brpo rp(5 rp ((j(B o o *04Xsr (5 rp ((jos &o, *0[s (v *0+T +(i o( ,*X (j 2*(w *~! }( }}*{*{*"}*{*"}*{*"}*{*"}*0f\rpo ( E!/+9rpo (oK o +{o+ (o o *0]o 8o ( o % ,Yrxp( -r& p( -+=(o (+P((- s((o+(u. ,%(%((w(? (o :^*~! }~! }~! }( *~! }~! }~! }( }}}*{*{*{*0zXsr {oI 1_{oI 1Q{oI 1C( rp {(j{(j{(jos &o, *0{oI >{oI 1t{oI 1frpo rp(o rp po rp(o r(po rp(o o o o *0^o 9r& po ( ,*(K oL ( rp(B s1 zo ,r po ( ,*(K oL ( rp(B s1 zo }o ,rpo ( ,*(K oL ( rp (B s1 zo ,r po ( ,-(K oL (r0p(B s1 zo }o ,rpo ( ,-(K oL (rbp(B s1 zo ,r po ( ,-(K oL (rp(B s1 zo }*~! }~! }~! }*(**(*s }}~! }~! }( }*{*0> +{ox 53*X {oy 2{5o *n{5(L oz t *2{o *{*>}}*{*{*>}}*{*{*>}}*{*{*"}*{*"}*{*"}*{*"}*{*z/ (s z}}*{*>}}*{*~/ (s z}}*{*{*~/ (s z}}*{*{*>}}*{*{*"}*{*>}}*{*{*0B(oo 2 + 2/ (s z}}*{*{*21(s z}}*{*{*"}*{*"}*j{- s }{*0_rpo ( i/Arpo  +&rp5(L 5({ o X i2o (, (o( ,?rpo (br0p( \(B oK o ( ,?rpo (br0p(\(B oK o (,?r4po (br0p(\(B oK o (,?rVpo (br0p(\(B oK o (,?rpo (br0p(\(B oK o (,?rpo (br0p  (\ (B oK o (oI /rp(o (,rpo o 8(,rpo o +br2po 0(L (0({ oK o rHpo 1(L (1({ oK o rbpo 2(L (2({ oK o r|po /(L (/({ oK o (,C(oI 15(5 rp  ((j (B rpo (-(,rpo o ( o  + o  o  o - u  , o o *0_`o 8Lo % 9~*:s} %rp(~ %rp(~ %rp(~ %rp(~ %r4p(~ %rVp(~ %rp(~ %rp(~ %rp(~ %rp (~ %r2p (~ %rHp (~ %rp (~ %rbp (~ %r|p(~ %rp(~ %rp(~ *~* ( 9E>b}!Fkt8o +(5(L o ( 5(&o -8(- s$((o8o (b( ( 8no (b( ( 8So (b( (88o (b( (8o (b( (8o (b( (8o (8(80(L o ( 0(81(L o ( 1(8(+w2(L o ( 2(+U/(L o ( /(+3o (+%(+u. ,( (wo &o :*0, - rps z9rXps z3. rps z3,3 rps z3.,333 rps z3.33-3 rLps z,3 rXps z*(**(*frpo (o *( *0J~! }~! }( }}},},}*{*{*{*{*{*~! }( }},}*{*{*{*( }F}G}H}I*{F*{G*{H*{I*:( }J*{J*"(G*"(G*.(Z*.(Z*.(Z*0U}Ks }LoI 1 {Lo &rpoQ ,o }M+}M}N*.(\*}K}LrpoQ ,o }M+}M}N*{K*{L*{M*{N*0a   +bo tTo tToy -o t oX X +"/o t oX +X o /#o 2+o t oX o 2*r~O-rps O~O*u-"u-u-u- u**0.bs +!o o &( o &o -*0Ecs o o o o o o o , o *0do o , o *0do o , o *rpoQ ,rpoR ,oI Yo> **0DeoI Zs   +  o o &3o & X oI 2o, *&](i*&'(i*0VfoI s   +0 o 3, +o & + o & X oI 2o, *&](l*&'(l*0Zgrps o o ,1o o o (mQo o o (mQ*(s1 z.(q*0hr?ps o o ,lo o o (mQo o o oI 1o o o (mQ+r>pQo o o (mQ*rFps o o ,] o o o Q o o o oI 1 o o o Q+r>pQ o o o Q*9rps o o ,T~! Qr>pQo o o 1o o o (mQ*o o o Q*(s1 z(s1 z0eis rps o +?o o o rnpo o o ( o&o o -*0j~! s Qrps o o ,uo o o o o o o +)o t o 1P o (mo &o -u,o *T608kT rp(jr p(jrp(( *&(v*0^l o+sx o-o +'( o,ook -. + ( - o *4N0m( s s o o o ~! o o ,Co o +o t o o -u,o o -o o ,o +o o o o o, ,o ,o *(E!f  0Zn( ( }Qr p rM p oQ , {Q_. o ,r] p( }P*( }P*--*,-*-,*{Po tTtT{Qo *( *"( *&( *&( *(z*N(({}R*R((|}R*&(}*{R*(z*N(({}S*R((|}S*&(}*{S*( *(*(*.rc p(*.r p(*.r p(*.r p(*.r !p(*.r9!p(*.ru!p(*.r!p(*.r!p(*.r7"p(*.r"p(*.r"p(*.rA#p(*.r#p(*.r$p(*.ri$p(*.r$p(*.r$p(*.r_%p(*.r%p(*.rI&p(*.r&p(*.r'p(*.rq'p(*.r'p(*.r%(p(*.r(p(*.r(p(*.rI)p(*.r)p(*.r*p(*.r*p(*.r*p(*.r +p(*.r7+p(*.re+p(*.r+p(*.rl,p(*.r,p(*.r-p(*.r:-p(*.r-p(*.r-p(*.r-p(*.r*.p(*.rZ.p(*.r.p(*.r.p(*Fr.p\(*^r0/p\\(*^r|/p\\(*Fr/p\(*2r/p(*2r<0p(*2rx0p(*2r0p(*2r0p(*2r1p(*2r*1p(*2rF1p(*6rf1p(*( *~**F~~o *0'(5 ~~o  (B *0+(5 ~~o  (B *F(L o F(L o o s *( *(*(*.r1p(*.r1p(*.rp(*.r1p(*.rj p(*.r1p(*.rp(*.r1p(*.r 2p(*.r&2p(*.r@2p(*.rR2p(*.rt2p(*.r2p(*.r2p(*.r2p(*.r2p(*.r2p(*.r2p(*.r2p(*.r2p(*.r3p(*.r3p(*.r*3p(*.r:3p(*.rN3p(*.r`3p(*.rv3p(*.r3p(*.r3p(*2r3p(*2r3p(*6r4p(*2rT4p(*6r4p(*Fr4p\(*( *~**F~~o *0'(5 ~~o  (B *0+(5 ~~o  (B *H(L o H(L o o s *s }(}}}}*{*{*Z(,sG z}*{*"}*j{- s }{*{*"}*04E(o- +!(,( + ( *{*"}*{*"}*6(*{*z,(- (s1 z}*( *{*z,(- (s1 z}*0oo +(o o,&o ,r4po ( ,,r5po ( ,-(K oL (r5p(B s1 zo -.(K oL (o (B s1 zr5po ( :o r*5po ,r<5po ( - (+(o 8rF5p o ( ,-(K oL (rF5p(B s1 z o rR5po ,r`5po ( -( o o &+ (o & o :h(-P(o 1B(o X(*(K oL (o (B s1 z*0prpo (.r-p+rpo rpo rp(o  +(o o(X (o 2rl5po r5po  +L(o -#r po rR5prpo o +r p(o o X (o 2o o o o o *0q(,F(o +( o o&s o ( -o (o (,j(o 3\(o   +2(o , (o (o o'X (o 2o *,@(32(,*(( (f((s[o *0S'(&{% ( {-'{,{oow &{( &( {*1E0l'{% ( {-G{-?sss}(ooJ{o( {* Q^0rs o  (3+o (oo (s9 (+'o (oo o: (o; ((e}*0]'{% ( {o,{o(d}{o}{( ( (* BOb{(l t}*b{(m t}*j{,{~n o *{-&(ooJsso{*0Vs*}sN T r p (o(  r5p ((  r5p (( (O oP o TrpoQ sS oU o u +{o o,&o - ,o * >( }*{*0s(s oo *0o 2 o tJ**6o tJ*0t~! }s }( }}r 6p0s o o 9so o ?bo o o o  o o 3Bo o o o oI 1 r6p( - +( ( %9~+:Js} %r6p(~ %r6p(~ %r6p(~ %r6p(~ %r6p(~ %r6p(~ %r6p(~ %r7p(~ %r#7p(~ %r37p (~ %rC7p (~ %rO7p (~ %rW7p (~ %rc7p (~ %ro7p(~ %r7p(~ %r7p(~ %r7p(~ %r7p(~ %r7p(~ %r7p(~ %r7p(~ %r 8p(~ %r8p(~ %r/8p(~ +~+( 9yE/;Yeq?KWco8 ( }* 1  ( }*s }*( }* 1  ( }*s }*( }*( }* 1  ( }*'s }* 1  ( }*&s }* 1 s }*s }*( }*( }*( }* 1  ( }* s }* 1  ( }* -s }*(s z( }*( }*( }*( }* 1  ( }*%s }*( }*( }* 1  ( }* -s }*(s z 1  ( }* -s }*(s z( }*(s z(s z{*{*{*0u{o YE'1Vtb11BT18( ( *()*( ( *( ( *( ( **( *( ( \* ( ( *( *o( ( *( ( *s **sG zJrG8p(%o *0dv ,]oI 1T  rm8poQ , oI Y 13  +!o ( o X X oI 2*:( }*{*0w(+s# ( *s }(}}}(5*{*{*Z(,sG z}*{*"}*04E(.o- +!(,(4 + (4 *{*"}*{*"}*6(4*{*z,(4- (s1 z}*(9*{*z,(4- (s1 z}*0xo ,r`po ( ,*(K oL ( r`p(B s1 zo (2o +Vrpo ( ,*(K oL ( rp (B s1 z(Io o &o -*0rpo (4.r-p+rpo r~po rp(/o rp(1o  +rp(Io o X (Io 2o o o *0C(1o {,. +o {o o &X {o 2*(432(<,*(@(6(f(/(s[o *0S'(C&{% ( {-'{,{oow &{( &( {*1E0l'{% ( {-G{-?DsEss}(.ooJ{o( {* Q^0ys o  (43+o (.oo (/s< (@+'o (.oo o= (/o> (4(e}*0]'{% ( {o,{o(d}{o}{( ( (H* BOb{(l t}*b{(m t}*j{,{~n o *{-&(.ooJJsso{*0Vs }(9sN T r p (.o(  rs8p (/(  r8p (( (O oP o TrpoQ sS oU o u +{o o &o - ,o * >( }*{*6~! (N*0z(Ls- o/o *0o 2 o tN**6o tN*0t~! }}~! }(}( ,BoI 1(,((5 o }+}{- ~! }*{*{*0CoI 1(,((5 o }+}{- (}*0.{{-+ {oI ,{+( *{*0|u u ,7o u , o &+9o (_(5 o +o (_(5 o / {( o sz{(sz*fff0{}sr {, rpo &o &{oI ,{o &+o &oI ,r8po o &{, rpo &o, *0~P ( ( ( ,$^(&|{ -P sr (RoI -rp* o &{oI , {o &+ o &oI , r8po (So & o ( [Y+  o &%Y-r8p(Rr8po  YY>+no   1M XYo   1 X+XoI /'o oI X+  oI XXoI 2  o o ( o & o, *0/ (L 3 s +( (5 o *"(Q* * *F(\}*:rp(]*:rp(^*"(Q* *2{-**F(\}*>(S(]*>(S(^*>}(f*2{-**joI 1}(i*>}(Q* *2{-**oI Yo ,3oI Yo> +}(\}*0+( r8p (S(B (]*0+( r8p (S(B (^*"(f*0( (\}*>}(Q* *2{-**oI ,( }(\}*0+( rp (S(B (]*0+( rp (S(B (^*(z*"({*&(|*&(}*6s *~*0( , o ( *rp*2rpo*0s    8)o "3E-A ,0XoI /Xo "3o &8 8 X 8o [3 - -+wo ]3) -&,"XoI /ZX( ,OX +Co ,3 -, X +%( , - ,+( --,!/Yo> o &  +,oI / ,X oI ?,o o &oy 1o T(L oz t*0X(&   8  o /. o -3L,{oV- +:o ( ,#{oV,{{(s~z + - (s~z,T{oXYE+c{rp{oY +H{rp{oY+/{oX.{{oY+ (s~zX i?,#{oV-{{(s~z(-o*0osr ( (o8 oo o r8po &o -o, o (,(o** *8{*0{,{*s $ ( o +V o . o 37Q(L o i-+ uQ,so &Xi2Z(L oz t}{*0sr oI ,o ( o ( o &sr (o ( o &(o r8po &sr (+d r8po {r8p {o oZo &( o {r8p {o o[o &Xi2o ( o ( o o ( o &o, *0o o o o sr o r8po o ( o &(o r8po o ( o &o ( o &o, *0(+ ,o  *~! *0(+ ,o  *~! *0&(+ ,o  r8pr9po *~! *0(+ ,o  *~! *05( o  (L o i3 **0:(  +% {{o oU, X i2**( *"o*6(o*vr 9pr%9ps *( *( - ro9ps z- ry9ps z}}*( *0N( }o# ts( }o. 2{o. o s ( }*~**,*0Br9p((-%~,sG z{o }(r9p(*0r:p((9{,Vr]:p(}{ou &{o {ov }{o }r:p(({o ~X% 3 ( (r:p(*R{o o' *2{o. *F{o o *06r:p({o# t , o$ (rW;p(*r;p(, o& (r <p(*b{(l t>}*b{(m t>}*j{,{~n oP*b{(l t?}*b{(m t?}*j{,{~n oT*0)r_<p((s (r<p(*0/r=p((s (rU=p(o*r=p(((r=p(*r=>p((((r>p(*0r>p({% (  +X {oy /{ox t`oo2{o ( rI?p({ou &r?p(*CZ0[r?p({o +o t` oo -u ,o {o r)@p(*40ru@p({-r@p(so }{, {o -U T^%0UrBp({ ow &{oy >r+Cp( {% ( {ox t` {o ( r]Cpo, (7 ({( rCpo, (7 ({o% raBpo, o ( (oTr9Bpo, (7 (o{( o, oo{oy - {o &{, (9(,(rCp(*(F f.%UT***rCpr Dps **(*( }}}so } }* 0((  * 6{o*6{ ou &*{*{ *{*{*"}*:((! *,r_Dp({ o } *rDp{o" o {\( *V( } } *6{ o** *s# z *{ *"} *rDp{ o" o (\( *V( } } ** *s# z *{ *"} *rEp{ o$ (\( *"(*{ o o% { o& o/ { o' &*"(*{ o o% { o& o/ { o^ }*0{ }*( *{*{*{*{*{*{*{*{*0 8o oH o ( o % 9~,-as} %r7Ep(~ %r[Ep(~ %rqEp(~ %rEp(~ %rEp(~ %rEp(~ %rEp(~ ,~,( 9% E-U}8}rpo ( 9}8}rpo ( 9}8}rpo ( 9}8}rpo ( ,m}+d}rpo ( ,K}+B}rpo ( ,)}+ }rpo ( ,}X o oJ ?$*0(9r7Ep(-rp+rpo r[Ep(-rp+rpo rqEp(-rp+rpo rEp(-rp+rpo rEp(-rp+rpo rEp(-rp+rpo rEp(-rp+rpo *0(9|(brFp (-rGFp+rOFp(B o &(brUFp (-rGFp+rOFp(B o &(br{Fp (-rGFp+rOFp(B o &(brFp (-rGFp+rOFp (B o &(brFp(-rGFp+rOFp(B o &(br Gp(-rGFp+rOFp(B o &(br7Gp(-rGFp+rOFp(B o &*rmGp*&lSystem.Resources.ResourceReader, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet=PADPADPNp鄑vB1|?/Jf n폽 &Ip}&:Y}71fkjg{7E2Wx5JzGDNonSysAdminCannotInitializeMsdb'BNotSupportedPartitionFunctionType.NumberOfEventsIsInvalid"JNumberOfIndexColumnsIsOutsideTheRangeKPNumberOfKeyIndexColumnsIsOutsideTheRangeDProjectedRowsMustBeGreaterThanZeroZPropertyIsUnavailableWhenRunningInConsoleMode:RecommendationAlreadyProvidedY 0 BEGIN ROLLBACK TRANSACTION RAISERROR ('Inserting to dta input table failed', 16, 1) RETURN @@ERROR END SELECT @SessionID = @@identity insert into [msdb].[dbo].[DTA_progress] (SessionID,WorkloadConsumption,EstImprovement,TuningStage) values(@SessionID,0,0,0) IF @@ERROR <> 0 BEGIN ROLLBACK TRANSACTION RAISERROR ('Inserting to dta progress table failed', 16, 1) RETURN @@ERROR END COMMIT TRANSACTION RETURN 0 go GRANT EXEC ON sp_DTA_add_session TO PUBLIC go /* sp_DTA_check_permission @SessionID, - ID of a session to check Checks if caller has enough permissions If caller in SA role then returns 0 (allow) If caller in DB role and if caller owns session then returns 0 (allow) */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_check_permission' AND type = 'P') DROP PROCEDURE sp_DTA_check_permission go CREATE PROCEDURE sp_DTA_check_permission @SessionID int AS BEGIN DECLARE @tuning_owner nvarchar(128) DECLARE @user_name nvarchar(128) SET NOCOUNT ON IF (ISNULL(IS_SRVROLEMEMBER(N'sysadmin'), 0) = 1) BEGIN RETURN(0) END SELECT @tuning_owner = TuningOwner FROM msdb.dbo.DTA_input WHERE SessionID = @SessionID SELECT @user_name = SUSER_NAME() IF(@tuning_owner =@user_name) RETURN(0) ELSE RETURN(1) RETURN(1) END go GRANT EXEC ON sp_DTA_check_permission TO PUBLIC go /* sp_DTA_delete_session @SessionID - ID of a session to delete Deletes a session with a given ID and removes references to that session FROM all tables. */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_delete_session' AND type = 'P') DROP PROCEDURE sp_DTA_delete_session go CREATE PROCEDURE sp_DTA_delete_session @SessionID int AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END delete FROM msdb.dbo.DTA_input WHERE SessionID=@SessionID END go GRANT EXEC ON sp_DTA_delete_session TO PUBLIC go /* sp_DTA_get_session_tuning_results @SessionID - ID of a session requested Returns the following rowset: TuningResults, FinishStatus, StopTime */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_get_session_tuning_results' AND type = 'P') DROP PROCEDURE sp_DTA_get_session_tuning_results go CREATE PROCEDURE sp_DTA_get_session_tuning_results @SessionID int AS BEGIN SET NOCOUNT ON DECLARE @retval int EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END SELECT FinishStatus,TuningResults FROM msdb.dbo.DTA_output WHERE SessionID=@SessionID END go GRANT EXEC ON sp_DTA_get_session_tuning_results TO PUBLIC go /* sp_DTA_set_interactivestatus @InterActiveStatus - Interactive status in MSDB @SessionID - ID of a session requested Sets the interactive status in input table */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_set_interactivestatus' AND type = 'P') DROP PROCEDURE sp_DTA_set_interactivestatus go CREATE PROCEDURE sp_DTA_set_interactivestatus @InterActiveStatus int, @SessionID int AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END update [msdb].[dbo].[DTA_input] set InteractiveStatus = @InterActiveStatus WHERE SessionID = @SessionID END go GRANT EXEC ON sp_DTA_set_interactivestatus TO PUBLIC go /* sp_DTA_help_session @SessionID - ID of a session to list, optional @IncludeTuningOptions - Flag that indicates that input XML Should be included in returned rowset. */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_help_session' AND type = 'P') DROP PROCEDURE sp_DTA_help_session go CREATE PROCEDURE sp_DTA_help_session @SessionID int = 0, @IncludeTuningOptions int = 0 AS BEGIN DECLARE @tuning_owner nvarchar(256) DECLARE @retval int DECLARE @InteractiveStatus tinyint DECLARE @delta int SET NOCOUNT ON -- List all Sessions mode IF @SessionID = 0 BEGIN -- If sysadmin role then rowset has all the rows in the table IF (ISNULL(IS_SRVROLEMEMBER(N'sysadmin'), 0) = 1) BEGIN IF (@IncludeTuningOptions = 0) BEGIN SELECT I.SessionID, I.SessionName, I.InteractiveStatus, I.CreationTime, I.ScheduledStartTime, O.StopTime,I.GlobalSessionID FROM msdb.dbo.DTA_input I left outer join msdb.dbo.DTA_output O on I.SessionID = O.SessionID order by I.SessionID DESC END ELSE IF (@IncludeTuningOptions = 1) BEGIN SELECT I.SessionID, I.SessionName, I.InteractiveStatus, I.CreationTime, I.ScheduledStartTime, O.StopTime,I.TuningOptions,I.GlobalSessionID FROM msdb.dbo.DTA_input I left outer join msdb.dbo.DTA_output as O on I.SessionID = O.SessionID order by I.SessionID DESC END END ELSE BEGIN IF ( @IncludeTuningOptions = 0 ) BEGIN SELECT I.SessionID, I.SessionName, I.InteractiveStatus, I.CreationTime, I.ScheduledStartTime, O.StopTime,I.GlobalSessionID FROM msdb.dbo.DTA_input I left outer join msdb.dbo.DTA_output O on I.SessionID = O.SessionID WHERE TuningOwner = SUSER_NAME() order by I.SessionID DESC END ELSE IF (@IncludeTuningOptions = 1) BEGIN SELECT I.SessionID, I.SessionName, I.InteractiveStatus, I.CreationTime, I.ScheduledStartTime, O.StopTime,I.TuningOptions,I.GlobalSessionID FROM msdb.dbo.DTA_input I left outer join msdb.dbo.DTA_output O on I.SessionID = O.SessionID WHERE TuningOwner = SUSER_NAME() order by I.SessionID DESC END END END ELSE BEGIN EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END IF ( @IncludeTuningOptions = 0) BEGIN SELECT I.SessionID, I.SessionName, I.InteractiveStatus, I.CreationTime, I.ScheduledStartTime, O.StopTime,I.GlobalSessionID FROM msdb.dbo.DTA_input I left outer join msdb.dbo.DTA_output O on I.SessionID = O.SessionID WHERE I.SessionID = @SessionID END ELSE IF (@IncludeTuningOptions = 1) BEGIN SELECT I.SessionID, I.SessionName, I.InteractiveStatus, I.CreationTime, I.ScheduledStartTime, O.StopTime,I.TuningOptions,I.GlobalSessionID FROM msdb.dbo.DTA_input I left outer join msdb.dbo.DTA_output O on I.SessionID = O.SessionID WHERE I.SessionID = @SessionID END SELECT ProgressEventID,TuningStage,WorkloadConsumption,EstImprovement, ProgressEventTime FROM msdb.dbo.DTA_progress WHERE SessionID=@SessionID order by ProgressEventID SELECT @InteractiveStatus=InteractiveStatus FROM msdb.dbo.DTA_input WHERE SessionID = @SessionID SELECT @delta=DATEDIFF(minute ,ProgressEventTime,getdate()) FROM msdb.dbo.DTA_progress WHERE SessionID =@SessionID IF (@InteractiveStatus IS NOT NULL AND( @InteractiveStatus <> 4 AND @InteractiveStatus <> 6) AND @delta > 5) BEGIN update [msdb].[dbo].[DTA_input] set InteractiveStatus = 6 WHERE SessionID = @SessionID END END END go GRANT EXEC ON sp_DTA_help_session TO PUBLIC go /* sp_dta_update_session @SessionID, - ID of a session to update [@SessionName,] - New session name (optional) [@Status] - New session status (optional) Possible values: 0 stop session 1 cancel session 2 start session (currently not used, reserved) At least one of the optional parameters must be provided. */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_update_session' AND type = 'P') DROP PROCEDURE sp_DTA_update_session go CREATE PROCEDURE sp_DTA_update_session @SessionID int, @SessionName nvarchar(30) = NULL, @InteractiveStatus tinyint = NULL AS BEGIN DECLARE @x_SessionName nvarchar(30) DECLARE @x_InteractiveStatus tinyint DECLARE @retval int DECLARE @ErrorString nvarchar(500) SET NOCOUNT ON SELECT @SessionName = LTRIM(RTRIM(@SessionName)) DECLARE @dup_SessionName nvarchar(30) IF @SessionName IS NOT NULL BEGIN SELECT @dup_SessionName = @SessionName FROM msdb.dbo.DTA_input WHERE SessionName = @SessionName IF (@dup_SessionName IS NOT NULL) BEGIN SET @ErrorString = 'The session ' + '"' + LTRIM(RTRIM(@SessionName)) + '"' +' already exists. Please use a different session name.' RAISERROR ( @ErrorString, 16, 1) RETURN(1) END END exec @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END IF ((@SessionName IS NOT NULL) OR (@InteractiveStatus IS NOT NULL) ) BEGIN SELECT @x_SessionName = SessionName, @x_InteractiveStatus = InteractiveStatus FROM msdb.dbo.DTA_input WHERE SessionID = @SessionID IF (@SessionName IS NULL) SELECT @SessionName = @x_SessionName IF (@InteractiveStatus IS NULL) SELECT @InteractiveStatus = @x_InteractiveStatus UPDATE msdb.dbo.DTA_input SET SessionName = @SessionName, InteractiveStatus = @InteractiveStatus WHERE SessionID = @SessionID END END go GRANT EXEC ON sp_DTA_update_session TO PUBLIC go /* sp_DTA_get_tuninglog @SessionID - ID of a session requested Returns the following rowset: RowID,CategoryID,Event,Statement,Frequency,Reason */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_get_tuninglog' AND type = 'P') DROP PROCEDURE sp_DTA_get_tuninglog go CREATE PROCEDURE sp_DTA_get_tuninglog @SessionID int, @XML int = 0 AS BEGIN SET NOCOUNT ON DECLARE @retval int DECLARE @LogTableName nvarchar(128) DECLARE @DefaultTableName nvarchar(128) DECLARE @SQLString nvarchar(500) EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END set @DefaultTableName = '[msdb].[dbo].[DTA_tuninglog]' set @LogTableName = ' ' SELECT top 1 @LogTableName = LogTableName FROM DTA_input WHERE SessionID = @SessionID IF (@LogTableName = ' ') RETURN (0) IF @XML = 0 BEGIN IF @LogTableName = @DefaultTableName BEGIN SELECT RowID,CategoryID,Event,Statement,Frequency,Reason FROM [msdb].[dbo].[DTA_tuninglog] WHERE SessionID = @SessionID RETURN(0) END set @SQLString = N' SELECT RowID,CategoryID,Event,Statement,Frequency,Reason FROM ' set @SQLString = @SQLString + @LogTableName set @SQLString = @SQLString + N' WHERE SessionID = ' set @SQLString = @SQLString + CONVERT(nvarchar(10),@SessionID) EXEC (@SQLString) END ELSE BEGIN IF @LogTableName = @DefaultTableName BEGIN SELECT RowID,CategoryID,Event,Statement,Frequency,Reason FROM [msdb].[dbo].[DTA_tuninglog] WHERE SessionID = @SessionID FOR XML RAW RETURN(0) END set @SQLString = N' SELECT RowID,CategoryID,Event,Statement,Frequency,Reason FROM ' set @SQLString = @SQLString + @LogTableName set @SQLString = @SQLString + N' WHERE SessionID = ' set @SQLString = @SQLString + CONVERT(nvarchar(10),@SessionID) set @SQLString = @SQLString + 'FOR XML RAW' EXEC (@SQLString) END END go GRANT EXEC ON sp_DTA_get_tuninglog TO PUBLIC go IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_indexusagehelper' AND type = 'P') DROP PROCEDURE sp_DTA_indexusagehelper go CREATE PROCEDURE sp_DTA_indexusagehelper @SessionID int, @IsRecommended int, @XMLType int AS BEGIN IF @XMLType = 0 BEGIN SELECT D1.DatabaseName as 'Database Name', T1.SchemaName as 'Schema Name', T1.TableName as 'Table Name', I1.IndexName as 'Index Name', R.Count as 'Number of times index was referenced in workload' , CAST(ROUND(R.Usage,2) as decimal(10,2)) as 'Percentage usage' FROM DTA_reports_database as D1 , DTA_reports_index as I1, DTA_reports_table as T1, ( SELECT D.DatabaseID,T.TableID , I.IndexID ,SUM(Q.Weight) as Count, 100.0 * SUM(Q.Weight) / ( 1.0 * ( SELECT CASE WHEN SUM(Q.Weight) > 0 THEN SUM(Q.Weight) ELSE 1 END FROM [msdb].[dbo].[DTA_reports_query] AS Q, DTA_reports_queryindex AS QI WHERE QI.QueryID = Q.QueryID AND Q.SessionID = QI.SessionID and QI.IsRecommendedConfiguration = @IsRecommended and Q.SessionID = @SessionID )) AS Usage FROM [msdb].[dbo].[DTA_reports_index] AS I LEFT OUTER JOIN [msdb].[dbo].[DTA_reports_queryindex] AS QI ON QI.IndexID = I.IndexID LEFT OUTER JOIN [msdb].[dbo].[DTA_reports_query] AS Q ON QI.QueryID = Q.QueryID JOIN [msdb].[dbo].[DTA_reports_table] as T ON I.TableID = T.TableID JOIN [msdb].[dbo].[DTA_reports_database] as D ON T.DatabaseID = D.DatabaseID AND Q.SessionID = QI.SessionID and QI.IsRecommendedConfiguration = @IsRecommended and Q.SessionID = @SessionID GROUP BY I.IndexID,T.TableID,D.DatabaseID) as R WHERE R.DatabaseID = D1.DatabaseID and R.TableID = T1.TableID and R.IndexID = I1.IndexID and D1.SessionID = @SessionID and R.Count > 0 ORDER BY R.Count DESC END ELSE BEGIN SELECT D1.DatabaseName as 'Database Name', T1.SchemaName as 'Schema Name', T1.TableName as 'Table Name', I1.IndexName as 'Index Name', R.Count as 'Number of times index was referenced in workload' , CAST(ROUND(R.Usage,2) as decimal(10,2)) as 'Percentage usage' FROM [msdb].[dbo].[DTA_reports_database] as D1 , [msdb].[dbo].[DTA_reports_index] as I1, [msdb].[dbo].[DTA_reports_table] as T1, ( SELECT D.DatabaseID,T.TableID , I.IndexID ,SUM(Q.Weight) as Count, 100.0 * SUM(Q.Weight) / ( 1.0 * ( SELECT CASE WHEN SUM(Q.Weight) > 0 THEN SUM(Q.Weight) ELSE 1 END FROM [msdb].[dbo].[DTA_reports_query] AS Q, [msdb].[dbo].[DTA_reports_queryindex] AS QI WHERE QI.QueryID = Q.QueryID AND Q.SessionID = QI.SessionID and QI.IsRecommendedConfiguration = @IsRecommended and Q.SessionID = @SessionID )) AS Usage FROM [msdb].[dbo].[DTA_reports_index] AS I LEFT OUTER JOIN DTA_reports_queryindex AS QI ON QI.IndexID = I.IndexID LEFT OUTER JOIN DTA_reports_query AS Q ON QI.QueryID = Q.QueryID JOIN DTA_reports_table as T ON I.TableID = T.TableID JOIN DTA_reports_database as D ON T.DatabaseID = D.DatabaseID AND Q.SessionID = QI.SessionID and QI.IsRecommendedConfiguration = @IsRecommended and Q.SessionID = @SessionID GROUP BY I.IndexID,T.TableID,D.DatabaseID) as R WHERE R.DatabaseID = D1.DatabaseID and R.TableID = T1.TableID and R.IndexID = I1.IndexID and D1.SessionID = @SessionID and R.Count > 0 ORDER BY R.Count DESC FOR XML RAW END END go GRANT EXEC ON sp_DTA_indexusagehelper TO PUBLIC go IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_databaseaccesshelper' AND type = 'P') DROP PROCEDURE sp_DTA_databaseaccesshelper go CREATE PROCEDURE sp_DTA_databaseaccesshelper @SessionID int, @XMLType int AS BEGIN IF @XMLType = 0 BEGIN SELECT D1.DatabaseName as 'Database Name', R.Count as 'Number of times database was referenced in workload' , CAST(ROUND(R.Usage,2) as decimal(10,2)) as 'Percentage usage' FROM [msdb].[dbo].[DTA_reports_database] as D1 , ( SELECT D.DatabaseID,SUM(Q.Weight) as Count, 100.0 * SUM(Q.Weight) / ( 1.0 * ( SELECT CASE WHEN SUM(Q.Weight) > 0 THEN SUM(Q.Weight) ELSE 1 END FROM [msdb].[dbo].[DTA_reports_query] AS Q, [msdb].[dbo].[DTA_reports_querydatabase] AS QD WHERE QD.QueryID = Q.QueryID AND Q.SessionID = QD.SessionID and Q.SessionID = @SessionID )) AS Usage FROM [msdb].[dbo].[DTA_reports_database] AS D LEFT OUTER JOIN [msdb].[dbo].[DTA_reports_querydatabase] AS QD ON QD.DatabaseID = D.DatabaseID LEFT OUTER JOIN DTA_reports_query AS Q ON QD.QueryID = Q.QueryID AND Q.SessionID = QD.SessionID and Q.SessionID = @SessionID GROUP BY D.DatabaseID ) as R WHERE R.DatabaseID = D1.DatabaseID and D1.SessionID = @SessionID and R.Count > 0 ORDER BY R.Count DESC END ELSE BEGIN SELECT D1.DatabaseName as 'Database Name', R.Count as 'Number of times database was referenced in workload' , CAST(ROUND(R.Usage,2) as decimal(10,2)) as 'Percentage usage' FROM [msdb].[dbo].[DTA_reports_database] as D1 , ( SELECT D.DatabaseID,SUM(Q.Weight) as Count, 100.0 * SUM(Q.Weight) / ( 1.0 * ( SELECT CASE WHEN SUM(Q.Weight) > 0 THEN SUM(Q.Weight) ELSE 1 END FROM [msdb].[dbo].[DTA_reports_query] AS Q, [msdb].[dbo].[DTA_reports_querydatabase] AS QD WHERE QD.QueryID = Q.QueryID AND Q.SessionID = QD.SessionID and Q.SessionID = @SessionID )) AS Usage FROM [msdb].[dbo].[DTA_reports_database] AS D LEFT OUTER JOIN DTA_reports_querydatabase AS QD ON QD.DatabaseID = D.DatabaseID LEFT OUTER JOIN DTA_reports_query AS Q ON QD.QueryID = Q.QueryID AND Q.SessionID = QD.SessionID and Q.SessionID = @SessionID GROUP BY D.DatabaseID ) as R WHERE R.DatabaseID = D1.DatabaseID and D1.SessionID = @SessionID and R.Count > 0 ORDER BY R.Count DESC FOR XML RAW END END go GRANT EXEC ON sp_DTA_databaseaccesshelper TO PUBLIC go IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_tableaccesshelper' AND type = 'P') DROP PROCEDURE sp_DTA_tableaccesshelper go CREATE PROCEDURE sp_DTA_tableaccesshelper @SessionID int, @XMLType int AS BEGIN IF @XMLType = 0 BEGIN SELECT D1.DatabaseName as 'Database Name', T1.SchemaName as 'Schema name', T1.TableName as 'Table Name', R.Count as 'Number of times table was referenced in workload' , CAST(ROUND(R.Usage,2) as decimal(10,2)) as 'Percentage usage' FROM [msdb].[dbo].[DTA_reports_database] as D1 , [msdb].[dbo].[DTA_reports_table] as T1, ( SELECT D.DatabaseID,T.TableID ,SUM(Q.Weight) as Count, 100.0 * SUM(Q.Weight) / ( 1.0 * ( SELECT CASE WHEN SUM(Q.Weight) > 0 THEN SUM(Q.Weight) ELSE 1 END FROM [msdb].[dbo].[DTA_reports_query] AS Q, [msdb].[dbo].[DTA_reports_querytable] AS QT WHERE QT.QueryID = Q.QueryID AND Q.SessionID = QT.SessionID and Q.SessionID = @SessionID )) AS Usage FROM [msdb].[dbo].[DTA_reports_table] AS T LEFT OUTER JOIN [msdb].[dbo].[DTA_reports_querytable] AS QT ON QT.TableID = T.TableID LEFT OUTER JOIN [msdb].[dbo].[DTA_reports_query] AS Q ON QT.QueryID = Q.QueryID JOIN DTA_reports_database as D ON T.DatabaseID = D.DatabaseID AND Q.SessionID = QT.SessionID and Q.SessionID = @SessionID GROUP BY T.TableID,D.DatabaseID) as R WHERE R.DatabaseID = D1.DatabaseID and R.TableID = T1.TableID and D1.SessionID = @SessionID and R.Count > 0 ORDER BY R.Count DESC END ELSE BEGIN SELECT D1.DatabaseName as 'Database Name', T1.SchemaName as 'Schema name', T1.TableName as 'Table Name', R.Count as 'Number of times table was referenced in workload' , CAST(ROUND(R.Usage,2) as decimal(10,2)) as 'Percentage usage' FROM [msdb].[dbo].[DTA_reports_database] as D1 , [msdb].[dbo].[DTA_reports_table] as T1, ( SELECT D.DatabaseID,T.TableID ,SUM(Q.Weight) as Count, 100.0 * SUM(Q.Weight) / ( 1.0 * ( SELECT CASE WHEN SUM(Q.Weight) > 0 THEN SUM(Q.Weight) ELSE 1 END FROM [msdb].[dbo].[DTA_reports_query] AS Q, [msdb].[dbo].[DTA_reports_querytable] AS QT WHERE QT.QueryID = Q.QueryID AND Q.SessionID = QT.SessionID and Q.SessionID = @SessionID )) AS Usage FROM [msdb].[dbo].[DTA_reports_table] AS T LEFT OUTER JOIN DTA_reports_querytable AS QT ON QT.TableID = T.TableID LEFT OUTER JOIN DTA_reports_query AS Q ON QT.QueryID = Q.QueryID JOIN DTA_reports_database as D ON T.DatabaseID = D.DatabaseID AND Q.SessionID = QT.SessionID and Q.SessionID = @SessionID GROUP BY T.TableID,D.DatabaseID) as R WHERE R.DatabaseID = D1.DatabaseID and R.TableID = T1.TableID and D1.SessionID = @SessionID and R.Count > 0 ORDER BY R.Count DESC FOR XML RAW END END go GRANT EXEC ON sp_DTA_tableaccesshelper TO PUBLIC go IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_columnaccesshelper' AND type = 'P') DROP PROCEDURE sp_DTA_columnaccesshelper go CREATE PROCEDURE sp_DTA_columnaccesshelper @SessionID int, @XMLType int AS BEGIN IF @XMLType = 0 BEGIN SELECT D1.DatabaseName as 'Database Name', T1.SchemaName as 'Schema name', T1.TableName as 'Table Name', C1.ColumnName as 'Column Name', R.Count as 'Number of times column was referenced in workload' , CAST(ROUND(R.Usage,2) as decimal(10,2)) as 'Percentage usage' FROM [msdb].[dbo].[DTA_reports_database] as D1 , [msdb].[dbo].[DTA_reports_table] as T1, [msdb].[dbo].[DTA_reports_column] as C1, ( SELECT D.DatabaseID,T.TableID,C.ColumnID, SUM(Q.Weight) as Count, 100.0 * SUM(Q.Weight) / ( 1.0 * ( SELECT CASE WHEN SUM(Q.Weight) > 0 THEN SUM(Q.Weight) ELSE 1 END FROM [msdb].[dbo].[DTA_reports_query] AS Q, [msdb].[dbo].[DTA_reports_querycolumn] AS QC WHERE QC.QueryID = Q.QueryID AND Q.SessionID = QC.SessionID and Q.SessionID = @SessionID )) AS Usage FROM [msdb].[dbo].[DTA_reports_column] AS C LEFT OUTER JOIN DTA_reports_querycolumn AS QC ON QC.ColumnID = C.ColumnID LEFT OUTER JOIN DTA_reports_query AS Q ON QC.QueryID = Q.QueryID JOIN DTA_reports_table as T ON C.TableID = T.TableID JOIN DTA_reports_database as D ON T.DatabaseID = D.DatabaseID AND Q.SessionID = QC.SessionID and Q.SessionID = @SessionID GROUP BY C.ColumnID,T.TableID,D.DatabaseID) as R WHERE R.DatabaseID = D1.DatabaseID and R.TableID = T1.TableID and R.ColumnID = C1.ColumnID and D1.SessionID = @SessionID and R.Count > 0 ORDER BY R.Count DESC END ELSE BEGIN SELECT D1.DatabaseName as 'Database Name', T1.SchemaName as 'Schema name', T1.TableName as 'Table Name', C1.ColumnName as 'Column Name', R.Count as 'Number of times column was referenced in workload' , CAST(ROUND(R.Usage,2) as decimal(10,2)) as 'Percentage usage' FROM [msdb].[dbo].[DTA_reports_database] as D1 , [msdb].[dbo].[DTA_reports_table] as T1, [msdb].[dbo].[DTA_reports_column] as C1, ( SELECT D.DatabaseID,T.TableID,C.ColumnID, SUM(Q.Weight) as Count, 100.0 * SUM(Q.Weight) / ( 1.0 * ( SELECT CASE WHEN SUM(Q.Weight) > 0 THEN SUM(Q.Weight) ELSE 1 END FROM [msdb].[dbo].[DTA_reports_query] AS Q, [msdb].[dbo].[DTA_reports_querycolumn] AS QC WHERE QC.QueryID = Q.QueryID AND Q.SessionID = QC.SessionID and Q.SessionID = @SessionID )) AS Usage FROM [msdb].[dbo].[DTA_reports_column] AS C LEFT OUTER JOIN [msdb].[dbo].[DTA_reports_querycolumn] AS QC ON QC.ColumnID = C.ColumnID LEFT OUTER JOIN [msdb].[dbo].[DTA_reports_query] AS Q ON QC.QueryID = Q.QueryID JOIN [msdb].[dbo].[DTA_reports_table] as T ON C.TableID = T.TableID JOIN [msdb].[dbo].[DTA_reports_database] as D ON T.DatabaseID = D.DatabaseID AND Q.SessionID = QC.SessionID and Q.SessionID = @SessionID GROUP BY C.ColumnID,T.TableID,D.DatabaseID) as R WHERE R.DatabaseID = D1.DatabaseID and R.TableID = T1.TableID and R.ColumnID = C1.ColumnID and D1.SessionID = @SessionID and R.Count > 0 ORDER BY R.Count DESC FOR XML RAW END END go GRANT EXEC ON sp_DTA_columnaccesshelper TO PUBLIC go IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_queryCRhelper' AND type = 'P') DROP PROCEDURE sp_DTA_queryCRhelper go CREATE PROCEDURE sp_DTA_queryCRhelper @SessionID int, @Current int, @XMLType int AS BEGIN DECLARE @maxCost float DECLARE @minCost float SET NOCOUNT ON SELECT @minCost = min(CurrentCost),@maxCost = max(CurrentCost) FROM [msdb].[dbo].[DTA_reports_query] where SessionID = @SessionID IF @maxCost = @minCost RETURN CREATE TABLE #tempTable(OutputString nvarchar(30),Value int) INSERT INTO #tempTable VALUES(N'0% - 10%',0) INSERT INTO #tempTable VALUES(N'11% - 20%',1) INSERT INTO #tempTable VALUES(N'21% - 30%',2) INSERT INTO #tempTable VALUES(N'31% - 40%',3) INSERT INTO #tempTable VALUES(N'41% - 50%',4) INSERT INTO #tempTable VALUES(N'51% - 60%',5) INSERT INTO #tempTable VALUES(N'61% - 70%',6) INSERT INTO #tempTable VALUES(N'71% - 80%',7) INSERT INTO #tempTable VALUES(N'81% - 90%',8) INSERT INTO #tempTable VALUES(N'91% - 100%',9) IF @Current = 0 BEGIN IF @XMLType = 0 BEGIN SELECT 'Cost range (with respect to overall workload cost)'=OutputString, 'Number of queries in this range ' = count(NumStmts) FROM #tempTable T1 LEFT OUTER JOIN ( SELECT CASE WHEN NumStmts = 10 THEN 9 ELSE NumStmts END AS NumStmts FROM ( SELECT CONVERT(int,floor(10*(RecommendedCost-@minCost)/(@maxCost-@minCost))) as NumStmts FROM [msdb].[dbo].[DTA_reports_query] where RecommendedCost between @minCost and @maxCost and SessionID = @SessionID ) T2 )T3 ON T1.Value = T3.NumStmts GROUP BY T1.Value,T1.OutputString END ELSE BEGIN SELECT 'Cost range (with respect to overall workload cost)'=OutputString, 'Number of queries in this range ' = count(NumStmts) FROM #tempTable T1 LEFT OUTER JOIN ( SELECT CASE WHEN NumStmts = 10 THEN 9 ELSE NumStmts END AS NumStmts FROM ( SELECT CONVERT(int,floor(10*(RecommendedCost-@minCost)/(@maxCost-@minCost))) as NumStmts FROM [msdb].[dbo].[DTA_reports_query] where RecommendedCost between @minCost and @maxCost and SessionID = @SessionID ) T2 )T3 ON T1.Value = T3.NumStmts GROUP BY T1.Value,T1.OutputString FOR XML RAW END END ELSE BEGIN IF @XMLType = 0 BEGIN SELECT 'Cost range (with respect to overall workload cost)'=OutputString, 'Number of queries in this range ' = count(NumStmts) FROM #tempTable T1 LEFT OUTER JOIN ( SELECT CASE WHEN NumStmts = 10 THEN 9 ELSE NumStmts END AS NumStmts FROM ( SELECT CONVERT(int,floor(10*(CurrentCost-@minCost)/(@maxCost-@minCost))) as NumStmts FROM [msdb].[dbo].[DTA_reports_query] where CurrentCost between @minCost and @maxCost and SessionID = @SessionID ) T2 )T3 ON T1.Value = T3.NumStmts GROUP BY T1.Value,T1.OutputString END ELSE BEGIN SELECT 'Cost range (with respect to overall workload cost)'=OutputString, 'Number of queries in this range ' = count(NumStmts) FROM #tempTable T1 LEFT OUTER JOIN ( SELECT CASE WHEN NumStmts = 10 THEN 9 ELSE NumStmts END AS NumStmts FROM ( SELECT CONVERT(int,floor(10*(CurrentCost-@minCost)/(@maxCost-@minCost))) as NumStmts FROM [msdb].[dbo].[DTA_reports_query] where CurrentCost between @minCost and @maxCost and SessionID = @SessionID ) T2 )T3 ON T1.Value = T3.NumStmts GROUP BY T1.Value,T1.OutputString FOR XML RAW END END DROP TABLE #tempTable END go GRANT EXEC ON sp_DTA_queryCRhelper TO PUBLIC go /* sp_dta_get_session_report @SessionID, - ID of a session requested @ReportID, - ID of a report requested @ReportType - report format: 0 rowset 1 - XML - This argument is ignored for now*/ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_get_session_report' AND type = 'P') DROP PROCEDURE sp_DTA_get_session_report go CREATE PROCEDURE sp_DTA_get_session_report @SessionID int, @ReportID int, @ReportType int AS BEGIN SET NOCOUNT ON IF @ReportType = 0 BEGIN /**************************************************************/ /* Query Cost Report */ /**************************************************************/ IF @ReportID = 2 BEGIN SELECT 'Statement String'=StatementString, 'Percent Improvement'= CASE WHEN CurrentCost = 0 THEN 0.00 WHEN CurrentCost <> 0 THEN CAST(ROUND(100.0*(CurrentCost - RecommendedCost)/CurrentCost,2) as decimal (10,2)) END , 'Weight' = Weight FROM [msdb].[dbo].[DTA_reports_query] WHERE SessionID=@SessionID ORDER BY 'Percent Improvement' DESC END /**************************************************************/ /* Event Frequency Report */ /**************************************************************/ ELSE IF @ReportID = 3 BEGIN SELECT 'Event String'= EventString, 'Weight'= EventWeight FROM [msdb].[dbo].[DTA_reports_query] WHERE SessionID=@SessionID and EventWeight>0 ORDER BY EventWeight DESC END /**************************************************************/ /* Query Detail Report */ /**************************************************************/ ELSE IF @ReportID = 4 BEGIN SELECT 'Statement String'=StatementString, Type = CASE WHEN StatementType = 0 THEN 'Select' WHEN StatementType = 1 THEN 'Insert' WHEN StatementType = 2 THEN 'Update' WHEN StatementType = 3 THEN 'Delete' END, 'Cost of the statement'=CAST(ROUND(CurrentCost,2) as decimal(10,2)), 'Cost of the statement with recommended configuration'=CAST(ROUND(RecommendedCost,2) as decimal(10,2)), Weight FROM [msdb].[dbo].[DTA_reports_query] WHERE SessionID=@SessionID END /**************************************************************/ /* Current Query Index Relations Report */ /**************************************************************/ ELSE IF @ReportID = 5 BEGIN SELECT 'Statement String'=Q.StatementString, 'Database Name'=D.DatabaseName, 'Schema Name'=T.SchemaName, 'Table Name'=T.TableName, 'Index Name'=I.IndexName, 'Type description'= CASE WHEN I.IsClustered = 1 THEN 'Clustered' WHEN I.IsClustered = 0 THEN 'Non Clustered' END, 'Unique'= I.IsUnique FROM [msdb].[dbo].[DTA_reports_query] Q, [msdb].[dbo].[DTA_reports_queryindex] QI, [msdb].[dbo].[DTA_reports_index] I, [msdb].[dbo].[DTA_reports_table] T, [msdb].[dbo].[DTA_reports_database] D WHERE Q.SessionID=QI.SessionID and Q.QueryID=QI.QueryID and QI.IndexID=I.IndexID and I.TableID=T.TableID and T.DatabaseID = D.DatabaseID and QI.IsRecommendedConfiguration = 0 and Q.SessionID=@SessionID END /**************************************************************/ /* Recommended Query Index Relations Report */ /**************************************************************/ ELSE IF @ReportID = 6 BEGIN SELECT 'Statement String'=Q.StatementString, 'Database Name'=D.DatabaseName, 'Schema Name'=T.SchemaName, 'Table Name'=T.TableName, 'Index Name'=I.IndexName, 'Type description'= CASE WHEN I.IsClustered = 1 THEN 'Clustered' WHEN I.IsClustered = 0 THEN 'Non Clustered' END, 'Unique'= I.IsUnique FROM [msdb].[dbo].[DTA_reports_query] Q, [msdb].[dbo].[DTA_reports_queryindex] QI, [msdb].[dbo].[DTA_reports_index] I, [msdb].[dbo].[DTA_reports_table] T, [msdb].[dbo].[DTA_reports_database] D WHERE Q.SessionID=QI.SessionID and Q.QueryID=QI.QueryID and QI.IndexID=I.IndexID and I.TableID=T.TableID and T.DatabaseID = D.DatabaseID and QI.IsRecommendedConfiguration = 1 and Q.SessionID=@SessionID END /**************************************************************/ /* Current Query Cost Range */ /**************************************************************/ ELSE IF @ReportID = 7 BEGIN EXEC sp_DTA_queryCRhelper @SessionID,1,0 END /**************************************************************/ /* Recommended Query Cost Range */ /**************************************************************/ ELSE IF @ReportID = 8 BEGIN EXEC sp_DTA_queryCRhelper @SessionID,0,0 END /**************************************************************/ /* Current Query Index Usage Report */ /**************************************************************/ ELSE IF @ReportID = 9 BEGIN EXEC sp_DTA_indexusagehelper @SessionID,0,0 END /**************************************************************/ /* Recommended Query Index Usage Report */ /**************************************************************/ ELSE IF @ReportID = 10 BEGIN EXEC sp_DTA_indexusagehelper @SessionID,1,0 END /**************************************************************/ /* Current Index Detail Report */ /**************************************************************/ ELSE IF @ReportID = 11 BEGIN select 'Database Name'=D.DatabaseName,'Schema Name'=T.SchemaName, 'Table Name' = T.TableName,'Index Name'= I.IndexName, 'Type Description'= CASE WHEN I.IsClustered = 1 THEN 'Clustered' WHEN I.IsClustered = 0 THEN 'Non Clustered' END, 'Unique'= I.IsUnique, 'Storage' = I.Storage, 'Number of Rows' = NumRows from DTA_reports_database D, DTA_reports_table T, DTA_reports_index as I where D.SessionID = @SessionID and D.DatabaseID = T.DatabaseID and T.TableID = I.TableID and I.IsExisting = 1 END /**************************************************************/ /* Recommended Index Detail Report */ /**************************************************************/ ELSE IF @ReportID = 12 BEGIN select 'Database Name'=D.DatabaseName,'Schema Name'=T.SchemaName, 'Table Name' = T.TableName,'Index Name'= I.IndexName, 'Type Description'= CASE WHEN I.IsClustered = 1 THEN 'Clustered' WHEN I.IsClustered = 0 THEN 'Non Clustered' END, 'Unique'= I.IsUnique, 'Storage' = I.Storage, 'Number of Rows' = NumRows from DTA_reports_database D, DTA_reports_table T, DTA_reports_index as I where D.SessionID = @SessionID and D.DatabaseID = T.DatabaseID and T.TableID = I.TableID and I.IsExisting = 0 END /**************************************************************/ /* View Table Relations Report */ /**************************************************************/ ELSE IF @ReportID = 13 BEGIN SELECT 'Table Schema Name'=T1.SchemaName, 'Table Name'=T1.TableName, 'View Schema'=T2.SchemaName, 'View Name'=T2.TableName FROM [msdb].[dbo].[DTA_reports_database] D, [msdb].[dbo].[DTA_reports_tableview] TV, [msdb].[dbo].[DTA_reports_table] T1, [msdb].[dbo].[DTA_reports_table] T2 WHERE D.DatabaseID=T1.DatabaseID and D.DatabaseID=T2.DatabaseID and T1.TableID=TV.TableID and T2.TableID=TV.ViewID and D.SessionID=@SessionID END /**************************************************************/ /* Workload Analysis Report */ /**************************************************************/ ELSE IF @ReportID = 14 BEGIN SELECT 'StatementType' = CASE WHEN StatementType = 0 THEN 'Select' WHEN StatementType = 1 THEN 'Insert' WHEN StatementType = 2 THEN 'Update' WHEN StatementType = 3 THEN 'Delete' END, 'NumberOfQueries'=COUNT(QueryID), 'NumberOfQueriesCostDecreased'=SUM(CASE WHEN RecommendedCostCurrentCost THEN 1 ELSE 0 END), 'NumberOfQueriesWithNoCostChange'=SUM(CASE WHEN RecommendedCost=CurrentCost THEN 1 ELSE 0 END) FROM [msdb].[dbo].[DTA_reports_query] WHERE SessionID=@SessionID group by StatementType END ELSE IF @ReportID = 15 BEGIN EXEC sp_DTA_databaseaccesshelper @SessionID,0 END ELSE IF @ReportID = 16 BEGIN EXEC sp_DTA_tableaccesshelper @SessionID,0 END ELSE IF @ReportID = 17 BEGIN EXEC sp_DTA_columnaccesshelper @SessionID,0 END END ELSE IF @ReportType = 1 BEGIN /**************************************************************/ /* Query Cost Report */ /**************************************************************/ IF @ReportID = 2 BEGIN SELECT 'Statement String'=StatementString, 'Percent Improvement'= CASE WHEN CurrentCost = 0 THEN 0.00 WHEN CurrentCost <> 0 THEN CAST(ROUND(100.0*(CurrentCost - RecommendedCost)/CurrentCost,2) as decimal (10,2)) END, 'Weight' = Weight FROM [msdb].[dbo].[DTA_reports_query] WHERE SessionID=@SessionID FOR XML RAW END /**************************************************************/ /* Event Weight Report */ /**************************************************************/ ELSE IF @ReportID = 3 BEGIN SELECT 'Event String'= EventString, 'Weight'= EventWeight FROM [msdb].[dbo].[DTA_reports_query] FOR XML RAW END /**************************************************************/ /* Query Detail Report */ /**************************************************************/ ELSE IF @ReportID = 4 BEGIN SELECT Type = CASE WHEN StatementType = 0 THEN 'Select' WHEN StatementType = 1 THEN 'Insert' WHEN StatementType = 2 THEN 'Update' WHEN StatementType = 3 THEN 'Delete' END, 'Cost of the statement'=CAST(ROUND(CurrentCost,2) as decimal(10,2)), 'Cost of the statement with recommended configuration'=CAST(ROUND(RecommendedCost,2) as decimal(10,2)), Weight, 'Statement String'=StatementString FROM [msdb].[dbo].[DTA_reports_query] WHERE SessionID=@SessionID FOR XML RAW END /**************************************************************/ /* Current Query Index Relations Report */ /**************************************************************/ ELSE IF @ReportID = 5 BEGIN SELECT 'Statement String'=Q.StatementString, 'Database Name'=D.DatabaseName, 'Schema Name'=T.SchemaName, 'Table Name'=T.TableName, 'Index Name'=I.IndexName, 'Type description'= CASE WHEN I.IsClustered = 1 THEN 'Clustered' WHEN I.IsClustered = 0 THEN 'Non Clustered' END, 'Unique'= I.IsUnique FROM [msdb].[dbo].[DTA_reports_query] Q, [msdb].[dbo].[DTA_reports_queryindex] QI, [msdb].[dbo].[DTA_reports_index] I, [msdb].[dbo].[DTA_reports_table] T, [msdb].[dbo].[DTA_reports_database] D WHERE Q.SessionID=QI.SessionID and Q.QueryID=QI.QueryID and QI.IndexID=I.IndexID and I.TableID=T.TableID and T.DatabaseID = D.DatabaseID and QI.IsRecommendedConfiguration = 0 and Q.SessionID=@SessionID FOR XML RAW END /**************************************************************/ /* Current Query Index Relations Report */ /**************************************************************/ ELSE IF @ReportID = 6 BEGIN SELECT 'Statement String'=Q.StatementString, 'Database Name'=D.DatabaseName, 'Schema Name'=T.SchemaName, 'Table Name'=T.TableName, 'Index Name'=I.IndexName, 'Type description'= CASE WHEN I.IsClustered = 1 THEN 'Clustered' WHEN I.IsClustered = 0 THEN 'Non Clustered' END, 'Unique'= I.IsUnique FROM [msdb].[dbo].[DTA_reports_query] Q, [msdb].[dbo].[DTA_reports_queryindex] QI, [msdb].[dbo].[DTA_reports_index] I, [msdb].[dbo].[DTA_reports_table] T, [msdb].[dbo].[DTA_reports_database] D WHERE Q.SessionID=QI.SessionID and Q.QueryID=QI.QueryID and QI.IndexID=I.IndexID and I.TableID=T.TableID and T.DatabaseID = D.DatabaseID and QI.IsRecommendedConfiguration = 1 and Q.SessionID=@SessionID FOR XML RAW END /**************************************************************/ /* Current Query Cost Range */ /**************************************************************/ ELSE IF @ReportID = 7 BEGIN EXEC sp_DTA_queryCRhelper @SessionID,1,1 END /**************************************************************/ /* Recommended Query Cost Range */ /**************************************************************/ ELSE IF @ReportID = 8 BEGIN EXEC sp_DTA_queryCRhelper @SessionID,0,1 END /**************************************************************/ /* Current Query Index Usage Report */ /**************************************************************/ ELSE IF @ReportID = 9 BEGIN EXEC sp_DTA_indexusagehelper @SessionID,0,1 END /**************************************************************/ /* Recommended Query Index Usage Report */ /**************************************************************/ ELSE IF @ReportID = 10 BEGIN EXEC sp_DTA_indexusagehelper @SessionID,1,1 END /**************************************************************/ /* Current Index Detail Report */ /**************************************************************/ ELSE IF @ReportID = 11 BEGIN select 'Database Name'=D.DatabaseName,'Schema Name'=T.SchemaName, 'Table Name' = T.TableName,'Index Name'= I.IndexName, 'Type Description'= CASE WHEN I.IsClustered = 1 THEN 'Clustered' WHEN I.IsClustered = 0 THEN 'Non Clustered' END, 'Unique'= I.IsUnique, 'Storage' = I.Storage, 'Number of Rows' = NumRows from DTA_reports_database D, DTA_reports_table T, DTA_reports_index as I where D.SessionID = @SessionID and D.DatabaseID = T.DatabaseID and T.TableID = I.TableID and I.IsExisting = 1 FOR XML RAW END /**************************************************************/ /* Recommended Index Detail Report */ /**************************************************************/ ELSE IF @ReportID = 12 BEGIN select 'Database Name'=D.DatabaseName,'Schema Name'=T.SchemaName, 'Table Name' = T.TableName,'Index Name'= I.IndexName, 'Type Description'= CASE WHEN I.IsClustered = 1 THEN 'Clustered' WHEN I.IsClustered = 0 THEN 'Non Clustered' END, 'Unique'= I.IsUnique, 'Storage' = I.Storage, 'Number of Rows' = NumRows from DTA_reports_database D, DTA_reports_table T, DTA_reports_index as I where D.SessionID = @SessionID and D.DatabaseID = T.DatabaseID and T.TableID = I.TableID and I.IsExisting = 0 FOR XML RAW END /**************************************************************/ /* View Table Relations Report */ /**************************************************************/ ELSE IF @ReportID = 13 BEGIN SELECT 'TableSchema'=T1.SchemaName, 'TableName'=T1.TableName, 'ViewSchema'=T2.SchemaName, 'ViewName'=T2.TableName FROM [msdb].[dbo].[DTA_reports_database] D, [msdb].[dbo].[DTA_reports_tableview] TV, [msdb].[dbo].[DTA_reports_table] T1, [msdb].[dbo].[DTA_reports_table] T2 WHERE D.DatabaseID=T1.DatabaseID and D.DatabaseID=T2.DatabaseID and T1.TableID=TV.TableID and T2.TableID=TV.ViewID and D.SessionID=@SessionID FOR XML RAW END /**************************************************************/ /* Workload Analysis Report */ /**************************************************************/ ELSE IF @ReportID = 14 BEGIN SELECT 'StatementType' = CASE WHEN StatementType = 0 THEN 'Select' WHEN StatementType = 1 THEN 'Insert' WHEN StatementType = 2 THEN 'Update' WHEN StatementType = 3 THEN 'Delete' END, 'NumberOfQueries'=COUNT(QueryID), 'NumberOfQueriesCostDecreased'=SUM(CASE WHEN RecommendedCostCurrentCost THEN 1 ELSE 0 END), 'NumberOfQueriesWithNoCostChange'=SUM(CASE WHEN RecommendedCost=CurrentCost THEN 1 ELSE 0 END) FROM [msdb].[dbo].[DTA_reports_query] WHERE SessionID=@SessionID group by StatementType FOR XML RAW END ELSE IF @ReportID = 15 BEGIN EXEC sp_DTA_databaseaccesshelper @SessionID,1 END ELSE IF @ReportID = 16 BEGIN EXEC sp_DTA_tableaccesshelper @SessionID,1 END ELSE IF @ReportID = 17 BEGIN EXEC sp_DTA_columnaccesshelper @SessionID,1 END END END go GRANT EXEC ON sp_DTA_get_session_report TO PUBLIC /* Stored procs used by DTAEngine */ /* sp_DTA_set_tuninglogtablename @LogTableName - Tuning Log table name @SessionID, - ID of a session requested */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_set_tuninglogtablename' AND type = 'P') DROP PROCEDURE sp_DTA_set_tuninglogtablename go CREATE PROCEDURE sp_DTA_set_tuninglogtablename @LogTableName nvarchar(128), @SessionID int AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END update [msdb].[dbo].[DTA_input] set LogTableName = @LogTableName WHERE SessionID = @SessionID END go GRANT EXEC ON sp_DTA_set_tuninglogtablename TO PUBLIC go /* sp_DTA_get_tuningoptions @SessionID - ID of a session requested Gets the tuning options FROM [msdb].[dbo].[DTA_input] for this session */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_get_tuningoptions' AND type = 'P') DROP PROCEDURE sp_DTA_get_tuningoptions go CREATE PROCEDURE sp_DTA_get_tuningoptions @SessionID int AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END SELECT TuningOptions FROM [msdb].[dbo].[DTA_input] WHERE SessionID = @SessionID END go GRANT EXEC ON sp_DTA_get_tuningoptions TO PUBLIC go /* sp_DTA_get_interactivestatus @SessionID - ID of a session requested Gets the interactivestatus bit FROM DTA_input */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_get_interactivestatus' AND type = 'P') DROP PROCEDURE sp_DTA_get_interactivestatus go CREATE PROCEDURE sp_DTA_get_interactivestatus @SessionID int AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END SELECT InteractiveStatus FROM [msdb].[dbo].[DTA_input] WHERE SessionID = @SessionID END go GRANT EXEC ON sp_DTA_get_interactivestatus TO PUBLIC go /* sp_DTA_insert_progressinformation @SessionID - ID of a session requested Inserts the progress information in DTA_Progress table */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_insert_progressinformation' AND type = 'P') DROP PROCEDURE sp_DTA_insert_progressinformation go CREATE PROCEDURE sp_DTA_insert_progressinformation @SessionID int, @TuningStage int AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END INSERT into [msdb].[dbo].[DTA_progress] (SessionID,WorkloadConsumption,EstImprovement,TuningStage) VALUES(@SessionID,0,0,@TuningStage) END go GRANT EXEC ON sp_DTA_insert_progressinformation TO PUBLIC go /* sp_DTA_set_progressinformation @SessionID - ID of a session requested Sets the progress information in DTA_Progress table */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_set_progressinformation' AND type = 'P') DROP PROCEDURE sp_DTA_set_progressinformation go CREATE PROCEDURE sp_DTA_set_progressinformation @SessionID int, @WorkloadConsumption int, @TuningStage int, @EstImprovement int AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END UPDATE [msdb].[dbo].[DTA_progress] SET WorkloadConsumption = @WorkloadConsumption, EstImprovement = @EstImprovement, ProgressEventTime = GetDate() WHERE SessionID=@SessionID AND TuningStage = @TuningStage END go GRANT EXEC ON sp_DTA_set_progressinformation TO PUBLIC go /* sp_DTA_set_outputinformation @SessionID - ID of a session requested @TuningResults - Tuning results @FinishStatus - Finish status Sets the output information */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_set_outputinformation' AND type = 'P') DROP PROCEDURE sp_DTA_set_outputinformation go CREATE PROCEDURE sp_DTA_set_outputinformation @SessionID int, @TuningResults ntext, @FinishStatus tinyint AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END Insert into [msdb].[dbo].[DTA_output]([SessionID], [TuningResults],[FinishStatus]) VALUES(@SessionID,@TuningResults,@FinishStatus) END go GRANT EXEC ON sp_DTA_set_outputinformation TO PUBLIC go /* sp_DTA_insert_reports_database @SessionID int @DatabaseName sysname */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_insert_reports_database' AND type = 'P') DROP PROCEDURE sp_DTA_insert_reports_database go CREATE PROCEDURE sp_DTA_insert_reports_database @SessionID int, @DatabaseName sysname AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END Insert into [msdb].[dbo].[DTA_reports_database]([SessionID],[DatabaseName]) VALUES(@SessionID,@DatabaseName) END go GRANT EXEC ON sp_DTA_insert_reports_database TO PUBLIC go /* sp_DTA_insert_reports_partitionscheme @SessionID int @PartitionFunctionID int @PartitionSchemeName sysname @PartitionSchemeDefinition ntext */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_insert_reports_partitionscheme' AND type = 'P') DROP PROCEDURE sp_DTA_insert_reports_partitionscheme go CREATE PROCEDURE sp_DTA_insert_reports_partitionscheme @SessionID int, @PartitionFunctionID int, @PartitionSchemeName sysname, @PartitionSchemeDefinition ntext AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END Insert into [msdb].[dbo].[DTA_reports_partitionscheme]( [PartitionFunctionID],[PartitionSchemeName],[PartitionSchemeDefinition]) VALUES(@PartitionFunctionID,@PartitionSchemeName,@PartitionSchemeDefinition) END go GRANT EXEC ON sp_DTA_insert_reports_partitionscheme TO PUBLIC go /* sp_DTA_insert_reports_partitionfunction SessionID int DatabaseID int PartitionFunctionName sysname PartitionFunctionDefinition ntext */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_insert_reports_partitionfunction' AND type = 'P') DROP PROCEDURE sp_DTA_insert_reports_partitionfunction go CREATE PROCEDURE sp_DTA_insert_reports_partitionfunction @SessionID int, @DatabaseID int, @PartitionFunctionName sysname, @PartitionFunctionDefinition ntext AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END Insert into [msdb].[dbo].[DTA_reports_partitionfunction]([DatabaseID],[PartitionFunctionName],[PartitionFunctionDefinition]) VALUES(@DatabaseID,@PartitionFunctionName,@PartitionFunctionDefinition) END go GRANT EXEC ON sp_DTA_insert_reports_partitionfunction TO PUBLIC go /* sp_DTA_insert_reports_column @SessionID int, @TableID int @ColumnName sysname */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_insert_reports_column' AND type = 'P') DROP PROCEDURE sp_DTA_insert_reports_column go CREATE PROCEDURE sp_DTA_insert_reports_column @SessionID int, @TableID int, @ColumnName sysname AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END INSERT INTO [msdb].[dbo].[DTA_reports_column]([TableID], [ColumnName]) VALUES( @TableID ,@ColumnName) END go GRANT EXEC ON sp_DTA_insert_reports_column TO PUBLIC go /* sp_DTA_insert_reports_tableview @SessionID int, @TableID int, @ViewID int */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_insert_reports_tableview' AND type = 'P') DROP PROCEDURE sp_DTA_insert_reports_tableview go CREATE PROCEDURE sp_DTA_insert_reports_tableview @SessionID int, @TableID int, @ViewID int AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END INSERT INTO [msdb].[dbo].[DTA_reports_tableview]([TableID], [ViewID]) VALUES(@TableID,@ViewID) END go GRANT EXEC ON sp_DTA_insert_reports_tableview TO PUBLIC go /* sp_DTA_insert_reports_query @SessionID int @QueryID int @StatementType smallint @StatementString ntext @CurrentCost float @RecommendedCost float @Weight float @EventString ntext @EventWeight float */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_insert_reports_query' AND type = 'P') DROP PROCEDURE sp_DTA_insert_reports_query go CREATE PROCEDURE sp_DTA_insert_reports_query @SessionID int, @QueryID int, @StatementType smallint, @StatementString ntext, @CurrentCost float, @RecommendedCost float, @Weight float, @EventString ntext, @EventWeight float AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END INSERT INTO [msdb].[dbo].[DTA_reports_query]([SessionID],[QueryID], [StatementType], [StatementString], [CurrentCost], [RecommendedCost], [Weight], [EventString], [EventWeight]) VALUES(@SessionID,@QueryID,@StatementType,@StatementString,@CurrentCost,@RecommendedCost,@Weight,@EventString,@EventWeight) END go GRANT EXEC ON sp_DTA_insert_reports_query TO PUBLIC go /* sp_DTA_insert_reports_index @SessionID int @TableID int @IndexName sysname @IsClustered bit @IsUnique bit @IsMerged bit @IsHeap bit @IsExisting bit @Storage int @NumRows int @PartitionSchemeID int */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_insert_reports_index' AND type = 'P') DROP PROCEDURE sp_DTA_insert_reports_index go CREATE PROCEDURE sp_DTA_insert_reports_index @SessionID int, @TableID int, @IndexName sysname, @IsClustered bit, @IsUnique bit, @IsMerged bit, @IsHeap bit, @IsExisting bit, @Storage int, @NumRows int, @PartitionSchemeID int AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END INSERT INTO [msdb].[dbo].[DTA_reports_index]([TableID], [IndexName], [IsClustered], [IsUnique], [IsMerged], [IsHeap], [IsExisting], [Storage], [NumRows], [PartitionSchemeID]) VALUES(@TableID,@IndexName,@IsClustered,@IsUnique,@IsMerged,@IsHeap,@IsExisting,@Storage,@NumRows,@PartitionSchemeID) END go GRANT EXEC ON sp_DTA_insert_reports_index TO PUBLIC go /* sp_DTA_insert_reports_table @SessionID int @DatabaseID int @SchemaName sysname @TableName sysname @IsView bit @ViewDefinition ntext */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_insert_reports_table' AND type = 'P') DROP PROCEDURE sp_DTA_insert_reports_table GO CREATE PROCEDURE sp_DTA_insert_reports_table @SessionID int, @DatabaseID int, @SchemaName sysname, @TableName sysname, @IsView bit, @ViewDefinition ntext AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END INSERT INTO [msdb].[dbo].[DTA_reports_table]([DatabaseID], [SchemaName], [TableName], [IsView], [ViewDefinition]) VALUES(@DatabaseID,@SchemaName,@TableName,@IsView,@ViewDefinition) END GO GRANT EXEC ON sp_DTA_insert_reports_table TO PUBLIC GO /* sp_DTA_insert_reports_queryindex @SessionID int @QueryID int @IndexID int @IsRecommendedConfiguration bit @Cost float */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_insert_reports_queryindex' AND type = 'P') DROP PROCEDURE sp_DTA_insert_reports_queryindex go CREATE PROCEDURE sp_DTA_insert_reports_queryindex @SessionID int, @QueryID int, @IndexID int, @IsRecommendedConfiguration bit AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END INSERT INTO [msdb].[dbo].[DTA_reports_queryindex]([SessionID],[QueryID],[IndexID], [IsRecommendedConfiguration]) VALUES(@SessionID,@QueryID,@IndexID,@IsRecommendedConfiguration) END go GRANT EXEC ON sp_DTA_insert_reports_queryindex TO PUBLIC go /* sp_DTA_insert_reports_indexcolumn @SessionID int @IndexID int @ColumnID int @ColumnOrder int @PartitionColumnOrder int @IsKeyColumn bit @IsDescendingColumn bit */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_insert_reports_indexcolumn' AND type = 'P') DROP PROCEDURE sp_DTA_insert_reports_indexcolumn go CREATE PROCEDURE sp_DTA_insert_reports_indexcolumn @SessionID int, @IndexID int, @ColumnID int, @ColumnOrder int, @PartitionColumnOrder int, @IsKeyColumn bit, @IsDescendingColumn bit AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END INSERT INTO [msdb].[dbo].[DTA_reports_indexcolumn]([IndexID], [ColumnID], [ColumnOrder], [PartitionColumnOrder], [IsKeyColumn], [IsDescendingColumn]) VALUES(@IndexID,@ColumnID,@ColumnOrder,@PartitionColumnOrder,@IsKeyColumn,@IsDescendingColumn) END go GRANT EXEC ON sp_DTA_insert_reports_indexcolumn TO PUBLIC go /* sp_DTA_insert_reports_querytable @SessionID int @QueryID int @TableID int */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_insert_reports_querytable' AND type = 'P') DROP PROCEDURE sp_DTA_insert_reports_querytable go CREATE PROCEDURE sp_DTA_insert_reports_querytable @SessionID int, @QueryID int, @TableID int AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END INSERT INTO [msdb].[dbo].[DTA_reports_querytable]([SessionID], [QueryID],[TableID]) VALUES(@SessionID,@QueryID,@TableID) END go GRANT EXEC ON sp_DTA_insert_reports_querytable TO PUBLIC go /* sp_DTA_insert_reports_querydatabase @SessionID int @QueryID int @DatabaseID int */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_insert_reports_querydatabase' AND type = 'P') DROP PROCEDURE sp_DTA_insert_reports_querydatabase go CREATE PROCEDURE sp_DTA_insert_reports_querydatabase @SessionID int, @QueryID int, @DatabaseID int AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END INSERT INTO [msdb].[dbo].[DTA_reports_querydatabase]([SessionID], [QueryID],[DatabaseID]) VALUES(@SessionID,@QueryID,@DatabaseID) END go GRANT EXEC ON sp_DTA_insert_reports_querydatabase TO PUBLIC go /* sp_DTA_insert_reports_querycolumn @SessionID int @QueryID int @ColumnID int */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_insert_reports_querycolumn' AND type = 'P') DROP PROCEDURE sp_DTA_insert_reports_querycolumn go CREATE PROCEDURE sp_DTA_insert_reports_querycolumn @SessionID int, @QueryID int, @ColumnID int AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END INSERT INTO [msdb].[dbo].[DTA_reports_querycolumn]([QueryID], [ColumnID],[SessionID]) VALUES(@QueryID,@ColumnID,@SessionID ) END go GRANT EXEC ON sp_DTA_insert_reports_querycolumn TO PUBLIC go /* sp_DTA_insert_DTA_tuninglog @SessionID int @RowID int @CategoryID char(4) @Event ntext @Statement ntext @Frequency int @Reason ntext */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_insert_DTA_tuninglog' AND type = 'P') DROP PROCEDURE sp_DTA_insert_DTA_tuninglog go CREATE PROCEDURE sp_DTA_insert_DTA_tuninglog @SessionID int, @RowID int, @CategoryID char(4), @Event ntext, @Statement ntext, @Frequency int, @Reason ntext AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END INSERT INTO [msdb].[dbo].[DTA_tuninglog]([SessionID], [RowID], [CategoryID], [Event], [Statement], [Frequency], [Reason]) VALUES(@SessionID, @RowID, @CategoryID, @Event, @Statement, @Frequency, @Reason) END go GRANT EXEC ON sp_DTA_insert_DTA_tuninglog TO PUBLIC go /* sp_DTA_get_databasetableids @SessionID int */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_get_databasetableids' AND type = 'P') DROP PROCEDURE sp_DTA_get_databasetableids go CREATE PROCEDURE sp_DTA_get_databasetableids @SessionID int AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END SELECT DatabaseID,DatabaseName FROM [msdb].[dbo].[DTA_reports_database] as D WHERE D.SessionID = @SessionID END go GRANT EXEC ON sp_DTA_get_databasetableids TO PUBLIC go /* sp_DTA_get_pftableids @SessionID int */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_get_pftableids' AND type = 'P') DROP PROCEDURE sp_DTA_get_pftableids go CREATE PROCEDURE sp_DTA_get_pftableids @SessionID int AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END SELECT PartitionFunctionID ,DatabaseName ,PartitionFunctionName FROM [msdb].[dbo].[DTA_reports_partitionfunction] as PF, [msdb].[dbo].[DTA_reports_database] as D WHERE PF.DatabaseID = D.DatabaseID and D.SessionID = @SessionID END go GRANT EXEC ON sp_DTA_get_pftableids TO PUBLIC go /* sp_DTA_get_pstableids @SessionID int */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_get_pstableids' AND type = 'P') DROP PROCEDURE sp_DTA_get_pstableids go CREATE PROCEDURE sp_DTA_get_pstableids @SessionID int AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END SELECT PartitionSchemeID,DatabaseName,PartitionSchemeName FROM [msdb].[dbo].[DTA_reports_partitionfunction] as PF, [msdb].[dbo].[DTA_reports_partitionscheme] as PS, [msdb].[dbo].[DTA_reports_database] as D WHERE PS.PartitionFunctionID = PF.PartitionFunctionID and PF.DatabaseID = D.DatabaseID and D.SessionID = @SessionID END go GRANT EXEC ON sp_DTA_get_pstableids TO PUBLIC go /* sp_DTA_get_tableids @SessionID int */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_get_tableids' AND type = 'P') DROP PROCEDURE sp_DTA_get_tableids go CREATE PROCEDURE sp_DTA_get_tableids @SessionID int AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END SELECT TableID,DatabaseName,SchemaName,TableName FROM [msdb].[dbo].[DTA_reports_table] as T,[msdb].[dbo].[DTA_reports_database] as D WHERE T.DatabaseID = D.DatabaseID and D.SessionID = @SessionID END go GRANT EXEC ON sp_DTA_get_tableids TO PUBLIC go /* sp_DTA_get_columntableids @SessionID int */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_get_columntableids' AND type = 'P') DROP PROCEDURE sp_DTA_get_columntableids go CREATE PROCEDURE sp_DTA_get_columntableids @SessionID int AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END SELECT ColumnID,DatabaseName,SchemaName,TableName,ColumnName FROM [msdb].[dbo].[DTA_reports_column] as C, [msdb].[dbo].[DTA_reports_table] as T,[msdb].[dbo].[DTA_reports_database] as D WHERE C.TableID = T.TableID and T.DatabaseID = D.DatabaseID and D.SessionID = @SessionID END go GRANT EXEC ON sp_DTA_get_columntableids TO PUBLIC go /* sp_DTA_get_indexableids @SessionID int */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_get_indexableids' AND type = 'P') DROP PROCEDURE sp_DTA_get_indexableids go CREATE PROCEDURE sp_DTA_get_indexableids @SessionID int AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END SELECT IndexID,DatabaseName,SchemaName,TableName,IndexName FROM [msdb].[dbo].[DTA_reports_index] as I,[msdb].[dbo].[DTA_reports_table] as T, [msdb].[dbo].[DTA_reports_database] as D WHERE I.TableID = T.TableID and T.DatabaseID = D.DatabaseID and D.SessionID = @SessionID END go GRANT EXEC ON sp_DTA_get_indexableids TO PUBLIC go /* sp_DTA_update_tuninglog_errorfrequency @SessionID int @RowID int @Frequency int */ IF EXISTS (SELECT name FROM msdb.dbo.sysobjects WHERE name = 'sp_DTA_update_tuninglog_errorfrequency' AND type = 'P') DROP PROCEDURE sp_DTA_update_tuninglog_errorfrequency go CREATE PROCEDURE sp_DTA_update_tuninglog_errorfrequency @SessionID int, @Frequency int, @RowID int AS BEGIN DECLARE @retval int SET NOCOUNT ON EXEC @retval = sp_DTA_check_permission @SessionID IF @retval = 1 BEGIN RAISERROR ('Not the owner of this session', 16, 1) RETURN(1) END UPDATE [msdb].[dbo].[DTA_tuninglog] SET [Frequency]=@Frequency WHERE [RowID]=@RowID END go GRANT EXEC ON sp_DTA_update_tuninglog_errorfrequency TO PUBLIC go z/***************************************************************/ /* Make sure we are int the right database */ /***************************************************************/ use msdb go /**************************************************************/ /* Creating Report functions */ /* */ /**************************************************************/ /**************************************************************/ /* Query Cost Report */ /**************************************************************/ IF (EXISTS (SELECT * FROM msdb.dbo.sysobjects WHERE (name = N'fn_DTA_query_cost_report') AND (type = 'IF') AND (uid = USER_ID('dbo')))) DROP FUNCTION dbo.fn_DTA_query_cost_report go CREATE FUNCTION dbo.fn_DTA_query_cost_report(@SessionID int) RETURNS TABLE AS RETURN ( select StatementString, 'PercentImprovement'= CASE WHEN CurrentCost = 0 THEN 0 WHEN CurrentCost <> 0 THEN 100.0*(CurrentCost - RecommendedCost)/CurrentCost END from DTA_reports_query where SessionID=@SessionID ) go /**************************************************************/ /* Event Frequency Report */ /**************************************************************/ IF (EXISTS (SELECT * FROM msdb.dbo.sysobjects WHERE (name = N'fn_DTA_event_frequency_report') AND (type = 'IF') AND (uid = USER_ID('dbo')))) DROP FUNCTION dbo.fn_DTA_event_frequency_report go CREATE FUNCTION dbo.fn_DTA_event_frequency_report(@SessionID int) RETURNS TABLE AS RETURN ( select EventString, EventFrequency from DTA_reports_query where SessionID=@SessionID and EventFrequency>0 ) go /**************************************************************/ /* Query Detail Report */ /**************************************************************/ IF (EXISTS (SELECT * FROM msdb.dbo.sysobjects WHERE (name = N'fn_DTA_query_detail_report') AND (type = 'IF') AND (uid = USER_ID('dbo')))) DROP FUNCTION dbo.fn_DTA_query_detail_report go CREATE FUNCTION dbo.fn_DTA_query_detail_report(@SessionID int) RETURNS TABLE AS RETURN ( select QueryID, Type = CASE WHEN StatementType = 0 THEN 'Select' WHEN StatementType = 1 THEN 'Insert' WHEN StatementType = 2 THEN 'Update' WHEN StatementType = 3 THEN 'Delete' END, CurrentCost, RecommendedCost, Frequency, StatementString from DTA_reports_query where SessionID=@SessionID ) go /**************************************************************/ /* Query Index Relations Report */ /**************************************************************/ IF (EXISTS (SELECT * FROM msdb.dbo.sysobjects WHERE (name = N'fn_DTA_query_index_relations_report') AND (type = 'IF') AND (uid = USER_ID('dbo')))) DROP FUNCTION dbo.fn_DTA_query_index_relations_report go CREATE FUNCTION dbo.fn_DTA_query_index_relations_report(@SessionID int) RETURNS TABLE AS RETURN ( select Q.StatementString, T.TableName, I.IndexName, I.IsClustered, I.IsUnique from DTA_reports_query Q, DTA_reports_queryindex QI, DTA_reports_index I, DTA_reports_table T where Q.SessionID=QI.SessionID and Q.QueryID=QI.QueryID and QI.IndexID=I.IndexID and I.TableID=T.TableID and Q.SessionID=@SessionID ) go /**************************************************************/ /* View Table Relations Report */ /**************************************************************/ IF (EXISTS (SELECT * FROM msdb.dbo.sysobjects WHERE (name = N'fn_DTA_view_table_relations_report') AND (type = 'IF') AND (uid = USER_ID('dbo')))) DROP FUNCTION dbo.fn_DTA_view_table_relations_report go CREATE FUNCTION dbo.fn_DTA_view_table_relations_report(@SessionID int) RETURNS TABLE AS RETURN ( select 'TableSchema'=T1.SchemaName, 'TableName'=T1.TableName, 'ViewSchema'=T2.SchemaName, 'ViewName'=T2.TableName from DTA_reports_database D, DTA_reports_tableview TV, DTA_reports_table T1, DTA_reports_table T2 where D.DatabaseID=T1.DatabaseID and D.DatabaseID=T2.DatabaseID and T1.TableID=TV.TableID and T2.TableID=TV.ViewID and D.SessionID=@SessionID ) go /**************************************************************/ /* Workload Analysis Report */ /**************************************************************/ IF (EXISTS (SELECT * FROM msdb.dbo.sysobjects WHERE (name = N'fn_DTA_workload_analysis_report') AND (type = 'IF') AND (uid = USER_ID('dbo')))) DROP FUNCTION dbo.fn_DTA_workload_analysis_report go CREATE FUNCTION dbo.fn_DTA_workload_analysis_report(@SessionID int) RETURNS TABLE AS RETURN ( select 'StatementType' = CASE WHEN StatementType = 0 THEN 'Select' WHEN StatementType = 1 THEN 'Insert' WHEN StatementType = 2 THEN 'Update' WHEN StatementType = 3 THEN 'Delete' END, 'NumberOfQueries'=COUNT(QueryID), 'NumberOfQueriesCostDecreased'=SUM(CASE WHEN RecommendedCostCurrentCost THEN 1 ELSE 0 END), 'NumberOfQueriesWithNoCostChange'=SUM(CASE WHEN RecommendedCost=CurrentCost THEN 1 ELSE 0 END) from DTA_reports_query where SessionID=@SessionID group by StatementType ) go /******************************************************************/ /* This script will be executed for only on Shiloh or earlier */ /* version server */ /******************************************************************/ /***************************************************************/ /* Make sure we are int the right database */ /***************************************************************/ use msdb go /**************************************************************/ /* Creating Report functions */ /* */ /**************************************************************/ /**************************************************************/ /* Query Cost Report */ /**************************************************************/ IF (EXISTS (SELECT * FROM msdb.dbo.sysobjects WHERE (name = N'fn_DTA_query_cost_report') AND (type = 'IF'))) DROP FUNCTION fn_DTA_query_cost_report go CREATE FUNCTION fn_DTA_query_cost_report(@SessionID int) RETURNS TABLE AS RETURN ( select StatementString, 'PercentImprovement'=100.0 * (CurrentCost - RecommendedCost)/CurrentCost from DTA_reports_query where SessionID=@SessionID ) go /**************************************************************/ /* Event Frequency Report */ /**************************************************************/ IF (EXISTS (SELECT * FROM msdb.dbo.sysobjects WHERE (name = N'fn_DTA_event_frequency_report') AND (type = 'IF'))) DROP FUNCTION fn_DTA_event_frequency_report go CREATE FUNCTION fn_DTA_event_frequency_report(@SessionID int) RETURNS TABLE AS RETURN ( select EventString, EventFrequency from DTA_reports_query where SessionID=@SessionID and EventFrequency>0 ) go /**************************************************************/ /* Query Detail Report */ /**************************************************************/ IF (EXISTS (SELECT * FROM msdb.dbo.sysobjects WHERE (name = N'fn_DTA_query_detail_report') AND (type = 'IF'))) DROP FUNCTION fn_DTA_query_detail_report go CREATE FUNCTION fn_DTA_query_detail_report(@SessionID int) RETURNS TABLE AS RETURN ( select QueryID, Type = CASE WHEN StatementType = 0 THEN 'Select' WHEN StatementType = 1 THEN 'Insert' WHEN StatementType = 2 THEN 'Update' WHEN StatementType = 3 THEN 'Delete' END, CurrentCost, RecommendedCost, Frequency, StatementString from DTA_reports_query where SessionID=@SessionID ) go /**************************************************************/ /* Query Index Relations Report */ /**************************************************************/ IF (EXISTS (SELECT * FROM msdb.dbo.sysobjects WHERE (name = N'fn_DTA_query_index_relations_report') AND (type = 'IF'))) DROP FUNCTION fn_DTA_query_index_relations_report go CREATE FUNCTION fn_DTA_query_index_relations_report(@SessionID int) RETURNS TABLE AS RETURN ( select Q.StatementString, T.TableName, I.IndexName, I.IsClustered, I.IsUnique from DTA_reports_query Q, DTA_reports_queryindex QI, DTA_reports_index I, DTA_reports_table T where Q.SessionID=QI.SessionID and Q.QueryID=QI.QueryID and QI.IndexID=I.IndexID and I.TableID=T.TableID and Q.SessionID=@SessionID ) go /**************************************************************/ /* View Table Relations Report */ /**************************************************************/ IF (EXISTS (SELECT * FROM msdb.dbo.sysobjects WHERE (name = N'fn_DTA_view_table_relations_report') AND (type = 'IF'))) DROP FUNCTION fn_DTA_view_table_relations_report go CREATE FUNCTION fn_DTA_view_table_relations_report(@SessionID int) RETURNS TABLE AS RETURN ( select 'TableSchema'=T1.SchemaName, 'TableName'=T1.TableName, 'ViewSchema'=T2.SchemaName, 'ViewName'=T2.TableName from DTA_reports_database D, DTA_reports_tableview TV, DTA_reports_table T1, DTA_reports_table T2 where D.DatabaseID=T1.DatabaseID and D.DatabaseID=T2.DatabaseID and T1.TableID=TV.TableID and T2.TableID=TV.ViewID and D.SessionID=@SessionID ) go /**************************************************************/ /* Workload Analysis Report */ /**************************************************************/ IF (EXISTS (SELECT * FROM msdb.dbo.sysobjects WHERE (name = N'fn_DTA_workload_analysis_report') AND (type = 'IF'))) DROP FUNCTION fn_DTA_workload_analysis_report go CREATE FUNCTION fn_DTA_workload_analysis_report(@SessionID int) RETURNS TABLE AS RETURN ( select 'StatementType' = CASE WHEN StatementType = 0 THEN 'Select' WHEN StatementType = 1 THEN 'Insert' WHEN StatementType = 2 THEN 'Update' WHEN StatementType = 3 THEN 'Delete' END, 'NumberOfQueries'=COUNT(QueryID), 'NumberOfQueriesCostDecreased'=SUM(CASE WHEN RecommendedCostCurrentCost THEN 1 ELSE 0 END), 'NumberOfQueriesWithNoCostChange'=SUM(CASE WHEN RecommendedCost=CurrentCost THEN 1 ELSE 0 END) from DTA_reports_query where SessionID=@SessionID group by StatementType ) go  The following schema for Microsoft SQL Server code name "Katmai" describes input and output from the "database tuning advisor" tool in XML format. Microsoft does not make any representation or warranty regarding the schema or any product or item developed based on the schema. The schema is provided to you on an AS IS basis. Microsoft disclaims all express, implied and statutory warranties, including but not limited to the implied warranties of merchantability, fitness for a particular purpose, and freedom from infringement. Without limiting the generality of the foregoing, Microsoft does not make any warranty of any kind that any item developed based on the schema, or any portion of the schema, will not infringe any copyright, patent, trade secret, or other intellectual property right of any person or entity in any country. It is your responsibility to seek licenses for such intellectual property rights where appropriate. MICROSOFT SHALL NOT BE LIABLE FOR ANY DAMAGES OF ANY KIND ARISING OUT OF OR IN CONNECTION WITH THE USE OF THE SCHEMA, INCLUDING WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL (INCLUDING ANY LOST PROFITS), PUNITIVE OR SPECIAL DAMAGES, WHETHER OR NOT MICROSOFT HAS BEEN ADVISED OF SUCH DAMAGES. (c) Microsoft Corporation. All rights reserved. DTA XML Schema XML Schema for DTA input/output BSJB v2.0.50727l,#~D#StringsG#USxY#GUIDY48#BlobW_ 3j,'i :r   *=IU_dv   ,   6cP!,P   `     &f&&f&Jf&-f&f&f&; </<??(@f&<f& YA A?AAAARRdUf&If&Vf&f&rW`W{2NX`WZ Z ^\U``W{``W``W``W``W``Wa`Wa5a`WmaNaaaRa`Wa`Wa`Wb`W%bP79bHbhb b b`W"Lc%cqc~c c ccc d $d idcddd dPePLePoe&eeee*]f6f*ef6f*}f6f*f6ff *f6ff f f g g 4gcg ggggghghg"0h%cEhg[hrhNahNah hch i )i igiiiiii i @j Lj Xj  j ji j k ,k 6k Xkkiki k 0l dl l lililili m 'm om ~mcm fnLnf&nf&no%oBoTop=pBp*Zp6f}p p *q6fq[f&f&qf&^0f&f&qf& 6r Xrrrsf&sf&_sf&sf&sf&sf&tf&t-tf&Dtf&f&f&ztf&tf&t%u@uuuuvv7vvNavvvvvvvvvvwv@wvwf&.x?Jxx`Wf&wf&y?yf&z?zzzzzzzyzA{Y{{`W{`W{ {`W{`W{`W||.l|Q|||g|g|g|i||}|}`W}}!~~H~Na~`W3]3 3 3 3 3@3B3G3G3H3J3K3K$38L23 m J38nX3Dy*c3 }5x3~;3D~?3 V38\3 383 33333!3-373E3X3$c3'v3%(3),3%23)63%:3!>3!> 3!>33! >E3!>a3!>r3!>3!>3!$>3!(>3!+>3!=>3!D>3)F>3%JC3)JG+3KIA3%KJ\3KNt3%KO3%KS3KW3Oa3Px 31Rz 3 R~ 3 S/3T=3TA3DI38[3 w3#3*38-3 K!Q#5Q5D`KDfbLlDoLuDw! } 3  % 0K3\3c3%q3%}33 3 333t*GNY' G3 eG  : ee   Y Y  e* GT   %!1r=I.MGG?kyIkYGGG=ue8Yeje<ereees0e(ZEGmYZ,GBeG{ m| eem3eD6LeG* GeOeve e9 I  8!YG![!!"`"0g"s"""4"e"e#e#eD$L!%]2%H%f% %b+&e'e''G'G(YveI(e(e(( c)q)!)!Oe'<*Gq*NY*e*e*o**M+tT+`+'++G+e+ec),G8,en,G,G,Y -&-e@-e-eq*NY*e*eve*o**M+tT+`+r.....u//t 0!0?01+&1G,Y41!W1Yq*NY*e*eve*o**M+tT+`+.:1G1e1eG1YV2V^0V 2 2GF2' GG'G'GV2YV2YV2YV2Y2"3K3en33e394et4e4e4e+5)y5Y5e6Y36e[6Y6e6Y6e/7GX7;7e7Y7e8Y^8e8G8e&9tS;YS;YS;YS;GS;GS;Y8<kYd<*V >V>V&>V5>VC>VQ>V]>Vi>Vq>Vz>V>V>1YV>V>V>V>V>V>1YV>{?d<*?tD|?YM+t?G?e?]A]ADAmV]KGVpKGVJGV"JGVHJGVqJGVKGVKGVKGVKGVKGV LGV)LGVGLGVkLGVLGVLGVMGV7MGV`MGVqMGVMGVMGVNGVPNGVNGVNGVNGVOGV>OGVmOGVOGVOGVPGV9PGVoPGVPGVPGVPGVJGVJGVPGVQGVaQGVQGVQGVQGVQGV RGVJGVJGV"RGVKGVKGVKGV-KGV=KGV@RGVXRGVyRGVRGR$R]VTGVTGV GVnGVCGVFGVGVGVpGV}GVGVTGVTGVTGV=GV#=GV-=GV5=GV?=GVH=GVQ=GV>GV>GV>GV>GV>GV>GVTGV&TGVCTGVaTGV|TGVTGVTGVTGVTGR$R]'UGUYRUtnUq*NY*e*e**M+tT+`+U'UUGVU'uVGVGq*NY*e*e**M+tT+`+Vt'1YVV_VV_VV_ GWeVeWe?GWG1XeM3h?X3O?6_?48o? 9?p; J@<@(?@4?A?C(@EtB\FB0FBChFBxFCFC HdDJJEJdFKpFK@G LHOI hPIUhPIhPIhPIhPIPJQJ(S0KCUK[)VM9XN>XNHXNSYpPe^ZPeS[Rd\Rq_S\_S`_Sv`S8J`'SUh`/Snl`8S aQS bjSJcrS cS dS eSfSJfSfT3gT:g T?gDUMhtV^iVlilW~Si@XjX kX lXmX mY -n'YBoEYRpMYphYpYpY0hpY\lpYhqYlqYrYsYpg(tZttZ u&qx} qO&hxkT[)  @ g u'h''ȒJВ 'J(\(J!1(ChKlT h O&h\(h$v(l-(h5(l@[) q((49 OY dph))$;)$C)(eXhmglx>&q=hO qz' 5 < F L)9)9 ) *%^^K*Jf^*oSw*h\ `rhԠS hܠw l*h*l"h4+D q,أ)9H)9Ф+Sx%+ ) *&9+AQ'Y xl   Ц+J +hƧ+lݧ+h +l h) ], e,J m*, vF,h ~Z,l ,J , ,J , \-Ǩ1-hϨ\-hר~-l-h-lrh4S<*hE\M `VS h^w l}*h*lhl[) + q-ܮ.Xd)9Բ)9d+SL%+ȵ )  *!9+"(."4."D."P.S" ].# .$ .%.&ع/9&X(/9&A/S&0W/' /( /)ʼ/** , -H 5o 67ӽ+:۽J: :\;=1&; J1,;c1\<s1`<$rh=dS=l*h=u\>} `>S h?w l?*h@*l@ԾhAܾlA[)B/+D@ qEF,.3I)9J)9J%+J +SK )L *M9+N1(.>NlP.SNO NQ TR NT [UmVJY&1hY.1hY8 qY1JZ tZ< |]s^{^J_ q_1J`$ `@ awbbc2c2c,2Jd92dO2ea2e+ Jfs2f>&qg`hiDi'Jl'JlJl1Jl$>&qlmnnqr 2rj3s3s-3s<3sZ3ht3 t3t3hu4u4"uT4hv4hv4lv4hw 4lw4hx5lx&G5.y.`54y75\z?5`z^5h{f5{v6\{~$6`{G6h|j6\|}6`|6h}6\}6`}7h~:7J~I7~c7@r7F7h'7\07`~7h(8\C8`u8h8J88h 9l@99>&qh^9M +>&qE;< %<PL>?FpWh OWj}WpWyWyXWpWWD W  >Wh OWj }Wp Wy Wy  >Wh OWj }Wp Wy Wy  OWj& }WpA Q >WhT OWja }Wp Wy Wy  }Wp< L >WhO OWj\ }Wp Wy Wy    X WX* qX4 X [ XJh XXXhXXhXXXJdXJYJYJYJ-YHOY\YaYkYpg( Y YjEZqXZ|  dhkZ\~ZJZZ' 26@ G6Y_t B BZ Z'7Z0ZZ7[$#[0[,D[Q[ph[>rr[>t[>vpg(=\SH\ Q\\ i\L }\R \ \;-, !,4 !4 "hg\t-At-at`t -tau-AX-)f-Q;eU#u "YCv Ov{vl)-v.!ko.8.v@.vhwG. M.Je\6wr.Rw.dj:%).qvwlwJwJbqwhdj:%w.qwhw.wlw.x,Yx.Y:x..aaaR.xJx.x./< #<hg\<dj*'|rj='4y3/ 9/ C/|~jhUTyJ/hg\dyJuyp/Xv/y/y//y/y/y/y/y/y//y/ z/z/z/!z/*z/3z/Ez/Rz/az/fz/rz/z/z/z/z/X/aX/X/X/)X/X/1X/9X/AX0IYp0<< !VV9a@0iy{V0 "y{[0yta0q{[0qtp0 |0m0|0 |y(|0/e0rg0|0|0|0=}n%N}J[}"Qs}1yg` }[0X1}1}2J!ko#2a}J}J }J3SJx.}2}> ~`~2 3 ~g(~'Jrg2dj:%~hd/~h \~C(2!6JFU\Z\ 48<@zpu z$(,48p<@HLPX\`dplpt|pupuzpu P. TS X \ ` da h l p t x8 |   >   k  #Dq#2]1x H(S ? $(,0'4V8<@L6PUTrX{\`dhlptx |,7FQds D}$5Nehlp   \`dhlptx|8 ? H U    !  !.k7.#.#.c#.{#.+33.[#. 8.8.;3.K6. 3.8.33.2.C3.K3.K<5.S#!"#"i########$###! # !$ #)#I#I#I#I.$c!i##!#<$###!C!I#i#!##!## #)#I#i##### #)#)k()#)#)#I(I#Is(i###(###((# #)#I#i###   # c ! !# KG0c C <10!!"]"q""6#e###k$p$$$$%@%Z%%%&*&:&G&O&&&&&&' 'M'''(%(5(M(X((((()))7)H)))))** *.*I*k***@+E+^++++++++++ ,F,j,,,,,,,,-!-*-9-J-R-W-]-b-g-p-----..%...T.].x...... /#/P/a/j// 00 0&010:0P0000Y00011112*2>2N2Z2f2r2{222222222222 JN_ !r!rY=uYYY Y Y!Y"Y**Y**Y**Yr.Yu/Y**Y**Y**Y!r   68:LN\adkn !#')8:@ADEFGHI%J&K3L6M9N:OEQHRMSOTQURWTYV_W`Zc^dbefhjir ~ ~ ~| JQUVdp}[~ ~~~~a ~0~Jd&>S~l~~ <CFS~Y ~nu~&| ~~&&&&&''.'5'J'P'c'| t''  )& ~~C)~&&'#)9)P)X)| )-)1)1&&& R Xt+~  +&&  ^0 ~d0p0)-y0-0~00~~C0000 +&01  ^0 ~C1C1 +&0I a g ~11  ~ &|{22~7 ~&~~ ~&||9\99b99h99::/:nD:W:o:z::::::~Xt::; ;7;S;~e;~;<><5<~l~u<5~1?<5D?&|)?~?pA&|<UK]K* pK* K* K* K* K* K* L* )L* GL* kL* L* L* M* 7M* `M* qM* M* M* N* PN* N* N* N* O* >O* mO* O* O* P* 9P* oP* P* P* P* P* Q* aQ* Q* Q* Q* Q* R* "R* @R* XR* yR* R* UKUKT* T* * n* C* F* * * p* }* * T* T* T* =* #=* -=* 5=* ?=* H=* Q=* >* >* >* >* >* >* T* T* T* UK& ~UUdU ' &+U&  `V V~iV`V & ~I~ ' &+V& Q X?~X~XX$XX$XX$X$XX$XX$XY\H\-\~\\X\^\\\X\^\\\X\^\\\X\^\B^Q^b^m^^^^^@`* 0134679: N O   Q P  TU^_a`cb!  "!""$#>$=$%%S&T&&'((')**(+)+,,+-..-/00D1C1G2F2F3E344J566K7R9S9Z;[=\?]AdCqE{G|I}K~MOQSSUWYY[[]_acegiikkmmoqqsuwy{}}  !"&'(,-./01369:A@BCEDFGHIJKWZ[]^_a`bcdegfhijklmnoprqstuwvxyz{}|~   !!##%')+-/135799;;==??ACEGIIKMMOQQSUUWWYY[[]]_a a c e e giikmmooqssuwwy{{}} -./01789?@ABH]^_`b     !#%')+-/13579;=?ACEGIKKMOOQQSUUWYY [ [ ] _ _acceg!i"k$m%o&q+s.u0w/w1y2y3{4}5}678:9;=<ILOPRTSVWXabghmpqxy v[~ '.5K$"'4'()--*/1 2x25Y7Y DTAClient.dllUnrecognizedRecommendationMicrosoft.SqlServer.Management.DTA.ClientUnrecognizedRecommendationCollectionSchemaSchemaDictionaryTuningServerIdComparerNameValuePairTuningSessionTuningSessionCollectionConnectionTrackerRecommendationComparerILifeStateLifeStateInputDatabaseInputDatabaseDictionaryTableViewBaseInputTableInputTableDictionaryIGetScriptViewViewDictionaryIndexIndexDictionaryStatisticStatisticDictionaryIndexColumnColumnCollectionStatisticColumnStatisticColumnCollectionWorkloadTypeInputWorkloadTableBaseWorkloadTableInputTuningOptionsErrorTableDtaClientConstantsTuningProgressingEventHandlerTuningProgressingEventArgsReportingProgressingEventHandlerReportingProgressingEventArgsTuningDoneEventHandlerSessionStatusFinishStatusRecommendationTypeStatisticScanTypeOnlineRecommendationOptionsTuningFeatureSetTuningPartitioningStrategyTuningKeepExistingStructuresTuningStageReportFormatReportTypeServerEditionSessionConstantsTuningDoneEventArgsSessionAddedEventHandlerSessionEventArgsSessionAddedEventArgsSessionDeletedEventHandlerSessionDeletedEventArgsConnectionOpenedEventHandlerConnectionClosedEventHandlerRecommendationScriptItemDtaClientUtilsStringComparerDtaExceptionSessionProgressMonitorExceptionServerStatusMonitorExceptionExceptionTextResSRKeysPartitionFunctionPartitionFunctionCollectionPartitionFunctionParameterPartitionFunctionParameterCollectionPartitionSchemePartitionSchemeCollectionArgumentExpectsValueMicrosoft.SqlServer.Management.DTA.UtilitiesArgumentAttributeFlagArgumentAttributeValueArgumentAttributeOptionalValueArgumentAttributeValueListArgumentAttributeFileNameArgumentAttributeOptionalFileNameArgumentAttributeParserExceptionCommandLineParserArgumentMemberInfoSafeNativeMethodsCOORDSMALL_RECTCONSOLE_SCREEN_BUFFER_INFOTuningConnectionIQueryQueryCallbackQueryMethodAsyncQuerySyncQueryCommandQueryNonQueryReaderQuerySetOptionsAssemblyVersionInfomscorlibSystemObjectSystem.Collections.GenericList`1System.CollectionsSortedListMarshalByRefObjectIDisposableIComparer`1ValueTypeEnumMulticastDelegateEventArgsIComparerApplicationExceptionAttribute.ctornameget_NamerecommendationTypeget_RecommendationrecommendationIndexget_RecommendationIndexset_RecommendationIndexxmlget_XmlisSelectedForInputConfigurationget_IsSelectedForInputConfigurationset_IsSelectedForInputConfigurationSystem.XmlXmlTextWriterGenerateConfigurationXmlNameRecommendationRecommendationIndexXmlIsSelectedForInputConfigurationAddunrecognizedRecommendationsget_UnrecognizedRecommendationsRefreshUnrecognizedRecommendationsUnrecognizedRecommendationsdatabaseget_ItemItemMicrosoft.SqlServer.ConnectionInfoMicrosoft.SqlServer.Management.CommonSqlConnectionInfoSystem.DataSystem.Data.SqlClientSqlConnectionconnectionInitializedInitializeConnectionsqlConnectionget_ConnectionconnInfoget_ConnectionInfoConnectDisconnectget_IsConnectedDisposemajorVersionget_MajorVersionminorVersionget_MinorVersionPopulateServerVersionserverEditionget_Editionget_EditionNamePopulateServerEditionget_UserNameget_Passwordget_UseIntegratedSecurityinitializedTuningParametersDatabaseget_IsTuningParametersDatabaseInitializedset_IsTuningParametersDatabaseInitializedInitializeTuningParametersDatabasecollationget_CollationPopulateCollationsessionListget_TuningSessionsQuerySessionsRefreshTuningSessionsSessionAddedadd_SessionAddedremove_SessionAddedOnSessionAddedSessionDeletedadd_SessionDeletedremove_SessionDeletedOnSessionDeletedConnectionOpenedadd_ConnectionOpenedremove_ConnectionOpenedOnConnectionOpenedConnectionClosedadd_ConnectionClosedremove_ConnectionClosedOnConnectionClosedStartSessionsStatusMonitorStopSessionsStatusMonitorSystem.ThreadingThreadstatusThreadManualResetEventmonitorStatusMonitorStatusConnectionConnectionInfoIsConnectedMajorVersionMinorVersionEditionEditionNameUserNamePasswordUseIntegratedSecurityIsTuningParametersDatabaseInitializedCollationTuningSessionsCompareset_Namevalueget_Valueset_ValueValueDateTimetuningConnectionSystem.DiagnosticsProcesstuningProcessprogressThreadExceptiontuningProgressExceptionget_TuningProgressExceptionset_TuningProgressExceptionEventHandlerTuningProgressExceptionOccuredadd_TuningProgressExceptionOccuredremove_TuningProgressExceptionOccuredStartAttachDetachestimatedImprovementget_EstimatedImprovementconsumingWorkloadMessageget_ConsumingWorkloadMessageperformingAnalysisMessageget_PerformingAnalysisMessagegeneratingReportsMessageget_GeneratingReportsMessageTuningProgressadd_TuningProgressremove_TuningProgressReportingProgressadd_ReportingProgressremove_ReportingProgressTuningDoneadd_TuningDoneremove_TuningDonemonitorProgressget_IsAttachedSystem.Runtime.CompilerServicesIsVolatileTraceSwitchSessionProgressMonitorMonitorProgressStoreSessionXmlDeleteSessionXmlGenerateSessionXmlRefreshConsumeSessionXmlSystem.Xml.SchemaValidationEventArgsOnInvalidSessionXmlXmlNodeConsumeInputXmlGetNextRecommendationIndexrecommendationsLoadedGetRecommendationsget_AreRecommendationsLoadedArrayListsummaryReportGetSummaryReportIDataReaderGetReportAsRowsetXmlReaderGetReportAsXmlGetOutputXmlSaveOuputXmlDataSetGetTuningErrorsGetTuningErrorsForXmlhasTuningProgressEventsget_HasTuningProgressEventscompletedWorkloadParsingget_CompletedWorkloadParsinghasReportProgressEventsget_HasReportProgressEventscompletedReportsget_CompletedReportshasInputConfigurationSelectionget_HasInputConfigurationSelectionConsumeRecommendationsXmlOnInvalidRecommendationXmlConsumeTuningSummaryXmlConsumeConfigurationXmlrecommendationsListrecommendationsIncludeDatabaseContextSystem.Collections.SpecializedStringCollectionGenerateRecommendationsScriptGenerateRecommendationsListServerConnectionscheduledRecommendationsTimescheduledRecommendationsJobNameScheduleRecommendationsMicrosoft.SqlServer.SmoMicrosoft.SqlServer.Management.Smo.AgentJobServerGenerateUniqueJobNametuningServerget_ServersessionIdget_IDset_IDcreationTimeget_CreationTimetuningErrorget_ErrorconsoleModeEnabledget_IsConsoleModeEnabledset_IsConsoleModeEnabledNameChangedadd_NameChangedremove_NameChangedsessionNameStatusChangedadd_StatusChangedremove_StatusChangedsessionStatusget_Statusget_StatusNameUpdateSessionStatusCancelStopRenameSessionSetSessionStatusget_DatabasesGetDatabasesAsyncQueryDatabasesQueryDatabasesCallbackQueryDatabasesFinishedadd_QueryDatabasesFinishedremove_QueryDatabasesFinishedOnQueryDatabasesFinishedDatabaseAddedadd_DatabaseAddedremove_DatabaseAddedOnDatabaseAddedget_QueryDatabaseLastErrorinputDatabasesqueryDatabasesqueryDatabasesLastErrorqueryDatabasesSyncRootReleaseDatabasesinputWorkloadget_WorkloadinputTuningOptionsget_TuningOptionsaddRecommendationsSelectedForDisplayget_AreAddRecommendationsSelectedForDisplayset_AreAddRecommendationsSelectedForDisplaydropRecommendationsSelectedForDisplayget_AreDropRecommendationsSelectedForDisplayset_AreDropRecommendationsSelectedForDisplayOnNameChangedOnStatusChangedTuningProgressExceptionEstimatedImprovementConsumingWorkloadMessagePerformingAnalysisMessageGeneratingReportsMessageIsAttachedAreRecommendationsLoadedHasTuningProgressEventsCompletedWorkloadParsingHasReportProgressEventsCompletedReportsHasInputConfigurationSelectionServerIDCreationTimeErrorIsConsoleModeEnabledStatusStatusNameDatabasesQueryDatabaseLastErrorWorkloadTuningOptionsAreAddRecommendationsSelectedForDisplayAreDropRecommendationsSelectedForDisplayGetByIDRemoveSystem.IDisposable.DisposeopenedConnectionsessionDefaultget_IsExistingset_IsExistingget_IsValidStateIsExistingIsValidStateexistingFlagtuningSessionget_SessiondatabaseNamecompatibilityLevelget_CompatibilityLevelFetchAllPropertiesAsyncfetchAllTableDataget_FetchAllTableDataset_FetchAllTableDataselectedget_IsSelectedset_IsSelectedselectedForDisplayget_IsSelectedForDisplayset_IsSelectedForDisplayget_HasInputConfigurationSelectionsQueryPropertiesQueryPropertiesCallbackarePropertiesPopulatedget_ArePropertiesPopulatedqueryPropertiesqueryPropertiesSyncRootget_NumberOfTablesGetNumberOfTablesAsyncQueryNumberOfTablesQueryNumberOfTablesCallbackQueryNumberOfTablesFinishedadd_QueryNumberOfTablesFinishedremove_QueryNumberOfTablesFinishedOnQueryNumberOfTablesFinishednumberOfTablesqueryNumberOfTablesqueryNumberOfTablesSyncRootget_TablesGetTablesAsyncQueryTablesQueryTablesCallbackQueryTablesFinishedadd_QueryTablesFinishedremove_QueryTablesFinishedOnQueryTablesFinishedTableAddedadd_TableAddedremove_TableAddedOnTableAddedget_QueryTablesLastErrortablesqueryTablesqueryTablesSyncRootqueryTablesLastErrorviewsget_ViewsQueryViewsRefreshViewsQueryRefreshViewstableIndexesPopulatedviewIndexesPopulatedtableStatisticsPopulatedviewStatisticsPopulatedPopulateIndexesStatisticsQueryTableIndexesQueryViewIndexesQueryTableStatisticsQueryViewStatisticsQueryIndexesStatisticsRefreshIndexesQueryRefreshTableIndexesQueryRefreshViewIndexesQueryRefreshTableStatisticsQueryRefreshViewStatisticsQueryRefreshIndexesStatisticspartitionFunctionsget_PartitionFunctionsQueryPartitionFunctionsRefreshPartitionFunctionsQueryRefreshPartitionFunctionsget_PartitionSchemesGetPartitionSchemesAsyncQueryPartitionSchemesQueryPartitionSchemesCallbackpartitionSchemesqueryPartitionSchemesqueryPartitionSchemesSyncRootqueryPartitionSchemesLastErrorRefreshPartitionSchemesQueryRefreshPartitionSchemesunrecognizedRecommendationSchemasget_UnrecognizedRecommendationSchemasRefreshUnrecognizedRecommendationSchemasgeneratingInputXmlGenerateInputXmlget_HasRecommendationsMicrosoft.SqlServer.Management.SmoDatabaseScripterSessionCompatibilityLevelFetchAllTableDataIsSelectedIsSelectedForDisplayHasInputConfigurationSelectionsArePropertiesPopulatedNumberOfTablesTablesQueryTablesLastErrorViewsPartitionFunctionsPartitionSchemesUnrecognizedRecommendationSchemasHasRecommendationsviewFlagget_IsViewinputDatabaseget_Databaseset_DatabasetableNameschemaNameget_Schemaset_SchemaobjectIdget_SchemaQualifiedNameset_SchemaQualifiedNameaddRecommendationsget_HasAddRecommendationsset_HasAddRecommendationsdropRecommendationsget_HasDropRecommendationsset_HasDropRecommendationsindexesget_Indexesstatisticsget_StatisticsIsViewSchemaQualifiedNameHasAddRecommendationsHasDropRecommendationsIndexesStatisticssizeget_SizeactualTableRowsget_ActualRowsprojectedTableRowsget_ProjectedRowsset_ProjectedRowsSizeActualRowsProjectedRowsScriptGetScriptAsyncadd_GetScriptFinishedremove_GetScriptFinishedGetScriptFinishedviewDefinitionget_ViewDefinitionset_ViewDefinitionrecommendationset_RecommendationselectedForInputConfigurationselectedForScriptingget_IsSelectedForScriptingset_IsSelectedForScriptingsetOptionsConsumeSetOptionsQueryScriptQueryScriptCallbackOnGetScriptFinishedscriptqueryScriptqueryScriptSyncRootViewDefinitionIsSelectedForScriptinginputTableget_TableindexNameclusteredget_IsClusteredset_IsClustereduniqueget_IsUniqueset_IsUniqueget_SizeValuefileGroupget_FileGroupset_FileGroupfilteredIndexget_IsFilteredIndexset_IsFilteredIndexfilterDefinitionget_FilterDefinitionset_FilterDefinitionpartitionSchemeget_PartitionSchemeset_PartitionSchemeidMicrosoft.SqlServer.SqlEnumIndexKeyTypeindexKeyTypeget_KeyTypeisXmlIndexget_IsXmlIndexavailableForOnlineScriptingget_IsAvailableForOnlineScriptingset_IsAvailableForOnlineScriptingselectedForOnlineScriptingget_IsSelectedForOnlineScriptingset_IsSelectedForOnlineScriptingStripSquareBracketsInitializeScriptObjectget_ColumnsGetColumnsAsyncLoadColumnsQueryColumnsQueryColumnsCallbackQueryColumnsFinishedadd_QueryColumnsFinishedremove_QueryColumnsFinishedOnQueryColumnsFinishedcolumnsqueryColumnsqueryColumnsSyncRootqueryColumnsLastErrorget_PartitionColumnsGetPartitionColumnsAsyncQueryPartitionColumnsQueryPartitionColumnsCallbackQueryPartitionColumnsFinishedadd_QueryPartitionColumnsFinishedremove_QueryPartitionColumnsFinishedOnQueryPartitionColumnsFinishedpartitionColumnsqueryPartitionColumnsqueryPartitionColumnsSyncRootqueryPartitionColumnsLastErrorTableIsClusteredIsUniqueSizeValueFileGroupIsFilteredIndexFilterDefinitionKeyTypeIsXmlIndexIsAvailableForOnlineScriptingIsSelectedForOnlineScriptingColumnsPartitionColumnsinputTableOrViewstatisticNamescanTypeget_ScanTypeset_ScanTypesampleValueget_SampleValueset_SampleValueScanTypeSampleValueincludedget_IsIncludedColumndescendingget_IsDescendingToStringIsIncludedColumnIsDescendingvalue__FilewklTypeget_Typeset_TypewklFileNameget_FileNameset_FileNamewklTableget_WorkloadTableset_WorkloadTableset_XmlTypeFileNameDefaultTuningTimeMaximumKeyIndexColumnsLimitMaximumIndexColumnsLimit80MaximumIndexColumnsLimitreportSetAddNewReportTypeGetReportSetClearReportSetfeatureSetget_FeatureSetset_FeatureSetfeatureSetFlagget_IsFeatureSetSetpartitioningStrategyget_PartitioningStrategyset_PartitioningStrategypartitioningStrategyFlagget_IsPartitioningStrategySetkeepExistingStructuresget_KeepExistingStructuresset_KeepExistingStructureskeepExistingStructuresFlagget_IsKeepExistingStructuresSetdropOnlyModeget_DropOnlyModeset_DropOnlyModeevaluateOnlyModeget_EvaluateOnlyModeset_EvaluateOnlyModeabsoluteConfiguationget_IsAbsoluteConfigurationset_IsAbsoluteConfigurationonlineRecommendationOptionsget_OnlineIndexOperationset_OnlineIndexOperationmaximumStorageSizeget_MaximumStorageSizeset_MaximumStorageSizemaximumStorageSizeFlagget_IsMaximumStorageSizeSetResetMaximumStorageSizetuningTimeLimitget_TuningTimeset_TuningTimetuningTimeLimitFlagget_IsTuningTimeSetnumberOfEventsget_NumberOfEventsset_NumberOfEventsnumberOfEventsFlagget_IsNumberOfEventsSetminimumImprovementget_MinimumImprovementset_MinimumImprovementminimumImprovementFlagget_IsMinimumImprovementSettestServerget_TestServerset_TestServererrorTableget_ErrorTableset_ErrorTableerrorTableFlagget_IsErrorTableSetmaxIndexColumnsget_MaximumIndexColumnsset_MaximumIndexColumnsmaxIndexColumnsFlagget_IsMaximumIndexColumnsSetmaxKeyIndexColumnsget_MaximumKeyIndexColumnsset_MaximumKeyIndexColumnsmaxKeyIndexColumnsFlagget_IsMaximumKeyIndexColumnsSetdatabaseToConnectget_DatabaseToConnectset_DatabaseToConnectrecommendFilteredIndexesget_RecommendFilteredIndexesset_RecommendFilteredIndexesunrecognizedTuningOptionsget_UnrecognizedTuningOptionsValidateFeatureSetCombinationFeatureSetIsFeatureSetSetPartitioningStrategyIsPartitioningStrategySetKeepExistingStructuresIsKeepExistingStructuresSetDropOnlyModeEvaluateOnlyModeIsAbsoluteConfigurationOnlineIndexOperationMaximumStorageSizeIsMaximumStorageSizeSetTuningTimeIsTuningTimeSetNumberOfEventsIsNumberOfEventsSetMinimumImprovementIsMinimumImprovementSetTestServerIsErrorTableSetMaximumIndexColumnsIsMaximumIndexColumnsSetMaximumKeyIndexColumnsIsMaximumKeyIndexColumnsSetDatabaseToConnectRecommendFilteredIndexesUnrecognizedTuningOptionsHighTraceNormalTraceLowTraceComponentNameDtaSchemaNamespaceDtaEngineProcessTimeoutMinutesInvokeIAsyncResultAsyncCallbackBeginInvokeEndInvokeTimeSpanworkloadConsumptionget_WorkloadConsumptiontimeElapsedget_TimeElapsedworkloadConsumptionMessageget_WorkloadConsumptionMessageWorkloadConsumptionTimeElapsedWorkloadConsumptionMessagereportingProgressget_ReportingProgressReadyScheduledRunningFinishingFinishedAbortingAbortedSuccessNoneDropFullScanSamplePercentageSampleRowsOFFMIXEDONIDX_IVIDXIVNCL_IDXNONEFULLALIGNEDALLCL_IDXPendingTuningReportingRowsetSTMT_COSTEVT_FREQSTMT_DETCUR_STMT_IDXREC_STMT_IDXSTMT_COSTRANGECUR_IDX_USAGEREC_IDX_USAGECUR_IDX_DETREC_IDX_DETVIW_TABWKLD_ANLDB_ACCESSTAB_ACCESSCOL_ACCESSUnknownPersonalDesktopDeveloperStandardEnterpriseMaximumSessionNameLengthget_FinalSessionStatusfinishStatusget_FinishStatuserrorsget_ErrorsFinalSessionStatusErrorsget_Indexget_Scriptget_Descriptionget_IsErrorindexdescriptionisErrorDescriptionIsErrorSynchronizeCollectionsByKeysSystem.GlobalizationCultureInfodefaultCultureget_DefaultCultureIsFatalExceptionOutputErrorsSqlSmoObjectScriptCreateScriptDropEscapeStringEscapeStringCBracketEscapeStringSQuoteUnEscapeStringUnEscapeStringCBracketUnEscapeStringSQuoteParseSchemaAndObjectNameParseFullyQualifiedObjectNameParseColumnsDefinitionParsePartitionSchemeDefinitionProduceSchemaQualifiedNameIsSessionNameUniqueXmlElementGetOuterXmlDefaultCulturecultureInfoCompareOptionscoSystem.Runtime.SerializationSerializationInfoStreamingContextserverget_Cultureset_Cultureget_LoginIsNotSysAdminget_NonSysAdminCannotInitializeMsdbget_EmptyWorkloadget_InvalidSessionXmlget_InvalidSessionXmlSchemaget_InvalidSessionXmlNodeNotFoundget_InvalidSessionXmlUnexpectedNodeFoundget_InvalidConfigurationXmlSchemaget_InvalidConfigurationXmlAtNodeget_InvalidConfigurationXmlNodeNotFoundget_InvalidConfigurationXmlUnexpectedNodeFoundget_InvalidConfigurationXmlUnexpectedIndexColumnAttributeget_InvalidConfigurationXmlDatabaseWasNotSelectedForTuningget_InvalidConfigurationXmlTableWasNotSelectedForTuningget_InvalidConfigurationXmlTableDoesNotExistget_InvalidSessionIDget_CannotGenerateScriptRecommendationsForDatabaseget_CannotGenerateAddScriptRecommendationsForPartitionFunctionget_CannotGenerateDropScriptRecommendationsForPartitionFunctionget_CannotGenerateAddScriptRecommendationsForPartitionSchemeget_CannotGenerateDropScriptRecommendationsForPartitionSchemeget_CannotGenerateScriptRecommendationsForTableget_CannotGenerateAddScriptRecommendationsForViewget_CannotGenerateDropScriptRecommendationsForViewget_CannotGenerateScriptRecommendationsForViewget_CannotGenerateAddScriptRecommendationsForIndexget_CannotGenerateAddScriptRecommendationsForStatisticget_CannotGenerateDropScriptRecommendationsForIndexget_CannotGenerateDropScriptRecommendationsForStatisticget_CannotGenerateAddScriptForUnrecognizedRecommendationget_CannotGenerateDropScriptForUnrecognizedRecommendationget_MaximumStorageSizeNeedsToBePositiveget_TunigProcessExitedUnexpectedlyget_ErrorInStatusMonitorget_ErrorInProgressMonitorget_CannotSelectObjectForScriptingUnlessItHasValidRecommendationget_CannotSelectObjectForInputConfigurationUnlessItHasValidRecommendationget_PropertyIsUnavailableWhenRunningInConsoleModeget_ProjectedRowsMustBeGreaterThanZeroget_DuplicateJobNameFoundget_FailedToInitializeMsdbDatabaseForTuningget_CannotConnectToSqlExpressget_CannotConnectToSqlAzureget_CannotConnectInSingleUserModeget_ExitCodeUnableToConnectget_ExitCodeCommunicationLinkFailureget_ExitCodePermissionDeniedget_ExitCodeTimeoutExpiredTuningTimeHasToBePositiveNumberOfIndexColumnsIsOutsideTheRangeNumberOfKeyIndexColumnsIsOutsideTheRangeNumberOfEventsIsInvalidCannotParseSchemaQualifiedNameCannotParseFullyQualifiedNameRecommendationAlreadyProvidedNotSupportedPartitionFunctionTypeArgUnknownArgUnexpectedArgDuplicatedArgMissingValueArgCannotInterpretValueCultureLoginIsNotSysAdminNonSysAdminCannotInitializeMsdbEmptyWorkloadInvalidSessionXmlInvalidSessionXmlSchemaInvalidSessionXmlNodeNotFoundInvalidSessionXmlUnexpectedNodeFoundInvalidConfigurationXmlSchemaInvalidConfigurationXmlAtNodeInvalidConfigurationXmlNodeNotFoundInvalidConfigurationXmlUnexpectedNodeFoundInvalidConfigurationXmlUnexpectedIndexColumnAttributeInvalidConfigurationXmlDatabaseWasNotSelectedForTuningInvalidConfigurationXmlTableWasNotSelectedForTuningInvalidConfigurationXmlTableDoesNotExistInvalidSessionIDCannotGenerateScriptRecommendationsForDatabaseCannotGenerateAddScriptRecommendationsForPartitionFunctionCannotGenerateDropScriptRecommendationsForPartitionFunctionCannotGenerateAddScriptRecommendationsForPartitionSchemeCannotGenerateDropScriptRecommendationsForPartitionSchemeCannotGenerateScriptRecommendationsForTableCannotGenerateAddScriptRecommendationsForViewCannotGenerateDropScriptRecommendationsForViewCannotGenerateScriptRecommendationsForViewCannotGenerateAddScriptRecommendationsForIndexCannotGenerateAddScriptRecommendationsForStatisticCannotGenerateDropScriptRecommendationsForIndexCannotGenerateDropScriptRecommendationsForStatisticCannotGenerateAddScriptForUnrecognizedRecommendationCannotGenerateDropScriptForUnrecognizedRecommendationMaximumStorageSizeNeedsToBePositiveTunigProcessExitedUnexpectedlyErrorInStatusMonitorErrorInProgressMonitorCannotSelectObjectForScriptingUnlessItHasValidRecommendationCannotSelectObjectForInputConfigurationUnlessItHasValidRecommendationPropertyIsUnavailableWhenRunningInConsoleModeProjectedRowsMustBeGreaterThanZeroDuplicateJobNameFoundFailedToInitializeMsdbDatabaseForTuningCannotConnectToSqlExpressCannotConnectToSqlAzureCannotConnectInSingleUserModeExitCodeUnableToConnectExitCodeCommunicationLinkFailureExitCodePermissionDeniedExitCodeTimeoutExpiredSystem.ResourcesResourceManagerresourceManager_cultureGetStringget_GeneralCategoryget_StatusCategoryget_DefaultValueNameget_Usageget_Versionget_Readyget_Scheduledget_Runningget_Finishingget_Finishedget_Abortingget_Abortedget_Unknownget_Personalget_Desktopget_Developerget_Standardget_Enterpriseget_JobTitleget_JobScheduleget_JobCategorySwitchingDbContextApplyingCreateRecommendationApplyingCreateRecommendation2ApplyingDropRecommendationApplyingDropRecommendation2JobStepTitleGeneralCategoryStatusCategoryDefaultValueNameUsageVersionJobTitleJobScheduleJobCategoryfunctionNamenumberOfPartitionsget_NumberOfPartitionsset_NumberOfPartitionsvaluesget_ValuesRangeTyperangeTypeget_RangeTypeset_RangeTypeparametersget_ParametersQueryParametersNumberOfPartitionsValuesParametersfunctionget_FunctiondataTypeget_DataTypeDataTypesmoDataTypeget_SmoDataTypeConvertValueToTypeConvertStringToByteArrayFunctionSmoDataTypeschemeNamepartitionFunctionget_PartitionFunctionset_PartitionFunctionfileGroupsget_FileGroupsQueryFileGroupsFileGroupsYesNoOptionalIgnoreCaseget_ValueNameset_ValueNameMatchesget_IsFoundget_IsCollectionget_ExpectsValueSystem.ReflectionMemberInfoConsumeValueGetShortUsageGetLongUsagefoundConsumeValueHelperGetShortUsageHelperGetLongUsageHelperReadFromStringdefaultValueNameValueNameIsFoundIsCollectionExpectsValueemptyValueexpectsMoreValuesAssemblyInitializeResourceManagerGetResourceManagerGetModuleNameGetUsageTokenizeParseValidateArgumentsTryParseget_HelpshowHelpGetMembersGetVersionInfoGetAssemblyTitleGetCompanyNameGetCopyrightGetFileVersionGetVersionAttributeAttributeTypeFindArgumentShowShowErrorShowVersionInfomembersParserHelpInfoStdInputHandleStdOutputHandleStdErrorHandleGetStdHandleGetConsoleScreenBufferInfoXYLeftTopRightBottomdwSizedwCursorPositionwAttributessrWindowdwMaximumWindowSizeget_StopAllThreadsset_StopAllThreadsget_CommandTimeoutget_DatabaseContextCreateNewConnectionDisposeConnectionSqlCommandExecuteNonQuerySqlDataReaderExecuteReaderExecuteQueryExecuteQueryAsyncInsertQueryIntoQueueCleanUpQueueStartThreadIfNeededRunSyncQueryExecuteQueryThreadProcTraceInfoTraceVerboseTraceErrorconnectionInfomainConnectionqueryQueuequeryQueueEventexecuteQueryThreadexecuteQueriesstopAllThreadssessionsCounterQueryQueueStopAllThreadsCommandTimeoutDatabaseContextBeginQueryEndQueryget_PriorityWaitHandleget_AsyncWaitHandleget_Callbackget_LastErrorset_LastErrorPriorityAsyncWaitHandleCallbackLastErrorFinalizequeryMethodcallbackprioritylastErrorwaitHandlecommandGetReaderreaderanyOptionSetget_IsAnyOptionSetquotedIdentifierget_QuotedIdentifierarithAbortget_ArithAbortconcatNullYieldsNullget_ConcatNullYieldsNullansiNullsget_AnsiNullsansiPaddingget_AnsiPaddingansiWarningsget_AnsiWarningsnumericRoundAbortget_NumericRoundAbortGenerateSetOptionsIsAnyOptionSetQuotedIdentifierArithAbortConcatNullYieldsNullAnsiNullsAnsiPaddingAnsiWarningsNumericRoundAbortVersionStringBuildVersionSPLevelProductVersionStringProductNameStringProductNameBrandingStringProductNameShortcutBrandingStringVersionLocationStringProductVersionLocationStringVersionHelpKeywordPrefixVersionHelpSettingsTokenSetupSupportFolderMaxMaintenanceVersionSqlProductFamilyCodeevalTimeBombValuecurrentReleaseTimeBombValueVersionBIDSHelpNamespaceget_VersionHelpNamespaceVersionHelpNamespaceAssemblyInformationalVersionAttributeAssemblyFileVersionAttributeAssemblyVersionAttributeAssemblyTrademarkAttributeAssemblyCopyrightAttributeAssemblyProductAttributeAssemblyCompanyAttributeInternalsVisibleToAttributeAssemblyKeyNameAttributeSystem.Runtime.InteropServicesComVisibleAttributeCLSCompliantAttributeNeutralResourcesLanguageAttributeAssemblyCultureAttributeAssemblyConfigurationAttributeAssemblyDescriptionAttributeAssemblyTitleAttributeDebuggableAttributeDebuggingModesCompilationRelaxationsAttributeRuntimeCompatibilityAttributeDTAClientwgenerateRecommendationElementXmlWriterWriteStartElementWriteRawWriteEndElementDefaultMemberAttributecomparerIndexOfKeyGetByIndexiSqlMgmtMicrosoft.SqlServer.Management.SqlMgmtStringResourceClassAttributeconinfoStringEmptySqlOlapConnectionInfoBaseIDbConnectionCreateConnectionObjectconnectionSystem.Data.CommonDbConnectionOpenCopyCloseConnectionStateget_StateConnectionManagerServerVersionget_ServerVersionget_Majorget_Minorget_QueryTimeoutDbCommandset_CommandTimeoutExecuteScalarInt32InvalidOperationExceptionget_ServerNameFixedServerRolesIsInFixedServerRoleFormatProcessStartInfoGetCurrentProcessProcessModuleget_MainModuleLastIndexOfSubstringConcatProcessWindowStyleset_WindowStyleIFormatProviderset_ArgumentsWaitForExitget_ExitCodeSystem.ConfigurationConfigurationManagerNameValueCollectionget_AppSettingsget_LengthConvertToInt32get_CurrentThreadget_CurrentUICultureMicrosoft.SqlServer.Management.Sdk.SfcRequestUrnop_Implicitset_UrnPropertiesRequestset_Fieldsget_FieldsEnumeratorSqlDirectConnectionEnumResultDataTableCollectionDataTableDataRowCollectionget_RowsDataRowCommandTypeset_CommandTypeget_NowDbDataReaderGetInt32GetByteGetDateTimeReadSortget_CountInsertRemoveAtSqlExceptionDelegateCombineThreadStartwaitUntilFinishedEventWaitHandleSetJoinWaitOneSystem.ComponentModelBrowsableAttributeReadOnlyAttributeDefaultValueAttributeDisplayNameAttributeCategoryAttributexyComparer`1get_DefaultStructLayoutAttributeLayoutKindcreatedstatuswithProgressEventsSqlParameterCreateParameterDbParameterset_ParameterNameParameterDirectionset_DirectionSqlDbTypeset_SqlDbTypeSqlParameterCollectionNextResultget_FieldCountIsDBNullop_SubtractionSleepset_CommandTextComponentget_HasExitedstartingTuningSystem.TextStringBuilderSystem.IOStringWriterTextWriterFormattingset_FormattingWriteStartDocumentWriteAttributeStringWriteElementStringICollectionIEnumerableIEnumeratorGetEnumeratorget_CurrentMoveNextWriteEndDocumenttuningOptionsvalidateXmlSchemaXmlDocumentGetExecutingAssemblyStreamGetManifestResourceStreamXmlReaderSettingsXmlSchemaSetget_SchemasCreateXmlSchemaValidationTypeset_ValidationTypeValidationEventHandleradd_ValidationEventHandlerStringReaderTextReaderLoadXmlNodeListGetElementsByTagNameget_ItemOfsenderargsget_MessagedtaInputNodeget_FirstChildget_InvariantCultureToUpperop_EqualityStringComparisonget_NextSiblingget_InnerTextTrimXmlAttributeCollectionget_AttributesXmlAttributereportTypeExecuteXmlReaderoutputFileNameEncodingget_UnicodeStreamWriterMemoryStreamWriteFlushSeekOriginSeekXmlNodeTypeMoveToContentXmlWriterSettingsset_Indentset_CloseOutputWriteNodeuseNewConnectionSqlDataAdapterDataAdapterFilllastRowRetrievedfrequencyOnlyArgumentExceptionoutputXmlop_InequalitytuningSummaryconfigurationNodeinputget_HasChildNodesStringEnumeratorincludeDatabaseContextset_DefaultTextModeScriptingOptionsget_Optionsset_ClusteredIndexesset_NonClusteredIndexesset_IncludeDatabaseContextset_PrefetchObjectsDatabaseCollectionscheduleMaxValueget_JobServerJobset_CategoryApplyToTargetServerJobStepAgentSubSystemset_SubSystemStepCompletionActionset_OnSuccessActionAppendset_Commandset_ActiveStartDateget_TimeOfDayget_Hoursget_Minutesget_Secondsset_ActiveStartTimeOfDayFrequencyTypesset_FrequencyTypesjobsvrverifyUniquenessJobCollectionget_JobsContainsnewNameByteMonitorEnterWaitExitResultTypeset_ResultTypeget_DataIDataRecordqueryPulseAlldbCleare.cctorsessionIDisExistingInternalDataCollectionBaseToByteGetInt64GetDoubletableforTablespopulateIndexesOrderByDirectionset_OrderByListset_ParentPropertiesRequestsget_ParentPropertiesRequestsGetBooleanIsNullOrEmptyrefreshIndexesget_CurrentCultureContainsKeyToInt64scripterTableCollectionset_TextBodyset_IsSchemaBoundViewCollectionget_OuterXmlschemaviewtableViewNameToSingleXmlNamedNodeMapsmoTableViewrowsInt64schemaQualifiedNamedefinitionviewNodeWriteStringsmoViewtableOrViewRuntimeTypeHandleGetTypeFromHandleToObjectindexNodeSinglesourceStartsWithEndsWithsmoIndexIndexedColumnIndexedColumnCollectionget_IndexedColumnsset_Descendingset_IsIncludedPartitionSchemeParameterCollectionget_PartitionSchemeParametersPartitionSchemeParameterset_IndexKeyTypeSqlPropertyCollectionget_PropertiesPropertyCollectionPropertyGetBooleanSetValueSetRetrievedTableViewTableTypeBaseIndexCollectionstatNodesmoStatget_StatisticColumnsStatisticsScanTypeSetScanOptionsStatisticCollectionAppendFormatworkloadNodeArrayToArrayGetName{77BB7600-C7F2-4D1B-AF95-688F5E55572D}CompilerGeneratedAttributeDictionary`2$$method0x6000220-1TryGetValuepartitioningkeepExistingobjectmethodresultoldListnewListscGetKeyexceptionExecutionEngineExceptionOutOfMemoryExceptionAccessViolationExceptionBadImageFormatExceptionInvalidProgramExceptionEnvironmentget_NewLineget_InnerExceptionscriptObjectscriptDropsset_ScriptDropsscEscget_CharsOutAttributeSystem.Text.RegularExpressionsRegexRegexOptionsMatchGroupget_SuccessGroupCollectionget_GroupsCapturefullNamedatabaseNameIsOptionalNextMatchCaptureCollectionget_CapturesthisSessionxmlElementset_Namespacesget_Prefixget_LocalNameget_HasAttributesWriteToget_IsEmptyWriteContentToWriteFullEndElementSqlSupportGetCompareOptionsFromCollationEqualsCreateSpecificCultureCompareInfoget_CompareInfoSerializableAttributemessageinnerExceptioninfocontexttimenummaxColumnsobjectNameargumentkeyarg0arg1get_FullNameModuleget_Moduleget_AssemblydbNameparentObjectNamestepNumberpartitionFunctionNamesmoPartitionFunctionget_PartitionFunctionParametersset_RangeValuesToLowerInvariantCompareOrdinalNumberStyles$$method0x600031f-1get_BigIntBinarySqlDataTypeget_BitCharget_Dateget_DateTimeDateTime2DateTimeOffsetget_Floatget_Intget_MoneyNCharNVarCharget_Realget_SmallDateTimeget_SmallIntget_SmallMoneyTimeget_TinyIntget_UniqueIdentifierVarBinaryVarCharget_Variantget_SqlDataTypeDateTimeStylesSystem.Data.SqlTypesSqlDecimalSqlMoneyDoubleInt16GuidIConvertibleparameterNamepartitionSchemeNamesmoPartitionSchemeAttributeUsageAttributeAttributeTargetsdefaultNamecontainerprefixPropertyInfoFieldInfoGetValueIListget_FieldTypeBindingFlagsBinderget_PropertyTypeTargetInvocationExceptionvalueNameIntPtrop_ExplicitMathMinReplaceIndexOftypeMicrosoft.SqlServer.SStringMicrosoft.SqlServer.CommonSqlSecureStringTypeDescriptorTypeConverterGetConverterITypeDescriptorContextConvertFromStringPathGetFullPathSystem.Security.PermissionsSecurityPermissionAttributeSecurityActionresourceNameassemblyGetEntryAssemblyget_LocationGetFileNamecommandLineIsWhiteSpaceGetTypeMemberTypesget_MemberTypeGetCustomAttributeserrget_Titleget_Companyget_CopyrightConsoleWriteLineattributeArgumentNullExceptionSystem.SecuritySuppressUnmanagedCodeSecurityAttributeDllImportAttributekernel32.dllhWndhConsoleOutputlpConsoleScreenBufferInfoset_StatementTimeoutSynchronizedGCCollectget_SqlConnectionObjectget_IsAliveResetSuppressFinalizedisposingMethodInfoget_MethodNotImplementedExceptionget_CommandTextset_Connectionget_StatementTimeout$$method0x60003ef-1sqlStmtsMicrosoft.SqlServer.Management.DTA.Client.ExceptionText.resourcesMicrosoft.SqlServer.Management.DTA.Client.SR.resourcesDTA_tables.sqlDTA_functions.sqlDTA_functions80.sqldtaschema.xsdRecommendation Create DropMselect SERVERPROPERTY('EngineEdition')Kselect SERVERPROPERTY('IsSingleUser')SELECT COUNT(*) FROM msdb.dbo.sysobjects WHERE name IN ( N'sp_DTA_add_session',N'sp_DTA_delete_session',N'sp_DTA_help_session',N'sp_DTA_update_session',N'sp_DTA_get_tuninglog',N'sp_DTA_update_session',N'sp_DTA_get_session_report',N'sp_DTA_get_tuninglog',N'sp_DTA_get_session_tuning_results',N'sp_DTA_set_interactivestatus' ) AND type = 'P' AND uid = {0}('dbo')USER_ID+DATABASE_PRINCIPAL_IDDTAEngine.exe-S{0} -E -I)-S{0} -U{1} -P{2} -I5IgnoreInitMsdbProcessError?Server/Database[@Name='master']Collation3msdb..sp_DTA_help_session/Server Status Monitor <>-S{0} -E -W{1}/-S{0} -U{1} -P{2} -W{3}5Session Progress Monitor <@SessionIDOmsdb..sp_DTA_get_session_tuning_results1msdb..sp_DTA_add_session@SessionName@TuningOptions7msdb..sp_DTA_delete_session DTAXMLxmlns:xsiShttp://www.w3.org/2001/XMLSchema-instance xmlnsehttp://schemas.microsoft.com/sqlserver/2004/07/dtaDTAInput Server NameDatabaseWorkload FileConfiguration#SpecificationModeRelativeAbsolute+@IncludeTuningOptionsdtaschema.xsd SERVERWORKLOADTUNINGOPTIONSCONFIGURATION NAMENAME (SERVERDATABASENAME (DATABASE)ABSOLUTE?msdb..sp_DTA_get_session_report@ReportID@ReportType5msdb..sp_DTA_get_tuninglogconnection @XML#@LastRowRetrieved3@GetFrequencyForRowIDOnlyTuningSummaryReportEntry ValueNAME (SERVER)use [{0}]=Database Engine Tuning Advisor go {0} {1}7msdb..sp_DTA_update_session%@InteractiveStatus[Server/Database[BitWiseAnd(@Status,{0}) != 0]-SessionProgressMonitor]Trace events related to monito progress thread%CompatibilityLevel9Server/Database[@Name='{0}']/Server/Database[@Name='C']/Table[@IsSystemObject!=true()]ID SchemaRowCountDataSpaceUsedIndexSpaceUsedA']/View[@IsSystemObject!=true()] Text']/ View Table5[@IsSystemObject!=true()]/Statistic IndexIsClusteredIsUniqueIndexKeyTypeIsXmlIndex!FilterDefinition)']/PartitionFunctionRangeType%NumberOfPartitions%']/PartitionScheme#PartitionFunction [{0}] SCHEMANAME (SCHEMA) TABLENAME (TABLE)NumberOfRowsRECOMMENDATION CREATE DROP#PARTITIONFUNCTION1NAME (PARTITIONFUNCTION)PARTITIONSCHEME-NAME (PARTITIONSCHEME) VIEWNAME (VIEW)VIEWDEFINITIONViewDefinition INDEXSTATISTICSNAME (INDEX)CLUSTERED UNIQUEINDEXSIZEINMB ONLINEFILTEREDINDEX true SizeActualRows{0}NAME (COLUMN)SORTORDER TYPEDESCENDINGINCLUDEDCOLUMN COLUMNFILEGROUPPARTITIONCOLUMN!FILTERDEFINITIONClustered false Unique OnlineFilteredIndexIndexSizeInMBPartitionSchemePartitionColumnFileGroup[PRIMARY][]Server/Database[@Name='{0}']/{1}[@Name='{2}' and @Schema='{3}']/Index[@Name='{4}']/IndexedColumnDescendingIsIncludedServer/Database[@Name='{0}']/{1}[@Name='{2}' and @Schema='{3}']/Index[@Name='{4}']/PartitionSchemeParameterFULLSCAN!SAMPLEPERCENTAGESAMPLEROWSStatisticsFullScan!SamplePercentageSampleRows!']/Table[@Name='' and @Schema=')']/Statistic[@Name='']/Column ColumnSortOrderAscending TypeKeyColumnIncludedColumn[{0}] {1}asc desc FILE#[{0}].[{1}].[{2}]+DATABASE (ERRORTABLE)5NAME (ERRORTABLE DATABASE)'SCHEMA (ERRORTABLE)1NAME (ERRORTABLE SCHEMA)%TABLE (ERRORTABLE)/NAME (ERRORTABLE TABLE)TuningOptionsReportSet ReportNumberOfEventsTuningTimeInMin!StorageBoundInMB)MaxKeyColumnsInIndex#MaxColumnsInIndex1MinPercentageImprovementTestServer+EvaluateConfigurationDropOnlyModeFeatureSetPartitioningKeepExisting)OnlineIndexOperation#DatabaseToConnect1RecommendFilteredIndexesTuningLogTable=TuningOptionsErrorDropOnlyMode?TuningOptionsErrorFilteredIndex;TuningOptionsErrorKeepAligned9TuningOptionsErrorAddAligned=TuningOptionsErrorNonClustered=TuningOptionsErrorIndexedViews-- en-US\[((?:(?:\]{2})*[^\x5D]+(?:\]{2})*)+)\]\.\[((?:(?:\]{2})*[^\x5D]+(?:\]{2})*)+)\]\[((?:(?:\]{2})*[^\x5D]+(?:\]{2})*)+)\]\.(?:\[((?:(?:\]{2})*[^\x5D]+(?:\]{2})*)+)\])?\.\[((?:(?:\]{2})*[^\x5D]+(?:\]{2})*)+)\]dboc^([^\x5D\.\s]+)\.([^\x5D\.\s]+)?\.([^\x5D\.\s]+)$q^(\[((?:(?:\]{2})*[^\x5D]+(?:\]{2})*)+)\]|[^\x5D\.\s]+)$e\[((?:(?:\]{2})?[^\x5D]+(?:\]{2})?)+)\] (desc|asc)(\w+) \((?:(\[((?:(?:\]{2})?[^\x5D]+(?:\]{2})?)+)\])[,]?[ ]?)+\)].[?SQL_Latin1_General_CP1254_CI_ASTurkishtr%LoginIsNotSysAdmin?NonSysAdminCannotInitializeMsdbEmptyWorkload#InvalidSessionXml/InvalidSessionXmlSchema;InvalidSessionXmlNodeNotFoundIInvalidSessionXmlUnexpectedNodeFound;InvalidConfigurationXmlSchema;InvalidConfigurationXmlAtNodeGInvalidConfigurationXmlNodeNotFoundUInvalidConfigurationXmlUnexpectedNodeFoundkInvalidConfigurationXmlUnexpectedIndexColumnAttributemInvalidConfigurationXmlDatabaseWasNotSelectedForTuninggInvalidConfigurationXmlTableWasNotSelectedForTuningQInvalidConfigurationXmlTableDoesNotExist!InvalidSessionID]CannotGenerateScriptRecommendationsForDatabaseuCannotGenerateAddScriptRecommendationsForPartitionFunctionwCannotGenerateDropScriptRecommendationsForPartitionFunctionqCannotGenerateAddScriptRecommendationsForPartitionSchemesCannotGenerateDropScriptRecommendationsForPartitionSchemeWCannotGenerateScriptRecommendationsForTable[CannotGenerateAddScriptRecommendationsForView]CannotGenerateDropScriptRecommendationsForViewUCannotGenerateScriptRecommendationsForView]CannotGenerateAddScriptRecommendationsForIndexeCannotGenerateAddScriptRecommendationsForStatistic_CannotGenerateDropScriptRecommendationsForIndexgCannotGenerateDropScriptRecommendationsForStatisticiCannotGenerateAddScriptForUnrecognizedRecommendationkCannotGenerateDropScriptForUnrecognizedRecommendationGMaximumStorageSizeNeedsToBePositive=TunigProcessExitedUnexpectedly)ErrorInStatusMonitor-ErrorInProgressMonitoryCannotSelectObjectForScriptingUnlessItHasValidRecommendationCannotSelectObjectForInputConfigurationUnlessItHasValidRecommendation[PropertyIsUnavailableWhenRunningInConsoleModeEProjectedRowsMustBeGreaterThanZero+DuplicateJobNameFoundOFailedToInitializeMsdbDatabaseForTuning3CannotConnectToSqlExpress/CannotConnectToSqlAzure;CannotConnectInSingleUserMode/ExitCodeUnableToConnectAExitCodeCommunicationLinkFailure1ExitCodePermissionDenied-ExitCodeTimeoutExpired3TuningTimeHasToBePositiveKNumberOfIndexColumnsIsOutsideTheRangeQNumberOfKeyIndexColumnsIsOutsideTheRange/NumberOfEventsIsInvalid=CannotParseSchemaQualifiedName;CannotParseFullyQualifiedName;RecommendationAlreadyProvidedCNotSupportedPartitionFunctionTypeArgUnknownArgUnexpectedArgDuplicatedArgMissingValue/ArgCannotInterpretValueGeneralCategoryStatusCategory StatusCreationTimeEditionMajorVersionMinorVersionUserName!DefaultValueName UsageVersion ReadyScheduledRunningFinishingFinishedAbortingAbortedUnknownPersonalDesktopDeveloperStandardEnterpriseJobTitleJobScheduleJobCategory%SwitchingDbContext9ApplyingCreateRecommendation;ApplyingCreateRecommendation25ApplyingDropRecommendation7ApplyingDropRecommendation2JobStepTitle%ARGUMENTTOFUNCTIONPARTITIONTYPE RANGEBoundary LEFT VALUE IsNull FALSEPartitionType Range9']/PartitionFunction[@Name=';']/PartitionFunctionParameter^(?<type>[a-zA-Z_2]+) [\s]* (?:\( [\s]* (?<lenght>[0-9]+|max) [\s]* \))?$max bigint binarybit char datedatetimedatetime2datetimeoffsetdecimalnumeric floatint money ncharnvarchar realsmalldatetimesmallintsmallmoney timetinyint!uniqueidentifiervarbinaryvarcharsql_variant%ArgumentToFunction0x5']/PartitionScheme[@Name='']/FileGroup  {0}[, {0}] -(C)CmdLineParserITraces events in Command Line Parser infoattributeCTraceConnection.Connect() - enterATraceConnection.Connect() - exitITraceConnection.Disconnect() - enter+Stopping query thread)Query thread stoppedGTraceConnection.Disconnect() - exit[TraceConnection.CreateNewConnection() - enterYTraceConnection.CreateNewConnection() - exitWTraceConnection.DisposeConnection() - enterUTraceConnection.DisposeConnection() - exitSTraceConnection.ExecuteNonQuery() - enterQTraceConnection.ExecuteNonQuery() - exitOTraceConnection.ExecuteReader() - enterMTraceConnection.ExecuteReader() - exitMTraceConnection.ExecuteQuery() - enterKTraceConnection.ExecuteQuery() - exitWTraceConnection.ExecuteQueryAsync() - enterUTraceConnection.ExecuteQueryAsync() - exit]TraceConnection.InsertQueryIntoQueue() - enter5Signaling the query thread[TraceConnection.InsertQueryIntoQueue() - exitMTraceConnection.CleanUpQueue() - enterKTraceConnection.CleanUpQueue() - exit[TraceConnection.StartThreadIfNeeded() - enter1Creating queryQueueEvent+Creating query thread-Query execution threadYTraceConnection.StartThreadIfNeeded() - exitMTraceConnection.RunSyncQuery() - enter3Executing sync query: {0}'Finished query: {0}=Error in query: {0}, error {1}KTraceConnection.RunSyncQuery() - exit?Starting ExecuteQueryThreadProc1Query queue non empty...#Picked query: {0}5Executing async query: {0}=Exiting ExecuteQueryThreadProcQueryQueueSEvents related to per-session query queue+Disposing wait handle;AsyncQuery: {0}, Priority {1}9SyncQuery: {0}, Priority {1}5Command: {0}, Priority {1}#QUOTED_IDENTIFIERARITHABORT/CONCAT_NULL_YIELDS_NULLANSI_NULLSANSI_PADDINGANSI_WARNINGS%NUMERIC_ROUNDABORT3SET QUOTED_IDENTIFIER {0}OFFON%SET ARITHABORT {0}?SET CONCAT_NULL_YIELDS_NULL {0}%SET ANSI_NULLS {0})SET ANSI_PADDING {0}+SET ANSI_WARNINGS {0}5SET NUMERIC_ROUNDABORT {0}-ms-help://MS.SQLCC.v10vwMh^UW-z\V4 $ $ l t 0        9 9((((      ( < <-  ((]̀̑ = =AA A= = ( (  $   EI(A(=((( $$    M| |QU U UY Y   ]a   e im m qA uA y y qA i  }     M M   M   @  <@   )(|(U((M((@(( $ $$0  $ $  L HLX X  , , <<   ($((L(X(,(<( $- < < <(<(< < <  ` `h h(<(`(h < <        ( (  H H   H H(H(H < } T T T T(T(T D D D    pp(D((p(} D- \ \  \(\(\ D   x x((x d d d(d(d  l l(l t(t| | |  (|( <            (((((DTAClientdhttp://schemas.microsoft.com/sqlserver/2004/07/dta      (           } (     ) )     } }   U}U } }  p}$  U  $U U$LoginIsNotSysAdmin>NonSysAdminCannotInitializeMsdb2TuningTimeHasToBePositiveJNumberOfIndexColumnsIsOutsideTheRangePNumberOfKeyIndexColumnsIsOutsideTheRange.NumberOfEventsIsInvalidEmptyWorkload"InvalidSessionXml.InvalidSessionXmlSchema:InvalidSessionXmlNodeNotFoundHInvalidSessionXmlUnexpectedNodeFound:InvalidConfigurationXmlSchema:InvalidConfigurationXmlAtNodeFInvalidConfigurationXmlNodeNotFoundTInvalidConfigurationXmlUnexpectedNodeFoundjInvalidConfigurationXmlUnexpectedIndexColumnAttributelInvalidConfigurationXmlDatabaseWasNotSelectedForTuningfInvalidConfigurationXmlTableWasNotSelectedForTuningPInvalidConfigurationXmlTableDoesNotExist InvalidSessionID\CannotGenerateScriptRecommendationsForDatabasetCannotGenerateAddScriptRecommendationsForPartitionFunctionvCannotGenerateDropScriptRecommendationsForPartitionFunctionpCannotGenerateAddScriptRecommendationsForPartitionSchemerCannotGenerateDropScriptRecommendationsForPartitionSchemeVCannotGenerateScriptRecommendationsForTableZCannotGenerateAddScriptRecommendationsForView\CannotGenerateDropScriptRecommendationsForViewTCannotGenerateScriptRecommendationsForView\CannotGenerateAddScriptRecommendationsForIndexdCannotGenerateAddScriptRecommendationsForStatistic^CannotGenerateDropScriptRecommendationsForIndexfCannotGenerateDropScriptRecommendationsForStatistichCannotGenerateAddScriptForUnrecognizedRecommendationjCannotGenerateDropScriptForUnrecognizedRecommendationFMaximumStorageSizeNeedsToBePositive; 0;_CorDllMainmscoree.dll% -0HX@444VS_VERSION_INFO2 @2 @?DVarFileInfo$TranslationStringFileInfop000004b0LCompanyNameMicrosoft Corporation,FileDescription l%FileVersion10.50.1600.1 ((KJ_RTM).100402-1540 )<InternalNameDTAClient.dllp%LegalCopyrightMicrosoft Corp. All rights reserved.ILegalTrademarksMicrosoft SQL Server is a registered trademark of Microsoft Corporation.DOriginalFilenameDTAClient.dllLProductNameMicrosoft SQL Server@ ProductVersion10.50.1600.1< Assembly Version10.0.0.00 P;`0S *H D0@1 0 +0h +7Z0X03 +70% <<<Obsolete>>>0!0 +.iÌܵVܩ=*Ԡ10`0L .P\0 +0p1+0)U "Copyright (c) 1997 Microsoft Corp.10U Microsoft Corporation1!0UMicrosoft Root Authority0 070822223102Z 120825070000Z0y1 0 UUS10U Washington10URedmond10U Microsoft Corporation1#0!UMicrosoft Code Signing PCA0"0  *H 0 y}]E941%5IwEqFԌkLRbMIl/$>e# HuEP%+ #A$bEJͳ/"J-|o;99ݽ)f;-2'Hlc\򸔣8P'N0==l9.4. }bxfs Oc,2EJ;PSfQyV>Pn5{$Rf=N+~3nGўJnS00U% 0 +0U0[pir#Q~Mˡr0p1+0)U "Copyright (c) 1997 Microsoft Corp.10U Microsoft Corporation1!0UMicrosoft Root Authority<<>c@0U00Uvp[NQD.Dc0 U0 +{~J&μNtX't*uLxMi|CʇSŸVocDDȚ  )}s9=j8m҈#i 4|.)Bk(q8 ]hͽAkf4|zB{ p֒O8|-=4 b7j#\cZ9`U3; _,˫ 0  *RA^0(ip΀Brv0z0b a>0  *H 0y1 0 UUS10U Washington10URedmond10U Microsoft Corporation1#0!UMicrosoft Code Signing PCA0 091207224029Z 110307224029Z01 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR10UMicrosoft Corporation0"0  *H 0 0ErSkO#=Y@8s&S<B8auM\F^i[s)DdY/]nǫ9eħuꇗ&&v89&+ZT!򗍇)I,?}͖ q B5׸?ݎE }K[vrw#}5]PKGmUTN؁B1U SI0奈|^zZ7i2$00U% 0 +0U8xs2_Uƙt0U0U#0vp[NQD.Dc0DU=0;09753http://crl.microsoft.com/pki/crl/products/CSPCA.crl0H+<0:08+0,http://www.microsoft.com/pki/certs/CSPCA.crt0  *H ( oBvCB$e4uq0r7:pQ q(ps{V4ZrN {DO aun+Z 9`jT;1_,nM*v{Ƈֱ*rTn*ȞobKk=/zw9gj{cI&Bޕ" _s2r6)$ROfH&9iPNl.r!m$H@|t8JO00j O%EXzg0  *H 0p1+0)U "Copyright (c) 1997 Microsoft Corp.10U Microsoft Corporation1!0UMicrosoft Root Authority0 060916010447Z 190915070000Z0y1 0 UUS10U Washington10URedmond10U Microsoft Corporation1#0!UMicrosoft Timestamping PCA0"0  *H 0 7nBJqH>S,2ORȃ>3I1(dPKuǨծipfx'f趷 Y")/@VvmdmJT޿ǀL7VhGv\/}%V[jc|<%M9wt]\؆7,u9 |vlnz>q_*Ob`2҃N+"\hE/Pl%ׅvs6ƕz`3[AXn,HoCj&k(0$0U% 0 +0U0[pir#Q~Mˡr0p1+0)U "Copyright (c) 1997 Microsoft Corp.10U Microsoft Corporation1!0UMicrosoft Root Authority<<>c@0 +70UoN?4K;AC0 +7  SubCA0 U0U00  *H M1|PapEsT? -QS9V ތ;ɷQ!oi~k"Flm|"Fӄ6~p]Eݎ*|ɮ2Շc6!v;s!شTeJ(&`;exHϭ:ObX099!dcC/{FeJtn ̝(a|H!8Ŗ2@S=f7"̰wTQ:rD#00 a- 0  *H 0y1 0 UUS10U Washington10URedmond10U Microsoft Corporation1#0!UMicrosoft Timestamping PCA0 080725190217Z 130725191217Z01 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR1'0%U nCipher DSE ESN:7A82-688A-9F921%0#UMicrosoft Time-Stamp Service0"0  *H 0  BQzٕ܇7(vMPv*GVi~MquۻCloq+|Δź~a-0&-v?F؉7[hd֋=vP'`]),<ϥZ5O8a?=6Vw;]7'c,HUl+~w$*p*$Ţ"KLYwTrC>dݓXI 63~Ly2Y)0 +0 *H  1  +70 +7 10  +70# *H  1yfת}G00X +7 1J0H&$SQL Server 2008 R2http://www.microsoft.com/sql0  *H մѢN|-֊<`-|