Thursday, August 16, 2018

To be Professional

To be Professional
1. Analytical and Problem solving skill
2. Technical skill
3. Domain knowledge
4. Communication skills - u don't have to be expert, but to be good at with it
5. How to learn

XML Short Note


XML Basics

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book category="cooking">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
  </book>
</bookstore>

A prolog defines the XML version and the character encoding: this line is called “prolog”
<?xml version="1.0" encoding="UTF-8"?>

next line is the root element of the document:

<bookstore>

The next line starts a <book> element: child element
<book category="cooking">

Every tag should have a closing tag.

Attribute values must always be quoted.

<note date="12/11/2007">
  <to>Tove</to>
  <from>Jani</from>
</note>

Entity References
Character like "<" has special meaning
This will generate an XML error:
<message>salary < 1000</message>
To avoid this error, replace the "<" character with an entity reference:
<message>salary < 1000</message>

< < less than
> > greater than
& & ampersand 
' ' apostrophe
" " quotation mark












<!-- This is a -- comment -->
 Strange, but allowed:
<!-- This is a - - comment -->
White-space is Preserved in XML
XML does not truncate multiple white-spaces (HTML truncates multiple white-spaces to one single white-space):

XML: Hello           Tove
HTML: Hello Tove

XML Stores New Line as LF
Windows applications store a new line as: carriage return and line feed (CR+LF).
Unix and Mac OSX uses LF.
Old Mac systems uses CR.
XML stores a new line as LF.
What is an XML Element?
An XML element is everything from (including) the element's start tag to (including) the element's end tag.
<price>29.99</price>
An element can contain:
• text
• attributes
• other elements
• or a mix of the above

<bookstore>
  <book category="children">
    <title>Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
</bookstore>

<title>, <author>, <year>, and <price> have text content because they contain text (like 29.99).
<bookstore> and <book> have element contents, because they contain elements.
<book> has an attribute (category="children").

Note: you can have space after the name given in the start element tag, not before 
<title      >    - allowed
< title>,  -> Disallowed, Illegal

Empty XML Elements
In XML, you can indicate an empty element like this:
<element></element>
Or
<element />

XML Naming Rules
• Element names are case-sensitive
• Element names must start with a letter or underscore
• Element names cannot start with the letters xml (or XML, or Xml, etc)
• Element names can contain letters, digits, hyphens, underscores, and periods
• Element names cannot contain spaces

Best Naming Practices
Create descriptive names, like this: <person>, <firstname>, <lastname>.
Create short and simple names, like this: <book_title> not like this: <the_title_of_the_book>.
Avoid "-". If you name something "first-name", some software may think you want to subtract "name" from "first".
Avoid ".". If you name something "first.name", some software may think that "name" is a property of the object "first".
Avoid ":". Colons are reserved for namespaces (more later).
Non-English letters like éòá are perfectly legal in XML, but watch out for problems if your software doesn't support them.
Naming Styles
There are no naming styles defined for XML elements. But here are some commonly used:
Style Example Description
Lower case <firstname> All letters lower case
Upper case <FIRSTNAME>
Underscore <first_name> Underscore separates words
Pascal case <FirstName> Uppercase first letter in each word
Camel case <firstName> Uppercase first letter in each word except the first

XML Elements are Extensible
XML elements can be extended to carry more information.
Look at the following XML example:
<note>
  <to>Tove</to>
  <from>Jani</from>
  <body>Don't forget me this weekend!</body>
</note>

Imagine that the author of the XML document added some extra information to it:
<note>
  <date>2008-01-10</date>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

Should the application break or crash?
No. The application should still be able to find the <to>, <from>, and <body> elements in the XML document and produce the same output.
This is one of the beauties of XML. It can be extended without breaking applications.
XML Attributes
Attribute values must always be quoted. Either single or double quotes can be used.
For a person's gender, the <person> element can be written like this:
<person gender="female">
or like this:
<person gender='female'>

If the attribute value itself contains double quotes you can use single quotes, like in this example:
<gangster name='George "Shotgun" Ziegler'>
or you can use character entities: this is more preferable
<gangster name="George "Shotgun" Ziegler">
Note: Metadata (data about data) should be stored as attributes, and the data itself should be stored as elements.

Below is more preferable
<note>
  <date>
    <year>2008</year>
    <month>01</month>
    <day>10</day>
  </date>
  <to>Tove</to>
  <from>Jani</from>
</note>
Avoid XML Attributes?
Some things to consider when using attributes are:
• attributes cannot contain multiple values (elements can)
• attributes cannot contain tree structures (elements can)
• attributes are not easily expandable (for future changes)

Don't end up like this:
<note day="10" month="01" year="2008"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>

XML Attributes for Metadata
Sometimes ID references are assigned to elements. These IDs can be used to identify XML elements in much the same way as the id attribute in HTML. This example demonstrates this:
<messages>
  <note id="501">
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
  </note>
</messages>
The id attributes above are for identifying the different notes. It is not a part of the note itself.
Metadata (data about data) should be stored as attributes, and the data itself should be stored as elements.

XML Namespaces
provide a method to avoid element name conflicts.







windows command : findstr


1.       Check pattern start at beginning
h\s1>findstr /b /c:"2017-01-31 11:37:35,85" Test.txt

/b    = from beginning
/c:  = give search string

Some useful SQL Queries


Block queries


SELECT
    spid
    ,sp.status
    ,loginame   = SUBSTRING(loginame, 1, 12)
    ,hostname   = SUBSTRING(hostname, 1, 12)
    ,blk        = CONVERT(char(3), blocked)
    ,open_tran
    ,dbname     = SUBSTRING(DB_NAME(sp.dbid),1,10)
    ,cmd
    ,waittype
    ,waittime
    ,last_batch
    ,SQLStatement       =
        SUBSTRING
        (
            qt.text,
            er.statement_start_offset/2,
            (CASE WHEN er.statement_end_offset = -1
                THEN LEN(CONVERT(nvarchar(MAX), qt.text)) * 2
                ELSE er.statement_end_offset
                END - er.statement_start_offset)/2
        )
FROM master.dbo.sysprocesses sp
LEFT JOIN sys.dm_exec_requests er
    ON er.session_id = sp.spid
OUTER APPLY sys.dm_exec_sql_text(er.sql_handle) as qt
WHERE spid IN (SELECT blocked FROM master.dbo.sysprocesses)
AND blocked = 0


      

Kill process  - kill and processID

kill 201;


check Index

select the db and run

SELECT ps.database_id, object_name(ps.OBJECT_ID) as table_name, ps.index_id, b.name as index_name, ps.avg_fragmentation_in_percent,ps.page_count
FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS ps
INNER JOIN sys.indexes AS b ON ps.OBJECT_ID = b.OBJECT_ID
inner join sys.tables as c ON b.object_id = c.object_id
AND ps.index_id = b.index_id
WHERE ps.database_id = DB_ID()
and b.name is not null
ORDER BY ps.avg_fragmentation_in_percent desc



Check last executed stats


/* 1.Query to check when statistics was last executed */
SELECT
  st.object_id                          AS [Table ID]
, OBJECT_NAME(st.object_id)             AS [Table Name]
, st.name                               AS [Index Name]
, STATS_DATE(st.object_id, st.stats_id) AS [LastUpdated]
, modification_counter                  AS [Rows Modified]
FROM
sys.stats st
CROSS APPLY
sys.dm_db_stats_properties(st.object_id, st.stats_id) AS sp
WHERE
STATS_DATE(st.object_id, st.stats_id)<=DATEADD(DAY,-1,GETDATE()) 
AND modification_counter > 0
AND OBJECTPROPERTY(st.object_id,'IsUserTable')=1
order by OBJECT_NAME(st.object_id)





read sp


sp_helptext 'myDb.spName'



few




SELECT
       r.session_id
       ,st.TEXT AS batch_text
       ,SUBSTRING(st.TEXT, statement_start_offset / 2 + 1, (
                     (
                           CASE
                                  WHEN r.statement_end_offset = - 1
                                         THEN (LEN(CONVERT(NVARCHAR(max), st.TEXT)) * 2)
                                  ELSE r.statement_end_offset
                                  END
                           ) - r.statement_start_offset
                     ) / 2 + 1) AS statement_text
       ,qp.query_plan AS 'XML Plan'
       ,r.*
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS st
CROSS APPLY sys.dm_exec_query_plan(r.plan_handle) AS qp
ORDER BY cpu_time DESC





select
    P.spid,
       P.status
,   right(convert(varchar,
            dateadd(ms, datediff(ms, P.last_batch, getdate()), '1900-01-01'),
            121), 12) as 'batch_duration'
,   P.program_name
,   P.hostname
,   P.loginame
from master.dbo.sysprocesses P
where P.spid > 50
and      P.status not in ('background', 'sleeping','runnable')
and      P.cmd not in ('AWAITING COMMAND'
                    ,'MIRROR HANDLER'
                    ,'LAZY WRITER'
                    ,'CHECKPOINT SLEEP'
                    ,'RA MANAGER')
order by batch_duration desc





Disable and enable windows taskschedular

move "C:\Windows\System32\Tasks\Test\TestPS" "C:\Windows\System32\Tasks\Test\TestPS.bak"


-- enable

move "C:\Windows\System32\Tasks\Test\TestPS.bak" "C:\Windows\System32\Tasks\Test\TestPS" 

powershell script to get some performance stats

#////////////////////////////////////////////////////////////////////////////////////////////


Param($globalSelectedItems)

foreach ($globalSelectedItem in $globalSelectedItems) {

$selectedObject = $globalSelectedItem["DisplayName"]
$hostpath = $globalSelectedItem["Path"]      #Get the server name
}

$class = get-scomclass -Name Microsoft.Windows.Server.OperatingSystem

#Look for OS instance of server
$selectedserverOS = Get-SCOMClassInstance -class $class | ? {$_.Path -ilike $hostpath}

$dataObject = $ScriptContext.CreateInstance("xsd://OSMEMPROC!val/stat")

$dataObject["Id"] = "ItemSelected"
$dataObject["Path"] = $hostpath

$aggregationInterval = 60

#Last 60 minutes (1hr)
  $dt = New-TimeSpan -minute $aggregationInterval   
  $now = Get-Date 
  $from = $now.Subtract($dt)

#Note: the GetMonitoringPerformanceData retrieves data recorded in UTC. So you may need to add some extra lines in the script to handle that as some local times may be a future date and no data will be returned.

$perfRules = $selectedserverOS.GetMonitoringPerformanceData()

foreach ($perfRule in $perfRules)
{
#Get % Processor Time Stat
if($perfRule.CounterName  -eq "% Processor Time")  {
      $data = $perfRule.GetValues($from, $now) | % { $_.SampleValue } | Measure-Object –Average 
 
     $CPUStat =  [math]::round($data.Average,2)
     $dataObject["CPUStat"] = $CPUStat
  }
#Get % Memory Used Stat
  if($perfRule.CounterName  -eq "PercentMemoryUsed")  {
      $data = $perfRule.GetValues($from, $now) | % { $_.SampleValue } | Measure-Object –Average 

     $MemState = [math]::round($data.Average,2)
     $dataObject["MemStat"] =  $MemState
  }
}

$ScriptContext.ReturnCollection.Add($dataObject)

#////////////////////////////////////////////////////////////////////////////////////////////


Powershell script to send mail


$a = ""

$table1 = Get-Childitem D:\MyFiles | where {$_.LastwriteTime -le (Get-date).AddDays(-7)}|where {$_.Name -like "myFile.xls" }| Select Name,LastWriteTime |ConvertTo-Html -head $a -Property Name,LastWriteTime


$FromEmail="sender@test.com"
$ToEmail="receiver@test.com"
$CcEmail="cc1@test.com;cc2@test.com;cc3@test.com"
$SMTPMail="mailserver.test.com"


 Function sendEmail([string]$emailFrom, [string]$emailTo,[string]$emailCc, [string]$subject,[string]$body,[string]$smtpServer)
{
$email = New-Object System.Net.Mail.MailMessage 
$email.From = $emailFrom
$email.To.Add($emailTo)
$email.Cc.Add($CcEmail)
$email.Subject = $subject
$email.IsBodyHTML = $true
$email.Body = $body
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($email)
}
$date=get-date
$message = "Hi Team,
"
$message += "
"
$message += "Test File file has not been uploaded today
"
$message += "
$table1
"
$message += "Thanks
Test Team
"


sendEmail -emailFrom $fromEmail -emailTo $ToEmail -emailCc $CcEmail -subject "Test file Status -$($date)" -body $message -smtpServer $SMTPMail