By David Wiseman (Administrator)published 13 Jul 2009, modified 03 Apr 2012
My Rating:
Vote
Rating:
Not Rated
Views:29219

DBA Daily Checks Email Report

Introduction

DBAs typically create a number of alerts to inform them of potential problems with their database servers.  In addition to these alerts, it's also important to proactively monitor your database servers by running a series of daily checks.  The exact checks performed will vary from organization to organization, but some common ones include:

  • Check backups
  • Check SQL Server agent jobs
  • Check disk space
  • Check free space in database files
  • Check SQL Server error log
  • Check Windows event logs

Your daily checks might not be limited to those listed above and you might also have more comprehensive checks on a weekly/monthly/quarterly basis. 

One of the problems with daily checks is that the information you need to complete your checks isn't available in a single location and potential problems are not always highlighted.  To improve this process I created a stored procedure to send a HTML email report for the SQL Server instance, which is automated via the SQL Server Agent.  If you haven't already found a good method of performing daily checks, the DBAChecks stored procedure in this article might give you a good starting point.

Report Sample

The image below is a sample report that was generated from a test instance of SQL Server. 

 DBA Checks HTML Report Sample

Compatibility

  • SQL Server 2005 (SP3)
    There seems to be a bug in earlier builds related to attachments in email messages.  You might get an error similar to this one:
    Exception happened when running extended stored procedure 'xp_sysmail_format_query' in the library 'xpstar90.dll'. SQL Server is terminating process 62. Exception type: Win32 exception; Exception code: 0xc0000005.
    You can fix this by upgrading to the latest service pack or removing the code that adds the error log attachment to the email.  Restarting the SQL Server Agent can also provide a temporary fix for this issue, but the problem is likely to re-occur.
  • SQL Server 2008
  • SQL Server 2008 R2

Installation Instructions

  • Create a database for DBA related tasks if one doesn't already exist.
  • Install SQLIO_fnGetDrives() CLR function.  See here.
  • Install DBA Checks stored procedures.  Download.
  • Make sure you have configured database mail on the SQL Server instance.
  • Create a SQL Server Agent Job to run the dbo.DBAChecks stored procedure.

Version History

Date Version Notes
03-Apr-2012Version 1.2 BETAFix to DBAChecks_JobStats stored procedure.  Added CDATA section.
14-Dec-2010 Version 1.1 BETA Fixed datetime conversion bug in DBAChecks_JobStats procedure.
13-Jul-2009 Version 1.0 BETA Beta release

Running the report

The DBA Checks report is run by executing the dbo.DBAChecks stored procedure.  This stored procedure takes a number of parameters, but only one is required:

exec dbo.DBAChecks @recipients='dummyemail@wisesoft.co.uk'

The code below shows a call to the DBAChecks stored procedure with all parameters specified:

EXEC dbo.DBAChecks @AgentJobsNumDays=3,
@FileStatsIncludedDatabases=NULL,
@FileStatsExcludedDatabases=NULL,
@FileStatsPctUsedWarning=90,
@FileStatsPctUsedCritical=95,
@DiffWarningThresholdDays=3,
@FullWarningThresholdDays=7,
@TranWarningThresholdHours=4,
@FreeDiskSpacePercentWarningThreshold=15,
@FreeDiskSpacePercentCriticalThreshold=10,
@UptimeCritical=1440 ,
@UptimeWarning=2880,
@ErrorLogDays=3,
@Recipients='dummyemail@wisesoft.co.uk',
@MailProfile=NULL

A full explanation of these parameters is available here:

 @AgentJobsNumDays The number of days SQL SQL Server jobs are reported over.
 @FileStatsIncludedDatabases A list of databases (comma-separated) to display file stats for.  Default value is NULL (All databases).
 @FileStatsExcludedDatabases A list of databases (comma-separated) that are excluded from database file stats.  Default values is NULL (No excluded databases)
 @FileStatsPctUsedWarning If the percent used space in the database file is larger than this value (but less than critical threshold) it will be highlighted in yellow.
 @FileStatsPctUsedCritical If the percent used space in the database file is larger than this value it will be highlighted in red.
 @DiffWarningThresholdDays Highlights differential backups that have not been completed for over "X" number of days
 @FullWarningThresholdDays Highlights full backups that have not been completed for over "X" number of days
 @TranWarningThresholdHours Highlights transaction log backups that have not been completed for over "X" number of hours.
 @FreeDiskSpacePercentWarningThreshold Used to highlight disk drives with low disk space in yellow, where the free disk space percent is less than the value specified.
 @FreeDiskSpacePercentCriticalThreshold Used to highlight disk drives with low disk space in red, where the free disk space percent is less than the value specified.
 @UptimeCritical The uptime in minutes threshold that causes the uptime to be highlighted in red.
 @UptimeWarning The uptime in minutes threshold that causes the uptime to be highlighted in yellow.
 @ErrorLogDays The number of days worth of events included in the attached error log html file.
 @Recipients The email addresses where the report will be sent.
 @MailProfile The mail profile used to send the email.  NULL = default profile.

Database Code

Name Info
dbo.DBAChecks This is the stored procedure you run to generate the email report. The stored procedure collates the information from the other stored procedures into a single email report.   The parameters are described in the previous section. 
dbo.DBAChecks_Backups Produces HTML for the "Backups" section of the report.
dbo.DBAChecks_DBFiles Produces HTML for the "Database Files" section of the report. 
dbo.DBAChecks_DiskDrives Produces HTML for the "Disk Drives" section of the report.
dbo.DBAChecks_ErrorLog Produces HTML for the "ErrorLog.htm" report attachment.  Review and ammend the filter applied to the error log as appropriate.
dbo.DBAChecks_FailedAgentJobs Produces HTML for the "Failed Jobs" section of the report.
dbo.DBAChecks_JobStats Produces HTML for the "Agent Job Stats" section of the report
dbo.SQLIO_fnGetDrives() This CLR function is used by the dbo.DBAChecks_DiskDrives stored procedure to produce the report on disk drives and their available free space.  This function can be obtained here.

Conclusion

Daily checks are an important part of any DBA's routine, giving you confidence that your SQL instances are running problem free and allowing you to take corrective actions when required.  Alerts are also important, but these should be used to compliment daily checks, rather than to replace them.  If you rely on by exception reporting only, your servers will be at risk if something happens to the alert process. 

I'm sure there are a wide variety of methods people currently use to perform their daily checks. The process you use is not important as long as it enables you to effectively monitor your SQL Server instances. If you've already got a routine that works for you - great!  If not, hopefully this article will provide you with a better solution.




  Post Comment
Order By:  
User Comments
      
julianh
Posted On: 11/11/2009 1:30:38 AM

Thanks for this - is there a way to produce the report for remote SQL servers so you can run them centrally from one server?

David Wiseman (Administrator)
United Kingdom
Posted On: 12/14/2010 12:10:03 PM

The code would need to be installed on each server. The stored procedure could be executed remotely from a central server, but it's probably eaiser to create a separate job on each server.

mgrzymala
Posted On: 6/29/2012 4:41:00 AM

I haapen to have one instance with collation Polish_CS_AS_KS where the DBAChecks_Backups procedure won't install because I get "Must declare the scalar variable @TranWarningThresholdHours" (and some others) when parsing the script. I already tried creating a separate utility database with normal collation and run the script against it, but did not help (?)
How can I install the procedure without having to change the instance collation?

mgrzymala
Posted On: 7/2/2012 8:32:51 AM

I'll answer my own question: after minor corrections of the names (upper/lower case) of some of the variables everything went through just fine. The variables that needed name-consistency adjustments were: @server, @TranWarningThresholdHours, @UptimeWarning, @DiffWarningThresholdDays and @nextrun

panosm
Posted On: 6/29/2015 5:20:51 AM

First of all i would like to thank you for this very useful guide!
i have only one question for you:
In case i want to produce the html report locally and export it to my server and not send it via email,what are the changes that i have to make for this?

Thank you in advance

Ramprasad
Posted On: 9/28/2016 4:30:36 AM

Failed to initialize sqlcmd library with error number -2147024809. [SQLSTATE 42000] (Error 22050). The step failed. - any update/fix
for the above issue

Ramprasad
Posted On: 9/28/2016 6:31:46 AM

Error collecting backup info? help please..

Ramprasad
Posted On: 9/28/2016 7:47:13 AM

Error collecting backup info? help please..

LonHost
Posted On: 12/10/2016 10:31:29 AM

Well Done - I've just deployed this against our small SQL estate and a good solution for us.

vmcn
Posted On: 3/1/2017 12:10:17 PM

Hi, for all with problem:

Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AS" in the equal to operation.

The column fullrec.database_name and record.name in line 37, 38 and 80

put fullrec.database_name COLLATE DATABASE_DEFAULT

Ex: fullrec.database_name COLLATE DATABASE_DEFAULT in (select name from master..sysdatabases )
and fullrec.database_name COLLATE DATABASE_DEFAULT <> 'tempdb'



And select * from msdb..backupset where record.name COLLATE DATABASE_DEFAULT = database_name and server_name = @server



urrr00
Posted On: 3/21/2017 7:24:09 AM

I'am getting the following error message.

Failed to initialize sqlcmd library with error number -2147024809

Please advise. Thanks.

rkalmar
Posted On: 3/29/2017 12:17:23 PM [Edited 3/29/2017 12:19:08 PM]

For those with error:

Failed to initialize sqlcmd library with error number -2147024809

on MSSQL 2014, this fixed it for me:
Modify the following in the stored procedure DBAChecks:

(all the way on the bottom)
EXEC msdb.dbo.sp_send_dbmail
@query=@ErrorLogSQL,
@attach_query_result_as_file = 1,
@query_attachment_filename = 'ErrorLog.htm',
@query_result_header = 1, -- this needs to be 1
@query_no_truncate = 1,
@query_result_width=32767,
@recipients =@Recipients,
@body = @HTML,
@body_format ='HTML',
@subject = @subject,
@execute_query_database=@ExecuteQueryDB,
@profile_name = @MailProfile

More details on:
http://sqldot.com/failed-to-initialize-sqlcmd-library-with-error-number-2147024809/

ram86
Posted On: 7/13/2017 10:33:53 PM

Hi All,

Can you please help me to add offline databases status to this code...

Thanks,
Ram


Posted On: 8/27/2018 1:16:22 AM

Probably many PK FACTORY YEEZY GOD YEEZY 350 MoonRock For Cheap children like balloons because they are especially fun. Like me, KO factory Adidas Ultra Boost 3.0 BA8841 BASF Boost Cheap On Sale when I was ten, I felt the balloon was boring. But my sister, she likes balloons very much. Cheap C4 FACTORY YEEZY 350 V2 DGH SOLID GREY BASF BOOST For Sale My sister has a lot of balloons, there are green ones, some green ones depict white spots, some have nothing above, just a green one. Swarovski Angelic Bracelet, White, Rhodium Plating Gold Rhodium-Plated There are red ones, and the red ones depict a lot of little love, but also depict spots. There are pink, pink painted bears and love. Cheap Swarovski 5195170 Cupid Bangle A lot of bears are surrounded by love, and some love is above the bear. Swarovski Attract Triangle Stud Pierced Earrings, White, Rhodiums Rose Gold&nbsp; My sister also has blue and yellow. The yellow top depicts the five-pointed star, big and small, beautiful. It is like a yellow starry sky at night. Blue, the rose is portrayed above, several roses Necklace Woman Jewellery Swarovski Heart Locket Rose Gold Cheap On Sale are surrounded by a circle, and there are spots around. These balloons are my sister's favorite.
Once, I Necklace Woman Jewellery Swarovski Heart Locket Gold Cheap For Sale blow a balloon to my sister and accidentally blow up the red green. Cheap PK FACTORY GOD ADIDAS PW&nbsp;HUMAN RACE NMD TRAIL X PHARRELL WILLIAMS OREO WITH BASF BOOST My grandmother, crying when I open my mouth. I had to make a sin. I took out my 20 yuan Swarovski Fizzy Ring Gold Rhodium-Plated Cheap For Discount pocket money and bought her a pack. The younger sister did not cry. Breaking into laughter. PK FACTORY ADIDAS Y 3 - YOHJI YAMAMOTO PURE BOOST ZG CRYSTAL WHITE Have fun playing for an afternoon. My sister likes to draw balloons in addition to blowing balloons. Swarovski Crystal Red Heart Jewelry Set - Gifts By 1-800 Flowers My sister will not speak when she is one year old, but her sister knows. I took paper and pen to my sister this afternoon. Discount Fila The sister took a pen and drew something on the paper. Swarovski Facet Swan Bangle, Multi-Colored, Mixed Plating Black Set&nbsp; Then I drew a line. Holding a balloon, Fila 2018 New Arrive Casual Black For Discount oh, screaming. I knew that my sister was painting a balloon.
This is the sister who likes balloons.
Talking Cheap Fila Running Shoes about this friend, I will evoke many good memories from my memory. Her name is Wang Wenxi, a cute and beautiful girl. Skechers D'Lites Panda Shoes Leopard Print Platform Sneakers Red Cheap For SaleThis girl has many advantages, such as: learning well, sports well, caring for small animals, flowers... she was known last year.
At that time, Cheap PK FACTORY GOD BATCH BALENCIAGA SPEED TRAINER WITH ORIGINAL MATERIALS I was swinging in a small park. &nbsp;Swarovski Attract Round Ring, White, Rhodium Plating White RhodiumThis girl I don't know is sitting on a small stone bench next to me, holding a little petal in her hand. Skechers Flyknit Yeezy Boost Dark Gray Discount For Cheap At that time, I was thinking about the little girl in the building! Why haven't I seen it? So, I stopped swinging and asked the Swarovski Outlet&nbsp; little girl: &quot;Are you a few buildings?&quot; She said: &quot;I am new. I will leave next year.&quot; She has big, bright eyes. Cheap Skechers Go Walk 3 Unisex Walking Shoes Gray For Sale High nose, beautiful!
Time is like the wind, and in a blink of an eye, Cheap Skechers D Lites Magic Pink in August of this year, Wang Wenzhao will move to Longfengyuan. Fila Sandals Black Cheap For Sale Today she just left. When she left, she said to me: &quot;I am very happy, you can accompany me for so long, Cheap Yeezy Boost 350 you must It is a very loyal friend! Although I have to move to Longfengyuan, I will come here to play! Because my most loyal friend is always waiting for me here! Right?&quot; Cheap NIKE PAIRS AIR JORDAN 3 NRG TINKER HARTFIELD BLACK LIMITED BEST VERSION After listening to this sentence, I am a little self Responsibility, H12 FACTORY Nike x Tom Sachs Mars Yard 2.0 NikeLab NIKECraft For Cheap in fact, I am not the most loyal friend. I sometimes disliked her when she was. She especially likes to pick flowers. Skechers Balenciaga High Quality Suede Leather Red Cheap On Sale I used to rush to her directly, and started to pick flowers. Later, I realized that the time we spent together was so small. Fila Woven Mesh Breathable Light Running Shoes Beige For Cheap I also disliked him last time, but she regarded me as her most sincere friend.



Posted On: 9/28/2018 1:37:04 AM

ugg outlet
canada goose outlet
cheap jerseys
air jordan 4
polo ralph lauren
ugg outlet
christian louboutin outlet
coach outlet online
polo ralph lauren
michael kors outlet
pandora outlet
ugg outlet
canada goose outlet
canada goose outlet
true religion jeans
vibram fivefingers
adidas nmd shoes
moncler jackets
true religion outlet
yeezy boost
ugg outlet
air max 90
uggs outlet
nike huarache
pandora jewelry
ugg boots clearance
michael kors outlet
michael kors handbags
canada goose outlet
canada goose outlet
pandora charms
true religion jeans
nfl jerseys wholesale
canada goose jackets
coach outlet
christian louboutin outlet
coach outlet
christian louboutin outlet
longchamp handbags
michael kors outlet
michael kors outlet
pandora charms
christian louboutin outlet
christian louboutin outlet
canada goose jackets
adidas yeezy
michael kors outlet
polo ralph lauren
valentino outlet
coach outlet
pandora jewelry
pandora outlet
mont blanc pens
air max 90
birkenstock outlet
nike trainers
nike outlet
lebron james shoes
coach outlet
adidas outlet
kate spade outlet
polo outlet
hermes birkin
kate spade outlet
moncler outlet
uggs outlet
ray ban sunglasse
mont blanc pens
michael kors handbags
polo ralph lauren
coach outlet
coach outlet
coach outlet online
canada goose jackets
coach outlet store online
coach outlet online
mbt shoes
polo ralph lauren
coach outlet
pandora jewelry
moncler outlet
canada goose outlet
pandora jewelry
michael kors outlet
michael kors outlet
pandora outlet
coach factory outlet
ray ban sunglasses
canada goose outlet
michael kors outlet
ugg outlet
canada goose jackets
michael kors outlet
coach outlet
ralph lauren uk
christian louboutin outlet
michael kors outlet
oakley sunglasses wholesale
polo outlet
coach outlet
adidas outlet
nfl jerseys wholesale
christian louboutin outlet
nike shoes
canada goose jackets
cheap nfl jerseys
lebron james shoes
coach outlet
kate spade outlet
polo shirts
christian louboutin outlet
ferragamo outlet
cheap ugg boots
michael kors outlet clearance
superdry clothing
michael kors handbags
oakley sunglasses wholesale
coach outlet
coach outlet canada
canada goose outlet
michael kors outlet
north face jackets
kate spade outlet
cheap ugg boots
polo ralph lauren
canada goose outlet
true religion outlet store
kate spade outlet
michael kors outlet
coach outlet online
fred perry polo shirts
ultra boost
christian louboutin outlet
prada outlet
christian louboutin outlet
kate spade outlet
off white clothing
kate spade outlet
moncler jackets
kate spade outlet
christian louboutin outlet
air jordan shoes
coach outlet online
kate spade outlet
pandora outlet
christian louboutin outlet
moncler jackets
polo ralph lauren
mbt shoes
ugg outlet
coach outlet
ugg outlet
ralph lauren polo
michael kors handbags
ralph lauren outlet
coach factory outlet
cheap jordans
chaussures christian louboutin
michael kors outlet
ugg outlet
kate spade outlet
canada goose jackets
polo outlet
michael kors outlet
nfl jerseys
pandora outlet
coach outlet
coach factory outlet
ray ban sunglasse
supreme uk
michael kors outlet
nfl jerseys
canada goose jackets
coach outlet
true religion outlet
scarpe mbt
michael kors outlet
air max 2017
nfl jerseys wholesale
pandora jewelry outlet
cheap jordans
coach outlet online
ray ban outlet
nfl jerseys wholesale
michael kors outlet
coach factory outlet
michael kors outlet
christian louboutin outlet
canada goose outlet
coach outlet
oakley sunglasses wholesale
michael kors outlet clearance
supreme outlet
mont blanc pens
coach factory outlet
cheap mlb jerseys
true religion jeans
nba jersey
mlb jerseys wholesale
ray ban sunglasses
canada goose outlet
christian louboutin outlet
oakley sunglasses
nike shoes
cheap nfl jerseys
birkenstock shoes
ed hardy clothing
oakley sunglasses
mulberry handbags
ralph lauren shirts
michael kors outlet
nike outlet
coach outlet
michael kors outlet
polo ralph lauren
cheap nfl jerseys
ugg boots
michael kors outlet
coach outlet
asics running shoes
pandora charms
michael kors outlet
nfl jerseys wholesale
pandora charms
pandora charms
uggs outlet
uggs outlet
christian louboutin
mbt shoes
canada goose outlet
tory burch outlet
coach factory outlet
pandora charms
michael kors outlet
coach outlet
yeezy boost
ralph lauren sale clearance
mulberry handbags
adidas nmd
mlb jerseys
canada goose outlet
coach outlet
michael kors outlet
ugg outlet
kate spade outlet
ugg outlet
ray ban sunglasse
adidas yeezy
mulberry handbags
coach outlet
mbt shoes
nike outlet
michael kors outlet
pandora outlet
mbt shoes
ugg boots
nike shoes outlet
coach factory outlet
michael kors outlet clearance
coach outlet online
coach outlet
north face jackets
ugg outlet
polo outlet
yeezy boost
polo ralph lauren
christian louboutin outlet
polo ralph lauren
ralph lauren polo shirts
coach outlet online
adidas nmd
ugg outlet
coach outlet
coach outlet
fitflops sale clearance
pandora outlet
valentino outlet
nike shoes
coach outlet
michael kors handbags
canada goose jackets
michael kors handbags
canada goose outlet
fitflops sale clearance
ray ban sunglasses
cheap oakley sunglasses
polo outlet
moncler outlet
canada goose outlet
adidas yeezy shoes
coach outlet
nfl jerseys
oakley sunglasses wholesale
polo ralph lauren
kate spade outlet
ray ban sunglasses
canada goose jackets
adidas outlet
coach outlet
pandora outlet
michael kors outlet
coach outlet
coach outlet online
cheap ray bans sunglasses
coach outlet
michael kors outlet
lunette ray ban
michael kors taschen
michael kors outlet
true religion outlet
nike outlet
christian louboutin outlet
ugg boots
pandora charms
air jordan retro
coach outlet
mont blanc pens
nhl jerseys
red bottom shoes
true religion outlet
mbt shoes
louboutin shoes
michael kors outlet
asics shoes
canada goose jackets
polo ralph lauren
gucci outlet
christian louboutin outlet
coach outlet
coach outlet
canada goose
rolex watches
michael kors handbags
coach factory outlet
michael kors outlet
pandora charms sale clearance
canada goose outlet
polo ralph lauren pas cher
oakley sunglasses
michael kors outlet
giuseppe zanotti outlet
canada goose outlet
polo outlet
canada goose outlet
moncler jackets
christian louboutin outlet
coach factory outlet
nike outlet
coach outlet online
nike outlet
tory burch outlet
kate spade handbags
fred perry polo
fred perry polo shirts
red bottom shoes
cheap ugg boots
coach outlet
cheap nfl jerseys
coach outlet
ralph lauren shirts
true religion jeans
christian louboutin boutique
north face jackets
prada handbags
christian louboutin outlet
nfl jerseys
christian louboutin outlet
pandora jewelry
polo ralph lauren
mcm handbags
moncler outlet
true religion outlet
polo ralph lauren
polo outlet
cheap nfl jerseys
coach outlet
cheap ugg boots
coach outlet online
pandora jewelry
pandora jewelry
mbt shoes
pandora outlet
nfl jerseys
pandora charms
coach outlet
uggs outlet
coach outlet online
longchamp outlet
coach outlet
nike air max
ugg boots
ugg boots
michael kors handbags
canada goose jackets
adidas superstar shoes
cheap snapbacks
giuseppe zanotti outlet
adidas shoes
michael kors outlet
red bottom shoes
fitflops sale clearance
pandora charms
christian louboutin outlet
canada goose outlet
coach outlet
polo ralph lauren
fitflops sale clearance
christian louboutin outlet
coach outlet
mulberry handbags
oakley sunglasses
michael kors outlet
michael kors handbags
gucci outlet
michael kors outlet
moncler outlet
north face jackets
mcm outlet
puma outlet
coach outlet
nhl jerseys
cheap jordans
uggs outlet
hermes belts
manolo blahnik outlet
cheap ugg boots
michael kors outlet
ralph lauren outlet
ugg outlet
north face jackets
adidas outlet
ralph lauren outlet
polo ralph lauren
ed hardy
kate spade outlet
ugg outlet
canada goose jackets
ralph lauren polo
christian louboutin shoes
uggs outlet
canada goose jackets
pandora charm
ugg boots clearance
cheap nfl jerseys
canada goose jackets
pandora jewelry
cheap jerseys
kate spade outlet
yeezy boost
ugg outlet
michael kors outlet
uggs outlet
nike kyrie 3
off-white
canada goose outlet
pandora outlet
lacoste outlet
nike shoes
michael kors outlet
michael kors outlet
oakley sunglasses
tory burch outlet
coach outlet
ralph lauren outlet
ugg boots
ralph lauren outlet
kate spade outlet
polo ralph lauren
christian louboutin outlet
pandora outlet
michael kors outlet
ugg outlet
coach outlet
red bottoms
michael kors outlet
uggs canada
ugg boots
nike outlet
polo ralph lauren
uggs outlet
coach outlet
christian louboutin outlet
converse
adidas nmd
pandora jewelry
coach outlet
true religion jeans
yeezy boost 350
coach outlet
polo outlet
christian louboutin outlet
fred perry outlet
michael kors handbags
oakley sunglasses
ray ban sunglasses
polo ralph lauren
uggs outlet
canada goose outlet
canada goose outlet
canada goose jackets
michael kors handbags
clarks shoes
adidas yeezy
pandora charms
oakley sunglasses
kate spade outlet
prada outlet
ferragamo shoes
tory burch outlet
valentino outlet
polo outlet
coach outlet online
uggs canada
true religion jeans
canada goose outlet
coach outlet online
christian louboutin shoes
pandora outlet
pandora outlet
michael kors outlet
kate spade outlet
michael kors uk
michael kors outlet
michael kors outlet
canada goose jackets
cheap jordans
polo outlet
ugg boots
longchamp outlet
michael kors outlet
christian louboutin outlet
michael kors outlet
pandora outlet
ray ban sunglasse
supreme
ugg boots
michael kors outlet
rolex watches
kobe bryant shoes
moncler outlet
canada goose
vans shoes
michael kors outlet
michael kors outlet
kebirong20180928

12