Skip to main content

Posts

Showing posts from November, 2016

Email Alerts are not received...

In one of application, Email alerts are sent using SQL sp_send_dbmail stored procedure. Email alerts were working properly, but suddenly noticed email alerts are not received.

To troubleshoot the issue, first I checked the msdb.dbo.sysmail_event_log table using the below query.

SELECT log_id, event_type, log_date, description, process_id, mailitem_id, account_id, last_mod_date, last_mod_user
FROM
msdb.dbo.sysmail_event_log 
ORDER BY
log_date DESC

If there is any error, you should see records with the event_type value as error.
In my case there are records with event_type value as error, and the description value for those records is same as below

The mail could not be sent to the recipients because of the mail server failure. (Sending Mail using Account 3 (2018-02-01T10:41:27). Exception Message: Cannot send mails to mail server. (The SMTP server requires a secure connection or the client was not authenticated. The server response was: Authentication required).  )

As per the error descript…

Split comma separated values in a column to multiple columns in SQL...

In this post I am sharing how to split comma separated values in a column to multiple column in SQL.
In this case, we have a table with two columns. One is with the Code and the other column with the seven number values separated by a comma as Numbers

Code           Numbers
A                10,2,55,5,67,11,45
C                1,32,5,15,7,71,35
--                 ---------------------

The expected output is as below

Code          V1  V2  V3  V4  V5  V6  V7
A                10     2   55    5    67  11   45
C                   1   32    5   15     7   71  35


It can be achieved by using the below query.

SELECT Code, [1] AS [V1],[2] AS [V2],[3] AS [V3],[4] AS [V4],[5] AS [V5],[6] AS [V6],[7] AS [V7]
FROM (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY [Code] ORDER BY (SELECT  null)) as rn
FROM (
    SELECT [Code], [Numbers]
    FROM [SampleTable]
) as a
CROSS APPLY string_split([Numbers],',')
) as SourceTable
PIVOT
(
    MAX([value])
    FOR rn IN ([1],[2],[3],[4],[5],[6],[7])
)a…