From 587470990893e384e97b83ccfea118bdeccc649b Mon Sep 17 00:00:00 2001 From: tschork Date: Wed, 22 Feb 2023 09:06:46 +0100 Subject: [PATCH] syncro --- EXPLOIT - backup activepos_read.sql | 16 + EXPLOIT - broker stats.sql | 19 + EXPLOIT - check last jobs status.sql | 5 +- ...sql => EXPLOIT - get autogrowth events.sql | 0 ....sql => EXPLOIT - list databases sizes.sql | 0 EXPLOIT - search a proc in all databases.sql | 39 ++ .../v15/.ssms_suo | Bin 34816 -> 51712 bytes ...BA-414 - proc to align indexes.ssmssqlproj | 12 + .../generate inserts.sql | 90 ++-- OCTPDBA-414 - proc to align indexes/proc.sql | 117 +++-- OCTPDBA-414 - proc to align indexes/table.sql | 275 ++++++++--- OCTPDBA-414 - proc to align indexes/test.sql | 432 ++++++++++++------ .../.gitignore | 1 + .../v15/.ssms_suo | Bin 0 -> 59904 bytes .../EXPLOIT - broker stats.sql | 19 + ...BA-496 - Validate ssl deactivation.ssmssln | 21 + ...96 - Validate ssl deactivation.ssmssqlproj | 40 ++ .../SQLQuery6.sql | 42 ++ .../check sql server logs.sql | 49 ++ .../last backups.sql | 52 +++ .../todo.txt | 119 +++++ ...- check ama azCust rows missing in SUN.sql | 47 ++ 22 files changed, 1081 insertions(+), 314 deletions(-) create mode 100644 EXPLOIT - backup activepos_read.sql create mode 100644 EXPLOIT - broker stats.sql rename SUP - get autogrowth events.sql => EXPLOIT - get autogrowth events.sql (100%) rename DBG - list databases sizes.sql => EXPLOIT - list databases sizes.sql (100%) create mode 100644 EXPLOIT - search a proc in all databases.sql create mode 100644 OCTPDBA-496 - Validate ssl deactivation/.gitignore create mode 100644 OCTPDBA-496 - Validate ssl deactivation/.vs/OCTPDBA-496 - Validate ssl deactivation/v15/.ssms_suo create mode 100644 OCTPDBA-496 - Validate ssl deactivation/EXPLOIT - broker stats.sql create mode 100644 OCTPDBA-496 - Validate ssl deactivation/OCTPDBA-496 - Validate ssl deactivation.ssmssln create mode 100644 OCTPDBA-496 - Validate ssl deactivation/OCTPDBA-496 - Validate ssl deactivation.ssmssqlproj create mode 100644 OCTPDBA-496 - Validate ssl deactivation/SQLQuery6.sql create mode 100644 OCTPDBA-496 - Validate ssl deactivation/check sql server logs.sql create mode 100644 OCTPDBA-496 - Validate ssl deactivation/last backups.sql create mode 100644 OCTPDBA-496 - Validate ssl deactivation/todo.txt create mode 100644 TMP - check ama azCust rows missing in SUN.sql diff --git a/EXPLOIT - backup activepos_read.sql b/EXPLOIT - backup activepos_read.sql new file mode 100644 index 0000000..a229974 --- /dev/null +++ b/EXPLOIT - backup activepos_read.sql @@ -0,0 +1,16 @@ +EXEC msdb.dbo.sp_start_job @job_name = N'D91030 - Backup ActivePos_Read' , @step_name = 'Purge old ActivePos_Read backups' + +WAITFOR DELAY '00:00:05.000' + +WHILE EXISTS( + SELECT sj.name + , sja.* + FROM msdb.dbo.sysjobactivity AS sja + INNER JOIN msdb.dbo.sysjobs AS sj ON sja.job_id = sj.job_id + WHERE sj.[name]='D91030 - Backup ActivePos_Read' + AND sja.start_execution_date IS NOT NULL + AND sja.stop_execution_date IS NULL +) BEGIN + PRINT 'job is still running '+CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 120); + WAITFOR DELAY '00:00:05.000' +END \ No newline at end of file diff --git a/EXPLOIT - broker stats.sql b/EXPLOIT - broker stats.sql new file mode 100644 index 0000000..4f01339 --- /dev/null +++ b/EXPLOIT - broker stats.sql @@ -0,0 +1,19 @@ +SELECT qm.database_id, + qm.queue_id, + q.[name] AS queue_name, + qm.STATE, + qm.last_empty_rowset_time, + qm.last_activated_time, + qm.tasks_waiting + FROM sys.dm_broker_queue_monitors qm + JOIN sys.[service_queues] q + ON q.[object_id] = qm.[queue_id]; + + +SELECT * + FROM sys.dm_os_performance_counters + WHERE object_name LIKE '%Broker Statistics%' + AND [counter_name] IN ( 'Corrupted Messages Total', 'Activation Errors Total', 'Dropped Messages Total', + 'Enqueued Local Messages Total','Enqueued Transport Msgs Total', 'Forwarded Messages Total' + + ); \ No newline at end of file diff --git a/EXPLOIT - check last jobs status.sql b/EXPLOIT - check last jobs status.sql index 7df38d4..fa1c73c 100644 --- a/EXPLOIT - check last jobs status.sql +++ b/EXPLOIT - check last jobs status.sql @@ -16,7 +16,7 @@ Modifications: =============================================================================*/ --If @allJobs is set to 0, then only a subset of jobs are checked (see insert into @jobs) -DECLARE @allJobs BIT = 0; +DECLARE @allJobs BIT = 01; DECLARE @jobs TABLE ( [name] sysname NOT NULL ,[job_id] UNIQUEIDENTIFIER NOT NULL @@ -83,5 +83,4 @@ SELECT JOIN [msdb].[dbo].[sysjobs_view] [j] ON [ja].[job_id] = [j].[job_id] WHERE [ja].[session_id] = (SELECT MAX([session_id])FROM [msdb].[dbo].[sysjobactivity]) - ORDER BY [job_name] - ,[job_status]; + ORDER BY [job_status] DESC,[last_run_status]; diff --git a/SUP - get autogrowth events.sql b/EXPLOIT - get autogrowth events.sql similarity index 100% rename from SUP - get autogrowth events.sql rename to EXPLOIT - get autogrowth events.sql diff --git a/DBG - list databases sizes.sql b/EXPLOIT - list databases sizes.sql similarity index 100% rename from DBG - list databases sizes.sql rename to EXPLOIT - list databases sizes.sql diff --git a/EXPLOIT - search a proc in all databases.sql b/EXPLOIT - search a proc in all databases.sql new file mode 100644 index 0000000..5e3b1ae --- /dev/null +++ b/EXPLOIT - search a proc in all databases.sql @@ -0,0 +1,39 @@ +USE master + + +/* declare variables */ +DECLARE @variable VARCHAR(100) + +DECLARE lookupCrs CURSOR FAST_FORWARD READ_ONLY FOR SELECT name FROM sys.databases d + +OPEN lookupCrs + +FETCH NEXT FROM lookupCrs INTO @variable + +WHILE @@FETCH_STATUS = 0 +BEGIN + DECLARE @q NVARCHAR(MAX) = ' +use '+@variable+' + +SELECT + DB_NAME() AS [db_name], + name, object_id, principal_id, schema_id, parent_object_id, type, type_desc, create_date, modify_date, is_ms_shipped, is_published, is_schema_published +FROM sys.[objects] +WHERE [name] LIKE ''%sp_ReplCustom_Address_ins_C%'' +AND [type]=''P'' +; +'; +PRINT @q +EXEC [sys].[sp_executesql] + @q + ,N'@db varchar(100)' + ,@variable + ; + + FETCH NEXT FROM lookupCrs INTO @variable +END + +CLOSE lookupCrs +DEALLOCATE lookupCrs + + diff --git a/OCTPDBA-414 - proc to align indexes/.vs/OCTPDBA-414 - proc to align indexes/v15/.ssms_suo b/OCTPDBA-414 - proc to align indexes/.vs/OCTPDBA-414 - proc to align indexes/v15/.ssms_suo index bc3af92ffca28c58f3eafc6dd4d9cc5133479335..9516d7dd1dd6745d2d78a792cf1864e09aa39af1 100644 GIT binary patch literal 51712 zcmeHQTZ|jmd7iZ!TXte6t{ta!(}al?N2@H?tiB>CnS5A;HrMcwniW0S4 zlU!M{b`_ye+lQt=@{*z#AZ`58m!>FCpnd2=ffg+aq;b#|4GJ_sf);t~Q(t5C`_9bS z8O{#L8FFTJDe(|zW;iov{&V@yfBxG!=SS~7^V2{5%NKs8*uq)mQRV&nPbiOB?$24S zm5(UOFX8_qi0|LOf1i)|9G9~&MK$oc(#Ef+M3l0!g>y%_#in!}o>xAw-{!=JVIlGd z&;8C%3jaCxB3`=t3H{AWfY?^9D(3-x16O6`=CDs3c=kLn&|2LGUU0Z^3HN}$B1rgz zyREd4gN~vhuA(k#h??=<5ReP8u6pXvnP%76ULeE ze-YQehWIOpzlz9o3?Ik!FC*&z4jx&C&mgKp-Z_{`zmq_kB;w~0(})?wEMgAv6yj;b zGl;Jso<(GyK7=z<7jP~c*Zltl&d_2tkU$!gH9KWsqc}==*zeoDddu)HUJ83%WlI_oN zfjC22Dd|6Pg7_f6!=dMsh!Mn3A$}T>Jb`TgmvH@A#1n|~h$j)5b^+%o;v(Y9h%v-C zBF76!|5Lb@^k2f0XDj{ZIB^b4FnlRjvpgtcQ`5oKaVQZQzmo&m(v$+hE{}mIvesNbeZl0E9JB2Q6hC=bOj@ z`M(>;Pkki!N8Ej6jy#d%CB#QZ9LSfjuQ8DCB$wF%?^gpKxCFQ@{O^Lh&^cob`RD;Z z+jxU-@@Uq|DZpo+V}Ej6|DVIV#|-|{ipR75|M2zy5-@5VJ#7;|V&Rv8e_Oz>p6G=d z=;Jni%L4nF#$BM#enmY%4;>3n=?4Ec|;$j^-mSVixy z8-1NLry*Kl@j!kSK_T0yfrg+2JE)bO$k17%{v-J3w)~V`B>kJw|A(9Y+xtJqpDkb+ z`@;_U+^8{d9Q>!wfxIHaVEDJt+c_e)^cM#l0e_BsCV5J?_|Gvk`uzB{D z(x0~{fp1MayMFj;Kw{u2r2;;vE4Ys?u6IBSR7luaXi{VNRSZtBg!|NtR|G#&SHAMz zlj0Mm1la{Q^@d0jhol}861pPnNN<97vBNnI>APP7bxu#&r~;}<>b#AsJCM-2NJ~D7 z`llzLiMoe#@l>Uu-KeatF0V$mJMF7lz1OX*6xS}53i)UgK(%Ia$uDyzMAM{8U{QMJZS2j#16 zcdM(nw(3_p?P`9br**2U+giQ3(X3a`Z#8?>Qmt33UaxiW#7k~c`=#!f+3{ZcY!feF z_o3dI1nQ=?rFCjO4XxePI=${#IUpZCHrDmDZqEx;HNBuFbu4?!gzKXDceWdg0^!f= z`0fR0F20aX=|JBe4z#mV?*ZE?F|}GMRBvdVZnM2rRTI^Cwb!olLiGYTl}awC2?O-q zVW2N>H_(oiM67zL-R&(mH_@yBy;|=yw?P2ZSXC6hYV>w5nTV%S3u;_1{$y><{_X{G zW+7>`wXOpqU0wkVT?4;X0`1E~8%kN4;oWD>J$v%^E?sJakBfjpw{axRY=WcP!nMxT zYtS}Pg0A2Vo_h!Q@0t7`j{N`MM@0VjqJN;KwgF$W92qU(33Nvh4`y=TSoXBXq!TIKh=Uh#C49 z$vMjV!_L<753~PMHyl@J(HI;k|I*$<8$I(d_)YT(iTH0Bf9>+;O#XkkR+7T>sFoya?ud>p<(%v`tN5wz^A{EgpW%R>~h(($bTG1XY!v50bnNo z9hCWJ@?UJ_TlfC&&R4(j)VqfKK>6h4oB|$**1*x4AbWbdhDJ3cl|_8(EuqUNrTlF} z6GR$!1JcMUe#?jv&|Rz5+ezX{f+tGi&FKEybzHfTcxtdG(6(;oh2AYcoFFd=*dJ3y zUW#JOq!!&OZAAn>sq57vr~}=rlsc|9_{)ew{#W|llKbUzJ(m^1c~WlUJ)R@TyL{IQ zgCn(BCJGko4w^P+ie3_&^$uX^-?myBF5y{M@a8(#?PLoe|4aWL`uDgU|H#pVv<|<^o9GP z;eWA$wz>-3-vr*)y*IJb|?fQ1*&W&y=Un(r#ye_PAkDb}tX|?E1>*Wi@SUlnQg_qst zAz#cnen9k*9ncVK?~t^iAt=kXrKhmmj~o2M2MrAD|)wVV$AHJxz)zm`V(DsF^Y0Ji??tW)b z0SDL+*nb$_HO5avVW;18aqP1}c-02S)#RH8O)AcWejB8=-*n?_Qi)?oi-Qy`LJ*>9 z_$T*UKX~Qoc=m^>zxda)#lQJCmWhPM8ejv-s_ET>#if^xLFg3ccNWyFu3Ei|SBG}K zVHiFMBNtDn7yLjvuO^ISY$2Y}%Wg4Z9OUE!RBdM#K<623HZAd2e-exB?H&#N|DK5; zp;pqqsVQ8NWGeq*Q4CK1UqlzDzO@URZ4*4;+XuK1RQr%H&ip4U|8*H-HfLSYvyJ+W zetoPH$Jw75@IQUzsQ;<+KQHj94;mJzf3=drVeiUkUf@$dbVEoyGIjr%{O2U_Uq!1o zMBQ&e{%WB$me3k4afkBXs6hUcx;&YOQSbA)wfqINJY^>Gzw|hx@0s*;lmphVZ;n&{ z^w*{zKZ7&>&v}rnh0&f+kUu=vKSxEW|Fq+~EIaKF_PjASl+vsL`adzRhB5`)!1`>^ zHGTCdB{JCM_nG|fMHlfP$p3c#Z!(EfrT?Fs>Hqb)wQl>rRsZkOw<#s%qZ^;RHf)rFMdRrQTwkOO3rQ}MJcyjS6HBH=C(OD-hRx_~g4|04}&kn*Qj{}1|3 zOZ}M?KWF-1x4P&Dk^WQDOg*)}5`v5QKl{9&TlzztiR3@5`sOj`|9FPa{z4v%!H4-j z!vEq$e9LY5{ht3rdve4B{1v<_?Z1>StnPu9OsYzfbN>R`gM$LcwrwEchjzwTt- zLG?r4hmm2Nya3OhRNndOAKg*^cIQjqJpMmFZhq_M|6u*l&wB5FulUzLdgl8tD1Y+L zAHM(h)@M3c^Z1DJ8%5|Gtp2^Dtlcjl1A6}PVWhYF2aihc>>o^Pau@1<9%;3gR{2MR z25@(diWe?ORWTHioc_xR@X`c*`hW|xzeT)hX5cmGqv!=ey=WIJ2nAcWFD(O5S2&-w zP~~*7)ld_3N3~8yo>N@D_+0~|iEzhcq4?+CoNhDHJA41P73DYko`&U`p*y2XCx**L z)?ek!BkM1^|8Mw}H4U#B?DzD$Tq%lv^aY?>0yCbX@GU9eUJ6%P+*9#C3LlLm%x4*x z#&Y<@@IQ@bNo7y?{w<@CS^`B^apXE0J>1#e*JX3nDcuTo8fg^eHojEGcM5=#pAh~c z^rde@Q)q>&Yb~u%Ng?{*>DN2*-D3*ZUGXz-r^V`9etvNgt)Rhgre@UmBCe@H)-_fI zv_b=Au-A4Tt+<35&!G0p(517rd7Z#j9KRA;G>VqsGvWd>-Y&a9zSxPP9L-61b}ZuZVkD#5Ddfom;3})#NtP`3Kco zUDE?MZ;d7rF)>2*e{I*+lBbn}bMh9u-RoWWqrtLzb$5Vm*hmAooC`S!a?S?JMjvIC zl=C#JcrIuARPl^<6gk^Rl2xaC7U75WEL!O?<$H6bQ!)H*=hdZhCRvV03z=jh8jqJ^ z(R?|chfz2mE9PQLOH0MX-tL*@X1Bi7#0gW6{Fq)VxB+TFdqo~or{X>A<<*R^Oe zlU1X+T09$7<7zrpSL?OddUEg2C(h$RrR6xP!`<73R36za7m(dT*~o5QX1Ayo^RYs5 z@7(~h>t4s|GL!!#GnpypP^wHmS|}#eXtIz=MYBaU87(JEnRG4}E2oRez1;zRFjiHk zn||v8H}$>;v?@} z{PEc<=ca)^d{8M(LpC##?!lYzM2qf~^NaaT^PToqEpnn*zPR>!{=)f-ORwkmoiQUP zQn~s0?E!GfDtOC(d#q?*k}bLqxLG^N!x61k+NCDOS? z_!>Dokd+=7>Xa4J{b^qJ&<1HV`q&8z<2Rlpy_2@yv{Af*6S=gsm%cv2z&@Ie&(Gf; zyVfU%z3eOONgMyjkHFwYVqNLkSDCH93qzye~a#qo4eGf0SZlT);Ykdp>(Ie~&195B&*b}yW zA-cMz>j6^hT2gDQC!<<6osA}Q>xpPKmsyWC)JAS2mdZ9XwZ2#Q_C!LBt0_mhWI8X_ zO>rq_g^{OZKCUlibAIqFP6k>-l`7$IOzpnL%f(tq_`;T{L`hObNX8M2s z_5WF+<r@C;M_!gcWVNp=bI`PD!}|6A4-9>Pk>G(T z%XrG+*tl9{B$V0-@204I1^9##YH8Z~(S%y%4AhK=rBx>Eqoq}z20}lMeUGM|Q0;pJ zc=-0cBhOe&Y9vTy!ZZ>P+RR8W+B3&bBLPTc$VLJ{l*8~rb+u~;p-G3~DU-7bBa8$i zY`e4tz2m2z-eMzg0eWU47`iIi%tYXB^|o8eVJv+ojjGp&8gfU!Cj8r`km`@s^uz2T-Uh)Pjsf%S6ZbP_@c#=o2$T#_Ty&% z8nyq9w9?w0e3_PETGxM`?f=8=j-0qacl-a8(f0mRGAy$9gaQ2beI^0n^*l}i(b&%_r*}^>$xdO7c)m`5-=Hkeegmo(GZf7%Rj)SxI%$Yy> zoMHc=6h!|q+lO-%{l|k8@W2Ce$E9M(+%f+9$;bXnGI)~tEB)i3LFSNWlI*X{>2lsf zMkcU`Xrp{VsdyPT-S}EKnbGk@`Ea?a8UIIK?=}ZJ&+kZM!!2DTyvY2p6 zfxzKj1Dri;!g(9S{}}v_P^d#A$OK7<>6B6_PrC_${x;hUWyb1%s$N7^#0cYXWMgcH4{!Y5IA}twwC8iAaF?c zVtq6z6$l)*PY(3lthZMJfs+B0EU2sr=d*#pVf*C3ZJTfsfxzL44_t%7gmVgT{?L$5 zsNxH=t-BwXKRawQ@FG@6LZJqKdT_ti9nxAaDx8 zH`v-6RG;9u)q$6Rz1$kYY&q)q{jX83fs*Z$u(`YCJzGEVvPScG%R^PLx&{|bs#{7- z4`=^NOwO3J!K~Sj1p+4r>eJ61bKPYB%aa7v<{C6+dFWs4KOC-|#4*o=!+jY4><}=8 zJH&Fu6>s}=aTRv|YbArelfal})(ThKR4}&aE4j)w^()4ny4>w_8&B_G{OKZP8klI+ z41Ok%T;>2H(KqUz3=vwOIA_{@P;h4r%p3GYRXh3jSB5Uh%?=Szch%}gdky#$D zG3!4Z_F=B2X2Rj#4F1F6YG3(2Jje$EhofYvuih2{fkPcMXA_zAmIj=|7$xm?QhjA* z|67nXo9ok6eLj$yCI7+I{>+-?YR&$a=jiW?>3^9?Q@FC8S-12J@gEM?L*qDT!r|_e ze|!j>fm?mIqRb11_37=iHBoTzh>ZgAmwqEtp3W@ zE8J)xxPszvPnH^Z$}ZLrY2rCo zV$`=Ptb#k`?qqrzvp;jkRsUPOg#4BJ=*G)|z{z49i}#IX)WRRe=pB}fn+La&gS2M0 z;3op9SxUHE!_|cIsX*W?foIM2!TEF`aA-N>DzIjG&IJPJLDNAj0S`FC-mJGz22yWf z={lCcITicl@(jvzClK0A4;wdLhzfc@5L9@k*J(i?vxc$Js+pmb+|N66$G^$PK(6ku zpr0IN?(-=5f3Y80E&ue)^5070nRw_+K8v3CAzP$ z!m?x0-!TlkTv&F-uJ*?6=CtXX3TrmXZB7qGwxxu%Y|hxBP~BXkH?u^ z&h$zP%Ptp|RVOSfm9y3DFu0Mh?2KXA%fhlRh2^vBZ2x;O?Mu$KH2=Asuxx|Q_A>v= g<7|PN`CB{tTZ2)bieR@14e}qKio(n?>A42}AGzFT!vFvP delta 3340 zcmb`JdrVu`9mnsv*won9#FUo<=AD*DfY|0~$OB{NMKU1Gi&r|JK+=u0DL7eT(qKA9 z!ctgZI#-hP1CxeE!iJy6h*2ufz(B6yzlSAC8k;a znABr^e9!rvbI(1$@A>`Cy`i&Fp)q;PnI=n1#U@EsRJnaW91gQJigp>Rf7X6nOvpQh zjk4s7*eflupMFsFiAX~CyEzn;gW~(NAlH-6=9<`H5KcM~wL?+Rn*%UUm}YHj;try5 z(}+J5Gx%bBSMr3}Kx0OOClPH6hyna$Etx3VS3f=%}*W#B(p3%4tCv6lHYOT2I$yS2PRSCeyvdI)%qX?yMR}IwL$o z81NGKHW&uq0VCjLa2kw)?*d+>wx*@}eO1`s7ZX+2`7tzK)u3Gi)eTm`qOkM&qAV;r zYl)(UEBwN$b#d_MLnz>BAYb-|31yp!w_dl49=KR<)k2%&cG=zyKN}RDm?d5|cfs)n zg}0q|K{s1E(3k`$6fW9s;tnpXq9#$mO2OjoR>1*o0(vLS7dI*#y{jUPfpv|Vnw)g{ zNF#eKtN+Q`A(SXoIR*4S3gk2@9BP~=x>5NS8mu;#3G>Ia#%!aT20MLjuAxe!eQ+=A z`@nwC1e!q$Xa#NH0C*aF9kc^>vJ*T5xS4z)>{f^k9RD5|U!mkIM6%^4i}%02(@%K0JM$|=hn|I8uG z7`fJ7v=4(Ic*I&)EcH0Xod7)R0Iny&i{KO(1R)NB4L7tMfhYv|_{Ovl|swhi_b-KajJ>6dA3ShzQW~f_#++ zXxfuQ*SCC4wI!&6b82F{;jty5>DE{>?Hf*_HP>FHizCzY)=yKclk#G88YH81j^1-* zQju%-M3rCRjN=pQ!Sky=T1wJ07q-bXo|aDMT`^SW*g%76PIFnI^W>I}-u~`>%(9+- zJ8GgIIPwgo?!r=9pXL@4c}q6YcyB8G!~F!kTT(-rmrhg7`<2!gPgc70n@6;pV^V7^ zF1K4Z(r4)fk2j1B&!1`;w7wBn6JPL3V`G0e4J8%ZzHElkd3B>tJYp+2jaKBgb|}M$ zg5367my=BQ+n9r{ayn65XBB+r@OiEGA;0&S9?ET2j&oQaWzljQ1{5{y^K1L^AQ|cu zj*U#9-w?f+9qPUK-|Ks*e!lge#)Q`}NGxIMLpVP#1xTqsLHB=TqZ2)?bfqVK6~7t= zqzY-X{g95mANWJ)F zqTYcMsu$LNwEB_dL8+TEhH`OdlBFCQ!$L+&zoVI!b6No2J)K9F_q)V!(?yc^ zK~Nex=B4SjSUQ}VP7C|X#LDp>HvP?5QI?;7gyPDQuh#uFD)qhpp}MvWZweZFy^kE1 zN+JHOZHClE*a9!a^`ce^TM4$J2v^}K+qQ!Unq*|KU zweBmMYf=1TmH^&BESW+2izZo2YASu&maECMQWO@?(G)9Ij5EYY{uKtXjoMr(6dWip zmY3(}uWapxo*s%xO`(N>8r9qNj-Z@VYbma4o$QZ%Sesn#p}Ns>x_5LVHnEm$ozXPi za$l}+(sXMDzFLa=M%3A+4@D|}&2XX#FkR|s_Toi!1d4SaD`uzqsphU-Y!q@u1uqI0bzNVX5I(xqpF!=TSq4PVNzLP%`xEH(0~R*o z!zwE1GO zm_ISn;MNW5!a%beA**`#bb^48Mmv8yvL4Kz3Zmzf`hm$a=08_asL)OA*PdQ}FPw#_ ze6qE7 z{y3Fr{BQ}9F2=N^yF^31*%V4MQGIi)wgI>@=K!!tsEKZ#dKT*NV<_R{d#U(@AZ u9-_-X{1@vxbG77rIpNXox&H#NH0p~0 diff --git a/OCTPDBA-414 - proc to align indexes/OCTPDBA-414 - proc to align indexes.ssmssqlproj b/OCTPDBA-414 - proc to align indexes/OCTPDBA-414 - proc to align indexes.ssmssqlproj index c3cb7d7..6d20554 100644 --- a/OCTPDBA-414 - proc to align indexes/OCTPDBA-414 - proc to align indexes.ssmssqlproj +++ b/OCTPDBA-414 - proc to align indexes/OCTPDBA-414 - proc to align indexes.ssmssqlproj @@ -15,6 +15,18 @@ NotSpecified Microsoft SQL Server Management Studio - Query + + 2023-02-14T14:36:15.2187218+01:00 + SQL + swdba01.centralinfra.net\PGALDBA + + Windows Authentication + + 30 + 0 + NotSpecified + Microsoft SQL Server Management Studio - Query + diff --git a/OCTPDBA-414 - proc to align indexes/generate inserts.sql b/OCTPDBA-414 - proc to align indexes/generate inserts.sql index 42350b7..d37cf56 100644 --- a/OCTPDBA-414 - proc to align indexes/generate inserts.sql +++ b/OCTPDBA-414 - proc to align indexes/generate inserts.sql @@ -1,14 +1,14 @@ USE Arizona; GO -DELETE FROM upd.IA_IndexesAlignementActions +DELETE FROM upd.IA_IndexAlignementActions WHERE IA_schema_name = 'dbo.Criteria'; BEGIN TRANSACTION; WITH ColInfo -AS (SELECT TblName = o.name, - SchemaTbl = s.name + '.' + o.name, - IndexName = i.name, +AS (SELECT TblName = [o].[name], + SchemaTbl = s.name + '.' + [o].[name], + IndexName = [i].[name], s.name AS schemaName, IsPrimaryKey = i.is_primary_key, IsUniqueConstraint = i.is_unique_constraint, @@ -21,29 +21,29 @@ AS (SELECT TblName = o.name, END AS is_clustered, ColName = c.name, IsComputedCol = c.is_computed, - IsIncludedCol = ic.is_included_column, - ic.key_ordinal, + IsIncludedCol = [ic].is_included_column, + [ic].key_ordinal, FilterDefinition = i.filter_definition, i.object_id, i.ignore_dup_key, i.fill_factor, i.is_padded - FROM sys.objects o - JOIN sys.schemas s + FROM [sys].objects o + JOIN [sys].schemas s ON o.schema_id = s.schema_id - JOIN sys.columns c + JOIN [sys].columns c ON o.object_id = c.object_id - JOIN sys.indexes i + JOIN [sys].indexes i ON c.object_id = i.object_id - JOIN sys.index_columns ic - ON i.index_id = ic.index_id - AND o.object_id = ic.object_id - AND c.column_id = ic.column_id - WHERE o.name = 'criteria' + JOIN [sys].index_columns ic + ON i.index_id = [ic].index_id + AND o.object_id = [ic].object_id + AND c.column_id = [ic].column_id + WHERE [o].[name] = 'criteria' AND s.name = 'dbo') SELECT DISTINCT ' -INSERT INTO arizona.upd.IA_IndexesAlignementActions +INSERT INTO arizona.upd.IA_IndexAlignementActions ( IA_executionDate, IA_schema_name, @@ -65,16 +65,17 @@ INSERT INTO arizona.upd.IA_IndexesAlignementActions IA_actualColumns, IA_actualIncludedColumns, IA_statusMsg, - IA_index_options + IA_index_options, + IA_reference ) SELECT NULL as IA_executionDate, - ''' + x.schemaName + ''' as IA_schema_name, - ''' + x.TblName + ''' as IA_table_name, + ''' + [x].schemaName + ''' as IA_schema_name, + ''' + [x].TblName + ''' as IA_table_name, ''' + c.IndexColumns + ''' as IA_columns_name, 0 as IA_is_clustered, ' + CASE - WHEN x.IsUnique = 0 THEN + WHEN [x].IsUnique = 0 THEN '0' ELSE '1' @@ -87,7 +88,7 @@ SELECT END + ' as IA_included_columns, 0 as IA_is_to_be_deleted, 0 as IA_is_to_be_recreated, - ''' + x.IndexName + ''' + [x].IndexName + ''' as IA_expected_index_name, NULL as IA_foundIndexName, 0 as IA_wasIndexFound, @@ -100,28 +101,29 @@ SELECT NULL as IA_actualIncludedColumns, NULL as IA_statusMsg, ''' + CASE - WHEN INDEXPROPERTY(x.object_id, x.IndexName, 'IsStatistics') = 1 THEN + WHEN INDEXPROPERTY([x].object_id, [x].IndexName, 'IsStatistics') = 1 THEN 'STATISTICS_NORECOMPUTE = ON, ' ELSE 'STATISTICS_NORECOMPUTE = OFF, ' END + CASE - WHEN x.ignore_dup_key = 1 THEN + WHEN [x].ignore_dup_key = 1 THEN 'IGNORE_DUP_KEY = ON, ' ELSE 'IGNORE_DUP_KEY = OFF, ' END + CASE - WHEN x.is_padded = 1 THEN + WHEN [x].is_padded = 1 THEN 'PAD_INDEX = ON,' ELSE '' - END + 'SORT_IN_TEMPDB = OFF, FILLFACTOR =' + CAST(x.fill_factor AS VARCHAR(3)) - + ''' as IA_index_options + END + 'SORT_IN_TEMPDB = OFF, FILLFACTOR =' + CAST([x].fill_factor AS VARCHAR(3)) + + ''' as IA_index_options, + NULL as IA_reference WHERE NOT EXISTS( SELECT 1 - FROM arizona.upd.IA_IndexesAlignementActions s + FROM arizona.upd.IA_IndexAlignementActions s WHERE s.IA_executionDate IS NULL - AND s.IA_schema_name = ''' + x.schemaName + ''' - AND s.IA_table_name = ''' + x.TblName + ''' + AND s.IA_schema_name = ''' + [x].schemaName + ''' + AND s.IA_table_name = ''' + [x].TblName + ''' AND s.IA_columns_name = ''' + c.IndexColumns + ''' ' + CASE WHEN ci.IncludedColumns IS NOT NULL THEN @@ -131,37 +133,37 @@ WHERE NOT EXISTS( END + ' ) ' AS cmd, - x.IndexName, + [x].IndexName, c.IndexColumns, ci.IncludedColumns FROM ColInfo x CROSS APPLY ( - SELECT IndexColumns = STUFF(sq.strXML, 1, 2, '') + SELECT IndexColumns = STUFF([sq].strXML, 1, 2, '') FROM ( - SELECT ', ' + ISNULL(x2.ColName, '') + SELECT ', ' + ISNULL([x2].ColName, '') FROM ColInfo x2 - WHERE x.TblName = x2.TblName - AND x.schemaName = x2.schemaName - AND x.IndexName = x2.IndexName - AND x2.IsIncludedCol = 0 - ORDER BY x2.key_ordinal + WHERE [x].TblName = [x2].TblName + AND [x].schemaName = [x2].schemaName + AND [x].IndexName = [x2].IndexName + AND [x2].IsIncludedCol = 0 + ORDER BY [x2].key_ordinal FOR XML PATH('') ) sq(strXML) ) c OUTER APPLY ( - SELECT IncludedColumns = STUFF(sq.strXML, 1, 2, '') + SELECT IncludedColumns = STUFF([sq].strXML, 1, 2, '') FROM ( - SELECT ', ' + ISNULL(x2.ColName, '') + SELECT ', ' + ISNULL([x2].ColName, '') FROM ColInfo x2 - WHERE x.TblName = x2.TblName - AND x.schemaName = x2.schemaName - AND x.IndexName = x2.IndexName - AND x2.IsIncludedCol = 1 - ORDER BY x2.key_ordinal + WHERE [x].TblName = [x2].TblName + AND [x].schemaName = [x2].schemaName + AND [x].IndexName = [x2].IndexName + AND [x2].IsIncludedCol = 1 + ORDER BY [x2].key_ordinal FOR XML PATH('') ) sq(strXML) ) ci; diff --git a/OCTPDBA-414 - proc to align indexes/proc.sql b/OCTPDBA-414 - proc to align indexes/proc.sql index 40eb451..6433a28 100644 --- a/OCTPDBA-414 - proc to align indexes/proc.sql +++ b/OCTPDBA-414 - proc to align indexes/proc.sql @@ -1,5 +1,3 @@ -USE Arizona; -GO IF OBJECT_ID('upd.alignIndexes') IS NOT NULL DROP PROCEDURE [upd].alignIndexes; GO @@ -61,7 +59,7 @@ BEGIN DECLARE @tableName VARCHAR(100); /* used in cursor */ DECLARE @indexFK INT; /* used in cursor */ DECLARE @msg VARCHAR(MAX) = ''; - DECLARE @indexesToMaintains TABLE + DECLARE @indexesToMaintains TABLE /* working representation of upd.IA_IndexesAlignementActions */ ( [IA_indexesAlignementActions] INT NULL, /* FK to table upd.IA_IndexesAlignementActions */ [SchemaName] VARCHAR(100) NOT NULL, /* the schema the table is part of */ @@ -104,26 +102,26 @@ BEGIN [IA_indexesAlignementActions], [SchemaName], [TableName], - expectedIndexName_inp, - columnsName_inp, - includedColumns_inp, - isClustered_inp, - isUnique_inp, - isToBeDeleted_inp, - isToBeRecreated_inp, - IA_index_options + [expectedIndexName_inp], + [columnsName_inp], + [includedColumns_inp], + [isClustered_inp], + [isUnique_inp], + [isToBeDeleted_inp], + [isToBeRecreated_inp], + [IA_index_options] ) - SELECT ia.[IA_indexesAlignementActions_id], - ia.[IA_schema_name], - ia.[IA_table_name], - ia.[IA_expected_index_name], - ia.[IA_columns_name], - ia.[IA_included_columns], - ia.[IA_is_clustered], - ia.[IA_is_unique], - ia.[IA_is_to_be_deleted], - ia.[IA_is_to_be_recreated], - ia.IA_index_options + SELECT ia.[IA_indexesAlignementActionsID], + ia.[IA_schemaName], + ia.[IA_tableName], + ia.[IA_expectedIndexName], + ia.[IA_columnsName], + ia.[IA_includedColumns], + ia.[IA_isClustered], + ia.[IA_isUnique], + ia.[IA_isToBeDeleted], + ia.[IA_isToBeRecreated], + ia.[IA_indexOptions] FROM [upd].[IA_IndexesAlignementActions] ia WHERE ia.[IA_executionDate] IS NULL; @@ -131,44 +129,44 @@ BEGIN /* logic checks on index definition table */ SELECT @msg = @msg + 'Duplicate index (on expected index name) found in indexes definition. Table [' - + [itm].[IA_schema_name] + '].[' + [itm].[IA_table_name] + '], expected index name [' - + [itm].[IA_expected_index_name] + ']' + CHAR(13) + CHAR(10) + + [itm].[IA_schemaName] + '].[' + [itm].[IA_tableName] + '], expected index name [' + + [itm].[IA_expectedIndexName] + ']' + CHAR(13) + CHAR(10) FROM [upd].[IA_IndexesAlignementActions] [itm] JOIN ( - SELECT [ii].[IA_expected_index_name] AS [key] + SELECT [ii].[IA_expectedIndexName] AS [key] FROM [upd].[IA_IndexesAlignementActions] [ii] - GROUP BY [ii].[IA_expected_index_name] + GROUP BY [ii].[IA_expectedIndexName] HAVING COUNT(1) > 1 ) d - ON d.[key] = [itm].[IA_expected_index_name] - GROUP BY [itm].[IA_schema_name], - [itm].[IA_table_name], - [itm].[IA_expected_index_name]; + ON d.[key] = [itm].[IA_expectedIndexName] + GROUP BY [itm].[IA_schemaName], + [itm].[IA_tableName], + [itm].[IA_expectedIndexName]; --duplicate index key SELECT @msg - = @msg + 'Duplicate index (on column definition) found in indexes definition. Table [' + [itm].[IA_schema_name] - + '].[' + [itm].[IA_table_name] + '], columns in index: ' + [itm].[IA_columns_name] + = @msg + 'Duplicate index (on column definition) found in indexes definition. Table [' + [itm].[IA_schemaName] + + '].[' + [itm].[IA_tableName] + '], columns in index: ' + [itm].[IA_columnsName] + CASE - WHEN [itm].[IA_included_columns] IS NOT NULL THEN - ', included colum(s): ' + [itm].[IA_included_columns] + WHEN [itm].[IA_includedColumns] IS NOT NULL THEN + ', included colum(s): ' + [itm].[IA_includedColumns] ELSE '' END + CHAR(13) + CHAR(10) FROM [upd].[IA_IndexesAlignementActions] [itm] JOIN ( - SELECT [ii].[IA_columns_name] + '_' + ISNULL([ii].[IA_included_columns], '') AS [key] + SELECT [ii].[IA_columnsName] + '_' + ISNULL([ii].[IA_includedColumns], '') AS [key] FROM [upd].[IA_IndexesAlignementActions] [ii] - GROUP BY [ii].[IA_columns_name] + '_' + ISNULL([ii].[IA_included_columns], '') + GROUP BY [ii].[IA_columnsName] + '_' + ISNULL([ii].[IA_includedColumns], '') HAVING COUNT(1) > 1 ) d - ON d.[key] = [itm].[IA_columns_name] + '_' + ISNULL([itm].[IA_included_columns], '') - GROUP BY [itm].[IA_schema_name], - [itm].[IA_table_name], - [itm].[IA_columns_name], - [itm].[IA_included_columns]; + ON d.[key] = [itm].[IA_columnsName] + '_' + ISNULL([itm].[IA_includedColumns], '') + GROUP BY [itm].[IA_schemaName], + [itm].[IA_tableName], + [itm].[IA_columnsName], + [itm].[IA_includedColumns]; IF @msg <> '' BEGIN @@ -182,11 +180,15 @@ BEGIN /* fetch the indexes name and non listed indexes on the current instance */ - DECLARE curIdxName CURSOR FAST_FORWARD READ_ONLY FOR + IF CURSOR_STATUS('global','curIdxName')>=-1 + BEGIN + DEALLOCATE curIdxName + END + DECLARE curIdxName CURSOR LOCAL FAST_FORWARD READ_ONLY FOR SELECT DISTINCT - [itm].[IA_schema_name], - [itm].[IA_table_name], - itm.[IA_indexesAlignementActions_id] + [itm].[IA_schemaName], + [itm].[IA_tableName], + itm.[IA_indexesAlignementActionsID] FROM [upd].[IA_IndexesAlignementActions] [itm]; OPEN curIdxName; @@ -577,13 +579,6 @@ BEGIN FROM @indexesToMaintains [itm] WHERE [isToBeRecreated_inp] = 1; - --/* to be re-created because wrong index type*/ - --UPDATE [itm] - --SET [itm].[isToBeRecreated_comp] = 1 - --FROM @indexesToMaintains [itm] - --WHERE [itm].isClustered_inp = 1 - --AND itm.; - /* to be deleted, because specified in table */ UPDATE itm SET [itm].[isToBeDeleted_comp] = CASE @@ -609,8 +604,8 @@ BEGIN AND [exp].[isToBeRecreated_inp] = 0 AND ( - [exp].[columnsName_inp] != [act].[actualColumns_internal] - OR [exp].[includedColumns_inp] != [act].[actualIncludedColumns_internal] + [exp].[columnsName_inp] <> [act].[actualColumns_internal] + OR [exp].[includedColumns_inp] <> [act].[actualIncludedColumns_internal] ); UPDATE [act] @@ -619,8 +614,8 @@ BEGIN JOIN @indexesToMaintains [act] --actual ON [act].[indexName] = [exp].[expectedIndexName_inp] WHERE ( - [exp].[columnsName_inp] != [act].[actualColumns_internal] - OR [exp].[includedColumns_inp] != [act].[actualIncludedColumns_internal] + [exp].[columnsName_inp] <> [act].[actualColumns_internal] + OR [exp].[includedColumns_inp] <> [act].[actualIncludedColumns_internal] ); /* to be deleted, because different to specs. link on index columns */ @@ -630,8 +625,8 @@ BEGIN JOIN @indexesToMaintains [act] --actual ON [act].[actualColumns_internal] = [exp].[columnsName_inp] WHERE ( - [exp].[columnsName_inp] != [act].[actualColumns_internal] - OR [exp].[includedColumns_inp] != [act].[actualIncludedColumns_internal] + [exp].[columnsName_inp] <> [act].[actualColumns_internal] + OR [exp].[includedColumns_inp] <> [act].[actualIncludedColumns_internal] ); UPDATE [act] @@ -640,8 +635,8 @@ BEGIN JOIN @indexesToMaintains [act] --actual ON [act].[actualColumns_internal] = [exp].[columnsName_inp] WHERE ( - [exp].[columnsName_inp] != [act].[actualColumns_internal] - OR [exp].[includedColumns_inp] != [act].[actualIncludedColumns_internal] + [exp].[columnsName_inp] <> [act].[actualColumns_internal] + OR [exp].[includedColumns_inp] <> [act].[actualIncludedColumns_internal] ); /* if we have both "rename" and "delete" actions, remove the "rename" action */ @@ -794,7 +789,7 @@ BEGIN ia.[IA_statusMsg] = ii.statusMsg_internal FROM [upd].[IA_IndexesAlignementActions] ia JOIN @indexesToMaintains ii - ON ii.[IA_indexesAlignementActions] = ia.[IA_indexesAlignementActions_id] + ON ii.[IA_indexesAlignementActions] = ia.[IA_indexesAlignementActionsID] WHERE ia.[IA_executionDate] IS NULL; END; GO diff --git a/OCTPDBA-414 - proc to align indexes/table.sql b/OCTPDBA-414 - proc to align indexes/table.sql index 901b9e6..52b129f 100644 --- a/OCTPDBA-414 - proc to align indexes/table.sql +++ b/OCTPDBA-414 - proc to align indexes/table.sql @@ -1,82 +1,223 @@ USE Arizona -IF OBJECT_ID('upd.IA_IndexesAlignementActions') IS NOT NULL - DROP TABLE upd.IA_IndexesAlignementActions; +IF OBJECT_ID('upd.IA_IndexAlignementActions') IS NOT NULL + DROP TABLE upd.IA_IndexAlignementActions; GO -CREATE TABLE upd.IA_IndexesAlignementActions( - IA_indexesAlignementActions_id INT NOT NULL IDENTITY(1,1) - ,IA_executionDate DATETIME2(0) NULL /* The date and time the action was executed, null if the action is to be executed */ - ,IA_schema_name VARCHAR(100) NOT NULL /* the schema the table is part of */ - ,IA_table_name VARCHAR(100) NOT NULL /* On which table is the index, whithout the schema */ - ,IA_columns_name VARCHAR(MAX) NOT NULL /* list all the columns of the index, in the correct orders */ - ,IA_is_clustered BIT NOT NULL /* Is the indexe a clustered index ? */ - ,IA_is_unique BIT NOT NULL /* Is the index unique ? */ - ,IA_included_columns VARCHAR(MAX)NULL /* list all the included columns the index should have. */ - ,IA_index_options VARCHAR(MAX) NULL /* Give here the index options if any. they will be applied on index creation but they are not part of the delta checks */ - ,IA_is_to_be_deleted BIT NOT NULL /* must the script drop this index ? */ - ,IA_is_to_be_recreated BIT NOT NULL /* must the script recreate this index ? - If an existing index differs from the definition, it will be dropped and the correct one created. - Use this only to force the re-creation even if the structure is identical */ - ,IA_expected_index_name VARCHAR(500) NOT NULL /* the name the index should have, used to determine if a rename of the existing index should be done */ - - - /* everything below is a log of past changes */ - ,[IA_foundIndexName] VARCHAR(MAX) NULL /* computed by the script. The index name on this system, as indexes name can be different accross systems*/ - ,[IA_wasIndexFound] BIT NOT NULL /* computed by the script. set to 1 if the index is present on the server */ - CONSTRAINT DF_IA_wasIndexFound DEFAULT 0 - ,[IA_wasCreated] BIT NULL /* computed by the script. does this index was created on the server ? */ - CONSTRAINT DF_IA_wasCreated DEFAULT 0 - ,[IA_wasRenamed] BIT NULL /* computed by the script. does this index was renamed ? */ - CONSTRAINT DF_IA_wasRenamed DEFAULT 0 - ,[IA_wasDeleted] BIT NULL /* computed by the script. does this index will be deleted ? */ - CONSTRAINT DF_IA_wasDeleted DEFAULT 0 - ,[IA_wasRecreated] BIT NULL /* computed by the script. does this index will be re-created ? */ - CONSTRAINT DF_IA_wasRecreated DEFAULT 0 - ,[IA_includedColumnsMatch] BIT NULL /* computed by the script. Are the expected and actual included columns identical ? */ - ,[IA_actualColumns] VARCHAR(MAX) NULL /* the actual columns in the existing index */ - ,[IA_actualIncludedColumns] VARCHAR(MAX) NULL /* the actual columns in the INCLUDE part of the index */ - ,[IA_statusMsg] VARCHAR(MAX) NULL /* Message, used for debug */ - ,CONSTRAINT PK_IA_IndexesAlignementActions PRIMARY KEY(IA_indexesAlignementActions_id) -); -ALTER TABLE upd.IA_IndexesAlignementActions ADD CONSTRAINT DF_IA_is_clustered DEFAULT 0 FOR IA_is_clustered; -ALTER TABLE upd.IA_IndexesAlignementActions ADD CONSTRAINT DF_IA_is_unique DEFAULT 0 FOR IA_is_unique; -ALTER TABLE upd.IA_IndexesAlignementActions ADD CONSTRAINT DF_IA_is_to_be_deleted DEFAULT 0 FOR IA_is_to_be_deleted; -ALTER TABLE upd.IA_IndexesAlignementActions ADD CONSTRAINT DF_IA_is_to_be_recreated DEFAULT 0 FOR IA_is_to_be_recreated; - -CREATE UNIQUE NONCLUSTERED INDEX NCUIX_IA_IndexesAlignementActions_index_name ON upd.IA_IndexesAlignementActions(IA_expected_index_name); +IF OBJECT_ID('upd.IA_IndexAlignementActions') IS NOT NULL + DROP TABLE upd.IA_IndexAlignementActions; GO -INSERT INTO upd.IA_IndexesAlignementActions ( - IA_columns_name, - IA_is_to_be_deleted, - IA_is_to_be_recreated, - IA_expected_index_name, - IA_included_columns, - [IA_schema_name], - [IA_table_name], - [IA_is_clustered], - [IA_is_unique] +/* OCTPDBA-414 */ +IF OBJECT_ID('upd.IA_IndexAlignementActions') IS NULL +BEGIN + CREATE TABLE upd.IA_IndexAlignementActions( + IA_indexAlignementActionsID INT NOT NULL IDENTITY(1,1) + ,IA_executionDate DATETIME2(0) NULL /* The date and time the action was executed, null if the action is to be executed */ + ,IA_schemaName VARCHAR(100) NOT NULL /* the schema the table is part of */ + ,IA_tableName VARCHAR(100) NOT NULL /* On which table is the index, whithout the schema */ + ,IA_columnsName VARCHAR(MAX) NOT NULL /* list all the columns of the index, in the correct orders */ + ,IA_isClustered BIT NOT NULL /* Is the indexe a clustered index ? */ + CONSTRAINT DF_IA_isClustered DEFAULT 0 + ,IA_isUnique BIT NOT NULL /* Is the index unique ? */ + CONSTRAINT DF_IA_isUnique DEFAULT 0 + ,IA_includedColumns VARCHAR(MAX)NULL /* list all the included columns the index should have. */ + ,IA_indexOptions VARCHAR(MAX) NULL /* Give here the index options if any. they will be applied on index creation but they are not part of the delta checks */ + ,IA_isToBeDeleted BIT NOT NULL /* must the script drop this index ? */ + CONSTRAINT DF_IA_isToBeDeleted DEFAULT 0 + ,IA_isToBeRecreated BIT NOT NULL /* must the script recreate this index ? */ + CONSTRAINT DF_IA_isToBeRecreated DEFAULT 0 /* If an existing index differs from the definition, it will be dropped and the correct one created. */ + /* Use this only to force the re-creation even if the structure is identical */ + ,IA_expectedIndexName VARCHAR(500) NOT NULL /* the name the index should have, used to determine if a rename of the existing index should be done */ + ,IA_reference VARCHAR(500) NULL /* A free text that can contain a reference. Seen to simplify update scripts */ + + /* everything below is a log of past changes */ + ,[IA_foundIndexName] VARCHAR(MAX) NULL /* computed by the script. The index name on this system, as indexes name can be different accross systems*/ + ,[IA_wasIndexFound] BIT NOT NULL /* computed by the script. set to 1 if the index is present on the server */ + CONSTRAINT DF_IA_wasIndexFound DEFAULT 0 + ,[IA_wasCreated] BIT NOT NULL /* computed by the script. does this index was created on the server ? */ + CONSTRAINT DF_IA_wasCreated DEFAULT 0 + ,[IA_wasRenamed] BIT NOT NULL /* computed by the script. does this index was renamed ? */ + CONSTRAINT DF_IA_wasRenamed DEFAULT 0 + ,[IA_wasDeleted] BIT NOT NULL /* computed by the script. does this index will be deleted ? */ + CONSTRAINT DF_IA_wasDeleted DEFAULT 0 + ,[IA_wasRecreated] BIT NOT NULL /* computed by the script. does this index will be re-created ? */ + CONSTRAINT DF_IA_wasRecreated DEFAULT 0 + ,[IA_includedColumnsMatch] BIT NULL /* computed by the script. Are the expected and actual included columns identical ? */ + ,[IA_actualColumns] VARCHAR(MAX) NULL /* the actual columns in the existing index */ + ,[IA_actualIncludedColumns] VARCHAR(MAX) NULL /* the actual columns in the INCLUDE part of the index */ + ,[IA_statusMsg] VARCHAR(MAX) NULL /* Message, used for debug */ + ,CONSTRAINT PK_IA_IndexAlignementActions PRIMARY KEY CLUSTERED(IA_indexAlignementActionsID) + ); +END + +IF NOT EXISTS ( + SELECT 1 + FROM [sys].all_columns c + JOIN [sys].tables t ON c.object_id = t.object_id + JOIN [sys].schemas s ON t.schema_id = s.schema_id + JOIN [sys].default_constraints dc ON c.default_object_id = dc.object_id + WHERE s.name = 'upd' + AND t.name = 'IA_IndexAlignementActions' + AND c.name = 'IA_isClustered' +) +BEGIN + ALTER TABLE upd.IA_IndexAlignementActions ADD CONSTRAINT DF_IA_isClustered DEFAULT 0 FOR [IA_isClustered]; +END; + +IF NOT EXISTS ( + SELECT 1 + FROM [sys].all_columns c + JOIN [sys].tables t ON c.object_id = t.object_id + JOIN [sys].schemas s ON t.schema_id = s.schema_id + JOIN [sys].default_constraints dc ON c.default_object_id = dc.object_id + WHERE s.name = 'upd' + AND t.name = 'IA_IndexAlignementActions' + AND c.name = 'IA_isUnique' +) +BEGIN + ALTER TABLE [upd].[IA_IndexAlignementActions] ADD CONSTRAINT DF_IA_isUnique DEFAULT 0 FOR [IA_isUnique]; +END +IF NOT EXISTS ( + SELECT 1 + FROM [sys].all_columns c + JOIN [sys].tables t ON c.object_id = t.object_id + JOIN [sys].schemas s ON t.schema_id = s.schema_id + JOIN [sys].default_constraints dc ON c.default_object_id = dc.object_id + WHERE s.name = 'upd' + AND t.name = 'IA_IndexAlignementActions' + AND c.name = 'IA_isToBeDeleted' +) +BEGIN + ALTER TABLE [upd].[IA_IndexAlignementActions] ADD CONSTRAINT DF_IA_isToBeDeleted DEFAULT 0 FOR [IA_isToBeDeleted]; +END + +IF NOT EXISTS ( + SELECT 1 + FROM [sys].all_columns c + JOIN [sys].tables t ON c.object_id = t.object_id + JOIN [sys].schemas s ON t.schema_id = s.schema_id + JOIN [sys].default_constraints dc ON c.default_object_id = dc.object_id + WHERE s.name = 'upd' + AND t.name = 'IA_IndexAlignementActions' + AND c.name = 'IA_isToBeRecreated' +) +BEGIN + ALTER TABLE [upd].[IA_IndexAlignementActions] ADD CONSTRAINT DF_IA_isToBeRecreated DEFAULT 0 FOR [IA_isToBeRecreated]; +END + +IF NOT EXISTS ( SELECT 1 + FROM [sys].indexes i + WHERE i.object_id = OBJECT_ID(N'upd.IA_IndexAlignementActions') + AND [i].[name] = N'NCUIX_IA_IndexAlignementActions_COL_IA_expectedIndexName') +BEGIN + CREATE UNIQUE NONCLUSTERED INDEX NCUIX_IA_IndexAlignementActions_COL_IA_expectedIndexName ON [upd].[IA_IndexAlignementActions](IA_expectedIndexName); +END +GO + + +/* Create Table Comments */ + +EXEC sp_addextendedproperty 'MS_Description', 'The date and time the action was executed, null if the action is to be executed', 'Schema', [upd], 'table', [IA_IndexAlignementActions], 'column', [IA_executionDate] +GO + +EXEC sp_addextendedproperty 'MS_Description', 'the schema the table is part of', 'Schema', [upd], 'table', [IA_IndexAlignementActions], 'column', [IA_schemaName] +GO + +EXEC sp_addextendedproperty 'MS_Description', 'On which table is the index, whithout the schema', 'Schema', [upd], 'table', [IA_IndexAlignementActions], 'column', [IA_tableName] +GO + +EXEC sp_addextendedproperty 'MS_Description', 'list all the columns of the index, in the correct orders', 'Schema', [upd], 'table', [IA_IndexAlignementActions], 'column', [IA_columnsName] +GO + +EXEC sp_addextendedproperty 'MS_Description', 'Is the index a clustered index ?', 'Schema', [upd], 'table', [IA_IndexAlignementActions], 'column', [IA_isClustered] +GO + +EXEC sp_addextendedproperty 'MS_Description', 'Is the index unique ?', 'Schema', [upd], 'table', [IA_IndexAlignementActions], 'column', [IA_isUnique] +GO + +EXEC sp_addextendedproperty 'MS_Description', 'list all the included columns the index should have.', 'Schema', [upd], 'table', [IA_IndexAlignementActions], 'column', [IA_includedColumns] +GO + +EXEC sp_addextendedproperty 'MS_Description', 'Give here the index options if any. they will be applied on index creation but they are not part of the delta checks', 'Schema', [upd], 'table', [IA_IndexAlignementActions], 'column', [IA_indexOptions] +GO + +EXEC sp_addextendedproperty 'MS_Description', 'must the script drop this index ?', 'Schema', [upd], 'table', [IA_IndexAlignementActions], 'column', [IA_isToBeDeleted] +GO + +EXEC sp_addextendedproperty 'MS_Description', 'must the script recreate this index ? +If an existing index differs from the definition, it will be dropped and the correct one created. +Use this only to force the re-creation even if the structure is identical', 'Schema', [upd], 'table', [IA_IndexAlignementActions], 'column', [IA_isToBeRecreated] +GO + +EXEC sp_addextendedproperty 'MS_Description', 'the name the index should have, used to determine if a rename of the existing index should be done', 'Schema', [upd], 'table', [IA_IndexAlignementActions], 'column', [IA_expectedIndexName] +GO + +EXEC sp_addextendedproperty 'MS_Description', 'A free text that can contain a reference. Seen to simplify update scripts', 'Schema', [upd], 'table', [IA_IndexAlignementActions], 'column', [IA_reference] +GO + +EXEC sp_addextendedproperty 'MS_Description', 'computed by the proc. The index name on this system, as indexes name can be different accross systems', 'Schema', [upd], 'table', [IA_IndexAlignementActions], 'column', [IA_foundIndexName] +GO + +EXEC sp_addextendedproperty 'MS_Description', 'computed by the proc. set to 1 if the index is present on the server ', 'Schema', [upd], 'table', [IA_IndexAlignementActions], 'column', [IA_wasIndexFound] +GO + +EXEC sp_addextendedproperty 'MS_Description', 'computed by the proc. does this index was created on the server ?', 'Schema', [upd], 'table', [IA_IndexAlignementActions], 'column', [IA_wasCreated] +GO + +EXEC sp_addextendedproperty 'MS_Description', 'computed by the proc. does this index was renamed ?', 'Schema', [upd], 'table', [IA_IndexAlignementActions], 'column', [IA_wasRenamed] +GO + +EXEC sp_addextendedproperty 'MS_Description', 'computed by the proc. does this index was deleted ?', 'Schema', [upd], 'table', [IA_IndexAlignementActions], 'column', [IA_wasDeleted] +GO + +EXEC sp_addextendedproperty 'MS_Description', 'computed by the proc. does this index was re-created ?', 'Schema', [upd], 'table', [IA_IndexAlignementActions], 'column', [IA_wasRecreated] +GO + +EXEC sp_addextendedproperty 'MS_Description', 'computed by the proc. Are the expected and actual included columns identical ?', 'Schema', [upd], 'table', [IA_IndexAlignementActions], 'column', [IA_includedColumnsMatch] +GO + +EXEC sp_addextendedproperty 'MS_Description', 'the actual columns in the existing index', 'Schema', [upd], 'table', [IA_IndexAlignementActions], 'column', [IA_actualColumns] +GO + +EXEC sp_addextendedproperty 'MS_Description', 'the actual columns in the INCLUDE part of the index', 'Schema', [upd], 'table', [IA_IndexAlignementActions], 'column', [IA_actualIncludedColumns] +GO + +EXEC sp_addextendedproperty 'MS_Description', 'Message, used for debug', 'Schema', [upd], 'table', [IA_IndexAlignementActions], 'column', [IA_statusMsg] +GO + + +INSERT INTO upd.IA_IndexAlignementActions ( + IA_columnsName, + IA_isToBeDeleted, + IA_isToBeRecreated, + IA_expectedIndexName, + IA_includedColumns, + IA_schemaName, + IA_tableName, + IA_isClustered, + IA_isUnique + ,IA_reference ) /* indexe(s) we do want */ -VALUES('Entry_id',0,0,'PK_Entry_id', NULL,'dbo','entry',0,0) -,('ET_batch_run',0,0,'NCIX_Entry_COL_ET_batch_run',NULL,'dbo','entry',0,0) -,('ET_accounting_period',0,0,'NCIX_Entry_COL_ET_accounting_period','Entry_ID','dbo','entry',0,0) -,('ET_document_header',0,0,'NCIX_Entry_COL_ET_document_header','ET_debit_currency_amount, ET_credit_currency_amount','dbo','entry',0,0) -,('ET_account, ET_document_header',0,0,'NCIX_Entry_COL_ET_account','Entry_ID','dbo','entry',0,0) -,('ET_reconciliation_status, ET_account, ET_document_header',0,0,'NCIX_Entry_COL_ET_reconciliation_status','ET_debit_base_amount, ET_credit_base_amount, ET_reconciliation_base_amount','dbo','entry',0,0) -,('ET_predefined_entry',0,0,'NCIX_Entry_COL_ET_predefined_entry',NULL,'dbo','entry',0,0) -,('ET_entry_address',0,0,'NCIX_Entry_COL_ET_entry_address',NULL,'dbo','entry',0,0) -,('ET_currency',0,0,'NCIX_Entry_COL_ET_currency',NULL,'dbo','entry',0,0) +VALUES('Entry_id',0,0,'PK_Entry_id', NULL,'dbo','entry',0,0,'OCTPDBA-365') +,('ET_batch_run',0,0,'NCIX_Entry_COL_ET_batch_run',NULL,'dbo','entry',0,0,'OCTPDBA-365') +,('ET_accounting_period',0,0,'NCIX_Entry_COL_ET_accounting_period','Entry_ID','dbo','entry',0,0,'OCTPDBA-365') +,('ET_document_header',0,0,'NCIX_Entry_COL_ET_document_header','ET_debit_currency_amount, ET_credit_currency_amount','dbo','entry',0,0,'OCTPDBA-365') +,('ET_account, ET_document_header',0,0,'NCIX_Entry_COL_ET_account','Entry_ID','dbo','entry',0,0,'OCTPDBA-365') +,('ET_reconciliation_status, ET_account, ET_document_header',0,0,'NCIX_Entry_COL_ET_reconciliation_status','ET_debit_base_amount, ET_credit_base_amount, ET_reconciliation_base_amount','dbo','entry',0,0,'OCTPDBA-365') +,('ET_predefined_entry',0,0,'NCIX_Entry_COL_ET_predefined_entry',NULL,'dbo','entry',0,0,'OCTPDBA-365') +,('ET_entry_address',0,0,'NCIX_Entry_COL_ET_entry_address',NULL,'dbo','entry',0,0,'OCTPDBA-365') +,('ET_currency',0,0,'NCIX_Entry_COL_ET_currency',NULL,'dbo','entry',0,0,'OCTPDBA-365') /* indexe(s) used in central, even if not in pharmacies*/ -,('ET_entry_type',0,0,'NCIX_Entry_COL_ET_entry_type',NULL,'dbo','entry',0,0) +,('ET_entry_type',0,0,'NCIX_Entry_COL_ET_entry_type',NULL,'dbo','entry',0,0,'OCTPDBA-365') /* indexe(s) we really want to drop*/ -,('ET_master_ID',1,0,'NCIX_Entry_COL_ET_master_ID',NULL,'dbo','entry',0,0) -,('ET_bmc_user_profile',1,0,'NCIX_Entry_COL_ET_bmc_user_profile',NULL,'dbo','entry',0,0) -,('ET_sales_tax_code',1,0,'NCIX_Entry_COL_ET_sales_tax_code',NULL,'dbo','entry',0,0) -,('ET_APS_TS', 1, 0, 'NCIX_Entry_COL_ET_APS_TS',NULL,'dbo','entry',0,0) +,('ET_master_ID',1,0,'NCIX_Entry_COL_ET_master_ID',NULL,'dbo','entry',0,0,'OCTPDBA-365') +,('ET_bmc_user_profile',1,0,'NCIX_Entry_COL_ET_bmc_user_profile',NULL,'dbo','entry',0,0,'OCTPDBA-365') +,('ET_sales_tax_code',1,0,'NCIX_Entry_COL_ET_sales_tax_code',NULL,'dbo','entry',0,0,'OCTPDBA-365') +,('ET_APS_TS', 1, 0, 'NCIX_Entry_COL_ET_APS_TS',NULL,'dbo','entry',0,0,'OCTPDBA-365') ; diff --git a/OCTPDBA-414 - proc to align indexes/test.sql b/OCTPDBA-414 - proc to align indexes/test.sql index ca18755..ac3cc5a 100644 --- a/OCTPDBA-414 - proc to align indexes/test.sql +++ b/OCTPDBA-414 - proc to align indexes/test.sql @@ -4,144 +4,298 @@ BEGIN TRANSACTION; SET XACT_ABORT ON; -INSERT INTO upd.IA_IndexesAlignementActions -( - IA_executionDate, - IA_schema_name, - IA_table_name, - IA_columns_name, - IA_is_clustered, - IA_is_unique, - IA_included_columns, - IA_is_to_be_deleted, - IA_is_to_be_recreated, - IA_expected_index_name, - IA_foundIndexName, - IA_wasIndexFound, - IA_wasCreated, - IA_wasRenamed, - IA_wasDeleted, - IA_wasRecreated, - IA_includedColumnsMatch, - IA_actualColumns, - IA_actualIncludedColumns, - IA_statusMsg, - IA_index_options -) -SELECT - NULL AS IA_executionDate, - 'dbo' AS IA_schema_name, - 'Criteria' AS IA_table_name, - 'CR_code, CR_criteria_type' AS IA_columns_name, - 0 AS IA_is_clustered, - 1 AS IA_is_unique, - NULL AS IA_included_columns, - 0 AS IA_is_to_be_deleted, - 0 AS IA_is_to_be_recreated, - 'NCIX_Criteria_COL_CR_code' AS IA_expected_index_name, - NULL AS IA_foundIndexName, - 0 AS IA_wasIndexFound, - 0 AS IA_wasCreated, - 0 AS IA_wasRenamed, - 0 AS IA_wasDeleted, - 0 AS IA_wasRecreated, - NULL AS IA_includedColumnsMatch, - NULL AS IA_actualColumns, - NULL AS IA_actualIncludedColumns, - NULL AS IA_statusMsg , - NULL AS IA_index_options -UNION -SELECT - NULL AS IA_executionDate, - 'dbo' AS IA_schema_name, - 'Criteria' AS IA_table_name, - 'CR_criteria_type' AS IA_columns_name, - 0 AS IA_is_clustered, - 0 AS IA_is_unique, - NULL AS IA_included_columns, - 0 AS IA_is_to_be_deleted, - 0 AS IA_is_to_be_recreated, - 'NCIX_Criteria_COL_CR_criteria_type' AS IA_expected_index_name, - NULL AS IA_foundIndexName, - 0 AS IA_wasIndexFound, - 0 AS IA_wasCreated, - 0 AS IA_wasRenamed, - 0 AS IA_wasDeleted, - 0 AS IA_wasRecreated, - NULL AS IA_includedColumnsMatch, - NULL AS IA_actualColumns, - NULL AS IA_actualIncludedColumns, - NULL AS IA_statusMsg , - NULL AS IA_index_options -UNION -SELECT - NULL AS IA_executionDate, - 'dbo' AS IA_schema_name, - 'Criteria' AS IA_table_name, - 'CR_master_ID' AS IA_columns_name, - 0 AS IA_is_clustered, - 0 AS IA_is_unique, - NULL AS IA_included_columns, - 0 AS IA_is_to_be_deleted, - 01 AS IA_is_to_be_recreated, - 'NCIX_Criteria_COL_CR_master_ID' AS IA_expected_index_name, - NULL AS IA_foundIndexName, - 0 AS IA_wasIndexFound, - 0 AS IA_wasCreated, - 0 AS IA_wasRenamed, - 0 AS IA_wasDeleted, - 0 AS IA_wasRecreated, - NULL AS IA_includedColumnsMatch, - NULL AS IA_actualColumns, - NULL AS IA_actualIncludedColumns, - NULL AS IA_statusMsg, - NULL AS IA_index_options -UNION -SELECT - NULL AS IA_executionDate, - 'dbo' AS IA_schema_name, - 'Criteria' AS IA_table_name, - 'CR_VGUID' AS IA_columns_name, - 0 AS IA_is_clustered, - 0 AS IA_is_unique, - NULL AS IA_included_columns, - 0 AS IA_is_to_be_deleted, - 0 AS IA_is_to_be_recreated, - 'NCIX_Criteria_COL_CR_VGUID' AS IA_expected_index_name, - NULL AS IA_foundIndexName, - 0 AS IA_wasIndexFound, - 0 AS IA_wasCreated, - 0 AS IA_wasRenamed, - 0 AS IA_wasDeleted, - 0 AS IA_wasRecreated, - NULL AS IA_includedColumnsMatch, - NULL AS IA_actualColumns, - NULL AS IA_actualIncludedColumns, - NULL AS IA_statusMsg , - NULL AS IA_index_options -UNION -SELECT - NULL AS IA_executionDate, - 'dbo' AS IA_schema_name, - 'Criteria' AS IA_table_name, - 'Criteria_ID' AS IA_columns_name, - 1 AS IA_is_clustered, - 1 AS IA_is_unique, - NULL AS IA_included_columns, - 0 AS IA_is_to_be_deleted, - 0 AS IA_is_to_be_recreated, - 'PK_Criteria_ID' AS IA_expected_index_name, - NULL AS IA_foundIndexName, - 0 AS IA_wasIndexFound, - 0 AS IA_wasCreated, - 0 AS IA_wasRenamed, - 0 AS IA_wasDeleted, - 0 AS IA_wasRecreated, - NULL AS IA_includedColumnsMatch, - NULL AS IA_actualColumns, - NULL AS IA_actualIncludedColumns, - NULL AS IA_statusMsg , - NULL AS IA_index_options + +/* OCTPDBA-414: table dbo.criteria, pharmacy only*/ + + /* CR_code, CR_criteria_type */ + INSERT INTO [Arizona].[upd].[IA_IndexAlignementActions] + ( + [IA_executionDate], + [IA_schemaName], + [IA_tableName], + [IA_columnsName], + [IA_isClustered], + [IA_isUnique], + [IA_includedColumns], + [IA_isToBeDeleted], + [IA_isToBeRecreated], + [IA_expectedIndexName], + [IA_foundIndexName], + [IA_wasIndexFound], + [IA_wasCreated], + [IA_wasRenamed], + [IA_wasDeleted], + [IA_wasRecreated], + [IA_includedColumnsMatch], + [IA_actualColumns], + [IA_actualIncludedColumns], + [IA_statusMsg], + [IA_indexOptions], + [IA_reference] + ) + SELECT + NULL as [IA_executionDate], + 'dbo' as [IA_schemaName], + 'Criteria' as [IA_tableName], + 'CR_code, CR_criteria_type' as [IA_columnsName], + 0 as [IA_isClustered], + 1 as [IA_isUnique], + NULL as [IA_includedColumns], + 0 as [IA_isToBeRecreated], + 0 as [IA_isToBeRecreated], + 'NCIX_Criteria_COL_CR_code' as [IA_expectedIndexName], + NULL as [IA_foundIndexName], + 0 as [IA_wasIndexFound], + 0 as [IA_wasCreated], + 0 as [IA_wasRenamed], + 0 as [IA_wasDeleted], + 0 as [IA_wasRecreated], + NULL as [IA_includedColumnsMatch], + NULL as [IA_actualColumns], + NULL as [IA_actualIncludedColumns], + NULL as [IA_statusMsg], + 'STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, SORT_IN_TEMPDB = OFF, FILLFACTOR =90' as IA_index_options, + 'OCTPDBA-414' AS [IA_reference] + WHERE NOT EXISTS( + SELECT 1 + FROM [Arizona].[upd].[IA_IndexAlignementActions] s + WHERE [s].[IA_schemaName] = 'dbo' + AND [s].[IA_tableName] = 'Criteria' + AND [s].[IA_columnsName] = 'CR_code, CR_criteria_type' + AND [s].[IA_reference] = 'OCTPDBA-414' + ) + + /* CR_criteria_type */ + INSERT INTO [Arizona].[upd].[IA_IndexAlignementActions] + ( + [IA_executionDate], + [IA_schemaName], + [IA_tableName], + [IA_columnsName], + [IA_isClustered], + [IA_isUnique], + [IA_includedColumns], + [IA_isToBeDeleted], + [IA_isToBeRecreated], + [IA_expectedIndexName], + [IA_foundIndexName], + [IA_wasIndexFound], + [IA_wasCreated], + [IA_wasRenamed], + [IA_wasDeleted], + [IA_wasRecreated], + [IA_includedColumnsMatch], + [IA_actualColumns], + [IA_actualIncludedColumns], + [IA_statusMsg], + [IA_indexOptions], + [IA_reference] + ) + SELECT + NULL as [IA_executionDate], + 'dbo' as [IA_schemaName], + 'Criteria' as [IA_tableName], + 'CR_criteria_type' as [IA_columnsName], + 0 as [IA_isClustered], + 0 as [IA_isUnique], + NULL as [IA_includedColumns], + 0 as [IA_isToBeRecreated], + 0 as [IA_isToBeRecreated], + 'NCIX_Criteria_COL_CR_criteria_type' as [IA_expectedIndexName], + NULL as [IA_foundIndexName], + 0 as [IA_wasIndexFound], + 0 as [IA_wasCreated], + 0 as [IA_wasRenamed], + 0 as [IA_wasDeleted], + 0 as [IA_wasRecreated], + NULL as [IA_includedColumnsMatch], + NULL as [IA_actualColumns], + NULL as [IA_actualIncludedColumns], + NULL as [IA_statusMsg], + 'STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, SORT_IN_TEMPDB = OFF, FILLFACTOR =90' as IA_index_options, + 'OCTPDBA-414' AS [IA_reference] + WHERE NOT EXISTS( + SELECT 1 + FROM [Arizona].[upd].[IA_IndexAlignementActions] s + WHERE [s].[IA_schemaName] = 'dbo' + AND [s].[IA_tableName] = 'Criteria' + AND [s].[IA_columnsName] = 'CR_criteria_type' + AND [s].[IA_reference] = 'OCTPDBA-414' + ) + + /* CR_master_ID */ + INSERT INTO [Arizona].[upd].[IA_IndexAlignementActions] + ( + [IA_executionDate], + [IA_schemaName], + [IA_tableName], + [IA_columnsName], + [IA_isClustered], + [IA_isUnique], + [IA_includedColumns], + [IA_isToBeDeleted], + [IA_isToBeRecreated], + [IA_expectedIndexName], + [IA_foundIndexName], + [IA_wasIndexFound], + [IA_wasCreated], + [IA_wasRenamed], + [IA_wasDeleted], + [IA_wasRecreated], + [IA_includedColumnsMatch], + [IA_actualColumns], + [IA_actualIncludedColumns], + [IA_statusMsg], + [IA_indexOptions], + [IA_reference] + ) + SELECT + NULL as [IA_executionDate], + 'dbo' as [IA_schemaName], + 'Criteria' as [IA_tableName], + 'CR_master_ID' as [IA_columnsName], + 0 as [IA_isClustered], + 0 as [IA_isUnique], + NULL as [IA_includedColumns], + 0 as [IA_isToBeRecreated], + 0 as [IA_isToBeRecreated], + 'NCIX_Criteria_COL_CR_master_ID' as [IA_expectedIndexName], + NULL as [IA_foundIndexName], + 0 as [IA_wasIndexFound], + 0 as [IA_wasCreated], + 0 as [IA_wasRenamed], + 0 as [IA_wasDeleted], + 0 as [IA_wasRecreated], + NULL as [IA_includedColumnsMatch], + NULL as [IA_actualColumns], + NULL as [IA_actualIncludedColumns], + NULL as [IA_statusMsg], + 'STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, SORT_IN_TEMPDB = OFF, FILLFACTOR =90' as IA_index_options, + 'OCTPDBA-414' AS [IA_reference] + WHERE NOT EXISTS( + SELECT 1 + FROM [Arizona].[upd].[IA_IndexAlignementActions] s + WHERE [s].[IA_schemaName] = 'dbo' + AND [s].[IA_tableName] = 'Criteria' + AND [s].[IA_columnsName] = 'CR_master_ID' + AND [s].[IA_reference] = 'OCTPDBA-414' + ) + + /* CR_VGUID */ + INSERT INTO [Arizona].[upd].[IA_IndexAlignementActions] + ( + [IA_executionDate], + [IA_schemaName], + [IA_tableName], + [IA_columnsName], + [IA_isClustered], + [IA_isUnique], + [IA_includedColumns], + [IA_isToBeDeleted], + [IA_isToBeRecreated], + [IA_expectedIndexName], + [IA_foundIndexName], + [IA_wasIndexFound], + [IA_wasCreated], + [IA_wasRenamed], + [IA_wasDeleted], + [IA_wasRecreated], + [IA_includedColumnsMatch], + [IA_actualColumns], + [IA_actualIncludedColumns], + [IA_statusMsg], + [IA_indexOptions], + [IA_reference] + ) + SELECT + NULL as [IA_executionDate], + 'dbo' as [IA_schemaName], + 'Criteria' as [IA_tableName], + 'CR_VGUID' as [IA_columnsName], + 0 as [IA_isClustered], + 0 as [IA_isUnique], + NULL as [IA_includedColumns], + 0 as [IA_isToBeRecreated], + 0 as [IA_isToBeRecreated], + 'NCIX_Criteria_COL_CR_VGUID' as [IA_expectedIndexName], + NULL as [IA_foundIndexName], + 0 as [IA_wasIndexFound], + 0 as [IA_wasCreated], + 0 as [IA_wasRenamed], + 0 as [IA_wasDeleted], + 0 as [IA_wasRecreated], + NULL as [IA_includedColumnsMatch], + NULL as [IA_actualColumns], + NULL as [IA_actualIncludedColumns], + NULL as [IA_statusMsg], + 'STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, SORT_IN_TEMPDB = OFF, FILLFACTOR =90' as IA_index_options, + 'OCTPDBA-414' AS [IA_reference] + WHERE NOT EXISTS( + SELECT 1 + FROM [Arizona].[upd].[IA_IndexAlignementActions] s + WHERE [s].[IA_schemaName] = 'dbo' + AND [s].[IA_tableName] = 'Criteria' + AND [s].[IA_columnsName] = 'CR_VGUID' + AND [s].[IA_reference] = 'OCTPDBA-414' + ) + + /* Criteria_ID */ + INSERT INTO [Arizona].[upd].[IA_IndexAlignementActions] + ( + [IA_executionDate], + [IA_schemaName], + [IA_tableName], + [IA_columnsName], + [IA_isClustered], + [IA_isUnique], + [IA_includedColumns], + [IA_isToBeDeleted], + [IA_isToBeRecreated], + [IA_expectedIndexName], + [IA_foundIndexName], + [IA_wasIndexFound], + [IA_wasCreated], + [IA_wasRenamed], + [IA_wasDeleted], + [IA_wasRecreated], + [IA_includedColumnsMatch], + [IA_actualColumns], + [IA_actualIncludedColumns], + [IA_statusMsg], + [IA_indexOptions], + [IA_reference] + ) + SELECT + NULL as [IA_executionDate], + 'dbo' as [IA_schemaName], + 'Criteria' as [IA_tableName], + 'Criteria_ID' as [IA_columnsName], + 0 as [IA_isClustered], + 1 as [IA_isUnique], + NULL as [IA_includedColumns], + 0 as [IA_isToBeRecreated], + 0 as [IA_isToBeRecreated], + 'PK_Criteria_ID' as [IA_expectedIndexName], + NULL as [IA_foundIndexName], + 0 as [IA_wasIndexFound], + 0 as [IA_wasCreated], + 0 as [IA_wasRenamed], + 0 as [IA_wasDeleted], + 0 as [IA_wasRecreated], + NULL as [IA_includedColumnsMatch], + NULL as [IA_actualColumns], + NULL as [IA_actualIncludedColumns], + NULL as [IA_statusMsg], + 'STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, SORT_IN_TEMPDB = OFF, FILLFACTOR =90' as IA_index_options, + 'OCTPDBA-414' AS [IA_reference] + WHERE NOT EXISTS( + SELECT 1 + FROM [Arizona].[upd].[IA_IndexAlignementActions] s + WHERE [s].[IA_schemaName] = 'dbo' + AND [s].[IA_tableName] = 'Criteria' + AND [s].[IA_reference] = 'OCTPDBA-414' + AND [s].[IA_columnsName] = 'Criteria_ID' + ) @@ -151,6 +305,6 @@ EXEC [upd].[alignIndexes] @in_debug = 01, -- int @in_dropUnreferencedIndexes = NULL; -- bit SELECT * -FROM upd.IA_IndexesAlignementActions; +FROM upd.IA_IndexAlignementActions; ROLLBACK TRANSACTION; \ No newline at end of file diff --git a/OCTPDBA-496 - Validate ssl deactivation/.gitignore b/OCTPDBA-496 - Validate ssl deactivation/.gitignore new file mode 100644 index 0000000..8d8bf24 --- /dev/null +++ b/OCTPDBA-496 - Validate ssl deactivation/.gitignore @@ -0,0 +1 @@ +/*.xlsx diff --git a/OCTPDBA-496 - Validate ssl deactivation/.vs/OCTPDBA-496 - Validate ssl deactivation/v15/.ssms_suo b/OCTPDBA-496 - Validate ssl deactivation/.vs/OCTPDBA-496 - Validate ssl deactivation/v15/.ssms_suo new file mode 100644 index 0000000000000000000000000000000000000000..47cdd81dfdc3110d84294e4ec0d9350063c832ea GIT binary patch literal 59904 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 j(1sQ=-1l?(=h;y3 + + + + + + 2023-02-17T10:07:59.2402706+01:00 + SQL + hcimon + + Windows Authentication + master + 30 + 0 + NotSpecified + Microsoft SQL Server Management Studio - Query + + + + + + + + + + check sql server logs.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:hcimon:True + hcimon + + last backups.sql + + + + + + + + \ No newline at end of file diff --git a/OCTPDBA-496 - Validate ssl deactivation/SQLQuery6.sql b/OCTPDBA-496 - Validate ssl deactivation/SQLQuery6.sql new file mode 100644 index 0000000..ba9d072 --- /dev/null +++ b/OCTPDBA-496 - Validate ssl deactivation/SQLQuery6.sql @@ -0,0 +1,42 @@ +WITH LastBackUp AS +( + SELECT bs.database_name, + bs.backup_size, + bs.backup_start_date, + bmf.physical_device_name, + bs.[name], + Position = ROW_NUMBER() OVER( PARTITION BY bs.database_name ORDER BY bs.backup_start_date DESC ) + FROM msdb.dbo.backupmediafamily bmf + JOIN msdb.dbo.backupmediaset bms ON bmf.media_set_id = bms.media_set_id + JOIN msdb.dbo.backupset bs ON bms.media_set_id = bs.media_set_id + WHERE bs.[type] = 'D' + AND bs.is_copy_only = 0 +) +,lastBkpYesterday AS ( + SELECT bs.database_name, + bs.backup_size, + bs.backup_start_date, + bmf.physical_device_name, + bs.[name], + Position = ROW_NUMBER() OVER( PARTITION BY bs.database_name ORDER BY bs.backup_start_date DESC ) + FROM msdb.dbo.backupmediafamily bmf + JOIN msdb.dbo.backupmediaset bms ON bmf.media_set_id = bms.media_set_id + JOIN msdb.dbo.backupset bs ON bms.media_set_id = bs.media_set_id + WHERE bs.[type] = 'D' + AND bs.is_copy_only = 0 + AND bs.backup_start_date < DATEADD(DAY, -1, CAST(CURRENT_TIMESTAMP AS DATE)) +) +SELECT + sd.name AS [Database], + REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, lb.backup_size / 1048576), 1),',',''''),'.00','') AS [backup size MB], + lb.backup_start_date AS [Last Full DB Backup Date], + lb.physical_device_name AS [Last Backup File Location], + lby.backup_start_date AS [Previous Full DB Backup Date], + lb.physical_device_name AS [Previous Backup File Location], + lb.[name] AS [last backup name], + lby.[name] AS [Previous last backup name] +FROM sys.databases AS sd + LEFT JOIN LastBackUp AS lb ON sd.name = lb.database_name AND lb.Position = 1 + LEFT JOIN lastBkpYesterday lby ON sd.name=lby.database_name and lby.Position=1 +ORDER BY [Database]; + diff --git a/OCTPDBA-496 - Validate ssl deactivation/check sql server logs.sql b/OCTPDBA-496 - Validate ssl deactivation/check sql server logs.sql new file mode 100644 index 0000000..b1a5a6b --- /dev/null +++ b/OCTPDBA-496 - Validate ssl deactivation/check sql server logs.sql @@ -0,0 +1,49 @@ +IF OBJECT_ID('tempdb..#errorLog')IS NOT NULL BEGIN; + DROP TABLE #errorLog; +END; + +DECLARE @loop INT = 0; +CREATE TABLE #errorLog ( + LogDate DATETIME NOT NULL + , src VARCHAR(20) + , ProcessInfo VARCHAR(64) + , [Text] VARCHAR(MAX) +); + +WHILE @loop < 7 +BEGIN + INSERT INTO [#errorLog] ([LogDate], + [ProcessInfo], + [Text]) + EXEC [sys].[sp_readerrorlog] + @p1 = @loop -- specify the log number or use nothing for active error log + ,@p2 = 1 --error log + ; + UPDATE [#errorLog] SET [src] = 'db' + WHERE [src] IS NULL; + + INSERT INTO [#errorLog] ([LogDate], + [ProcessInfo], + [Text]) + EXEC [sys].[sp_readerrorlog] + @p1 = @loop -- specify the log number or use nothing for active error log + ,@p2 = 2 --agent log + ; + UPDATE [#errorLog] SET [src] = 'agent' + WHERE [src] IS NULL; + + SET @loop = @loop + 1; +END + +SELECT * +FROM #errorLog a +WHERE a.[LogDate] > '20230213 20:00:00' +--AND EXISTS (SELECT * +-- FROM #errorLog b +-- WHERE [Text] like 'Error:%' +-- AND a.LogDate = b.LogDate +-- AND a.ProcessInfo = b.ProcessInfo) +--AND a.[LogDate] > '20230213 20:00:00' --report that the ssl / tls was deactivated +--AND (a.[Text] like '%Error:%' OR [a].[Text] LIKE '%warning%') +ORDER BY [a].[LogDate], [a].[src] ASC +; diff --git a/OCTPDBA-496 - Validate ssl deactivation/last backups.sql b/OCTPDBA-496 - Validate ssl deactivation/last backups.sql new file mode 100644 index 0000000..6c92702 --- /dev/null +++ b/OCTPDBA-496 - Validate ssl deactivation/last backups.sql @@ -0,0 +1,52 @@ +WITH LastBackUp AS +( + SELECT bs.database_name, + bs.backup_size, + bs.backup_start_date, + bmf.physical_device_name, + bs.[name], + Position = ROW_NUMBER() OVER( PARTITION BY bs.database_name ORDER BY bs.backup_start_date DESC ) + FROM msdb.dbo.backupmediafamily bmf + JOIN msdb.dbo.backupmediaset bms ON bmf.media_set_id = bms.media_set_id + JOIN msdb.dbo.backupset bs ON bms.media_set_id = bs.media_set_id + WHERE bs.[type] = 'D' + AND bs.is_copy_only = 0 +) +,lastBkpYesterday AS ( + SELECT bs.database_name, + bs.backup_size, + bs.backup_start_date, + bmf.physical_device_name, + bs.[name], + Position = ROW_NUMBER() OVER( PARTITION BY bs.database_name ORDER BY bs.backup_start_date DESC ) + FROM msdb.dbo.backupmediafamily bmf + JOIN msdb.dbo.backupmediaset bms ON bmf.media_set_id = bms.media_set_id + JOIN msdb.dbo.backupset bs ON bms.media_set_id = bs.media_set_id + OUTER APPLY( + SELECT bs.backup_start_date, + Position = ROW_NUMBER() OVER( PARTITION BY bs.database_name ORDER BY bs.backup_start_date DESC ) + FROM msdb.dbo.backupmediafamily bmf + JOIN msdb.dbo.backupmediaset bms ON bmf.media_set_id = bms.media_set_id + JOIN msdb.dbo.backupset bs ON bms.media_set_id = bs.media_set_id + WHERE bs.[type] = 'D' + AND bs.is_copy_only = 0 + )la + WHERE bs.[type] = 'D' + AND la.[Position] = 1 + AND bs.is_copy_only = 0 + AND bs.backup_start_date < DATEADD(HOUR, -5, la.[backup_start_date]) +) +SELECT + sd.name AS [Database], + REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, lb.backup_size / 1048576), 1),',',''''),'.00','') AS [backup size MB], + lb.backup_start_date AS [Last Full DB Backup Date], + lb.physical_device_name AS [Last Backup File Location], + lby.backup_start_date AS [Previous Full DB Backup Date], + lb.physical_device_name AS [Previous Backup File Location], + lb.[name] AS [last backup name], + lby.[name] AS [Previous last backup name] +FROM sys.databases AS sd + LEFT JOIN LastBackUp AS lb ON sd.name = lb.database_name AND lb.Position = 1 + LEFT JOIN lastBkpYesterday lby ON sd.name=lby.database_name and lby.Position=1 +ORDER BY [Database]; + diff --git a/OCTPDBA-496 - Validate ssl deactivation/todo.txt b/OCTPDBA-496 - Validate ssl deactivation/todo.txt new file mode 100644 index 0000000..c503594 --- /dev/null +++ b/OCTPDBA-496 - Validate ssl deactivation/todo.txt @@ -0,0 +1,119 @@ +US: https://galenica.atlassian.net/browse/OCTPDBA-496 + +Scope + Central GCM N+1 + ssunbqmsdb02.sunstore.ch\apssql + => pas mal de choses dans log appl, mais pas relevantes + InsufficientMemoryException dans service '/MonitoringDataCentralWebService/MonitoringDataCentralWebService.svc' + arizona broker => Dongle Key not found (internal error : 3). + broker sql server => Event notification 'SQLWEP_8E2F34CC_4597_433C_8375_9F2E7BCA744E' in database 'master' dropped due to send time service broker errors. Check to ensure the conversation handle, service broker contract, and service specified in the event notification are active. + + Pharmacy N+1 + in 22.1 version + ama707aps.amavita.ch\apssql + => ras log app + + in 23.1 version + ama705aps.amavita.ch\apssql + + POS N+1 + + in 22.1 version + wam707a02 + => win app log: + svc DNSyncService: Synchronization faild due to connection errors. Service will retry synchronization at 17.02.2023 15:42:51. Exception: Une connexion a été établie avec le serveur, mais une erreur s'est ensuite produite pendant le processus d'ouverture de session. (provider: SSL Provider, error: 0 - Le client et le serveur ne peuvent pas communiquer car ils ne possèdent aucun algorithme commun.) + Service COC.DOCUNIZE, emplacement C:\Program Files\COC AG\DOCUNIZE.2020 + + in 23.1 version + CAMA70533287T02 + => win app log comme sur wam707a02 + + Address Repository N+1 + SSUNBQMSREF02\TAM000REF + ==> permission denied rdp, pas pu vérifier les logs windows + + Datamart N+1 + SWDITST01\TGALKON + => ras + + TriaFACT N+1 + SWTFQMS01\TGALTFAC + => erreurs de repli, schémas je pense mais message tronqué + Replication-Replication Merge Subsystem: agent SWTFQMS01\TGALTFAC-olpDirectory-OlpDirectory_MergePub-SWTFQMS01\TGALTFAC-14 failed. The schema script ' if object_id(N'[dbo].[FK_UserProfileUser]') is null if object_id(N'[dbo].[User]') is not null exec('ALTER TABLE [dbo].[User] WITH CHECK ADD CONSTRAINT [FK_UserProfileUser] FOREIGN KEY([UserProfileId]) +REFERENCES [dbo].[UserProfile] ( + + Gaia / triafin + SWGCMQMS01\TGALCTP + => ras + + J2I N+1 + SWINDA01\APSTEST + => pas mal d'erreurs dans le app log, mais pas forcément reliées: + Error in GetXML4InvoiceError : This barcode does not exists ! + Error in GetXML4InvoiceError : This barcode is not for this user ! + Error in GetXML4InvoiceError : Multiple scan is not authorized for the same barcode extraction ! + Error calling the Web serviceTimeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached. + + + Pricing N+1 + SWOPXQMS01\TGALOLPP01 + => ras + + triascan + SWSCANTST01\TAMASCAN + => ras + +Les serveurs suivant n'ont pas été switchés, ils sont intouchés + + + PharmINDEX N+1 (pas de N+? selon la liste des instances. uniquement prod.) + + + DBA N+1 (seulement N+2 selon la liste des instances) + swdbasqltst01.centralinfra.net\apssql + + Atlas N+1 + swatldev01.centralinfra.net\TGALATLAS + + + +TODO: + Check des logs windows: + central 888: + * SYNCHRO EXCEPTION + Program name : C:\Program Files (x86)\Triamun\APSSynchroExtract\bin\apsSynchroExtract.exe + Message : Error during database connection - Tried to connect to the database unsuccessfully 3 time(s) [DBNETLIB][ConnectionOpen (SECCreateCredentials()).]SSL Security error + + * 2023-02-15 10:14:19,954 [6] FATAL Hci.ServiceManagerCore.PluginManager [(null)] - Plug-in 'LoyaltyCheckService' with schedule '0 0 19' failed to start. + System.InvalidOperationException: Cannot find the X.509 certificate using the following search criteria: StoreName 'My', StoreLocation 'LocalMachine', FindType 'FindByTemplateName', FindValue 'TriaPharmSslGalenica'. + + * broker arizona pas à jour + test depuis le pc de Roland Berger ok, probablement un soucis native client ou oledb. voir avec RTC. + 2 versions de "ole db" installées. "OLE DB provider" ko, "OLE DB driver" ok. J'ai demandé à Roland si il peut me dire quel provider est utilisé dans le broker, mais il n'a pas les sources + Il cherche a les trouver. + J'ai essayé de feinter en spécifiant le provider dans la config du broker après le host auxquel on se connecte, mais l'application fait une erreur comme quoi il y a + un autre provider enregistré. + Une solution si on n'a pas les sources serait de supprimer le check au broker dans apsSynchroExtract peut-être ? + + SSUNBREFDE02 + eventvwr: + * Event notification 'SQLWEP_4C0433FF_A1BF_4C23_9E97_09DAD1D3D1AE' in database 'master' dropped due to send time service broker errors. Check to ensure the conversation handle, service broker contract, and service specified in the event notification are active. + * Failure to send an event notification instance of type 'AUDIT_BACKUP_RESTORE_EVENT' on conversation handle '{C3061AAC-78A4-ED11-A2E2-0050568686ED}'. Error Code = '8429'. + log sql: + * Closed event notification conversation endpoint with handle '{C6061AAC-78A4-ED11-A2E2-0050568686ED}', due to the following error: '-8470Remote service has been dropped.'. + + + Check des logs sql server avec erreurs depuis le 13.02.2023 20:00 + Ne montre rien de probant. Des erreurs de logins (pwd incorrect) sur les pos, des erreurs de replication + + Check des jobs en erreur depuis le 13.02.2023 20:00 + Des deadlock, des labels en erreur (traité ce matin) mais rien de probant + + linked servers + tout semble ok. + + Backups commvault + Logs des backups ok en pharmacies. + + Brocker + \ No newline at end of file diff --git a/TMP - check ama azCust rows missing in SUN.sql b/TMP - check ama azCust rows missing in SUN.sql new file mode 100644 index 0000000..5dd2306 --- /dev/null +++ b/TMP - check ama azCust rows missing in SUN.sql @@ -0,0 +1,47 @@ +/* Run this script in amacent to check if there are rows coming from the "accounting turnover" job that are still missing on the sun central */ +USE ArizonaCUST + +SELECT COUNT(1) AS missingRows, 'CRSO_Cent' AS [table] +FROM dbo.CRSO_Cent c +WHERE NOT EXISTS( + SELECT 1 + FROM sunaps.ArizonaCUST.dbo.CRSO_Cent t + WHERE t.CRSO_SUB_code = c.CRSO_SUB_code + AND t.CRSO_OU_code = c.CRSO_OU_code + AND t.CRSO_Value_date = c.CRSO_Value_date +) + +UNION + +SELECT COUNT(1) AS missingRows, 'CRMCRD_Cent' AS [table] +FROM [dbo].[CRMCRD_Cent] c +WHERE NOT EXISTS( + SELECT 1 + FROM SUNAPS.ArizonaCUST.dbo.[CRMCRD_Cent] t + WHERE c.[CRMCRD_SUB_code] = t.[CRMCRD_SUB_code] + AND c.[CRMCRD_OU_code] = t.[CRMCRD_OU_code] + AND c.[CRMCRD_CRMCR_GUID] = t.[CRMCRD_CRMCR_GUID] +) + +UNION + +SELECT COUNT(1) AS missingRows, 'DHICI_Cent' AS [table] +FROM [dbo].DHICI_Cent c +WHERE NOT EXISTS( + SELECT 1 + FROM SUNAPS.ArizonaCUST.dbo.DHICI_Cent t + WHERE c.DHICI_SUB_code = t.DHICI_SUB_code + AND c.DHICI_OU_code = t.DHICI_OU_code + AND c.DHICI_DH_value_date = t.DHICI_DH_value_date +) + +UNION + +SELECT COUNT(1) AS missingRows, 'FM_Cent' as [table] +FROM [dbo].FM_Cent c +WHERE NOT EXISTS( + SELECT 1 + FROM SUNAPS.ArizonaCUST.dbo.FM_Cent t + WHERE c.FM_SUB_code = t.FM_SUB_code + AND c.FM_OU_code = t.FM_OU_code +)