SQL Server – sys.dm_db_index_physical_stats – Error = Msg 2530 – Index on Table is Disabled

Background

Continuing the trend on XML and Indexing Requirements…

One of the few ways to reliably determine the size of XML Indexes is to access the sys.dm_db_index_physical_stats dmv.

Code

Get Index Size and Fragmentation%

To get the sizes and fragmentation level for all indexes in the current database one will issue a query similar to the one below.


SELECT 

		 [ObjectId]

		,[ObjectName]

		,[IndexId]

		,[indexName]

		,[IndexType]

		,indexLevel

		,[IndexSize(MB)]
		   = CONVERT
			(
			  DECIMAL(16, 1)
			, (
                            SUM
                               (
                                  [avg_record_size_in_bytes] * 
                                      [record_count]
                               ) 
                               / (1024.0 * 1024)
                          )
			)

		,[StatisticLastUpdated]
			= max([lastupdated])

		, [AvgFragmentationInPercent]
			= avg([AvgFragmentationInPercent])

FROM (

	SELECT 

	    ObjectID = tblInd.OBJECT_ID

	 ,  ObjectName
		= QuoteName
		  (
			object_schema_name
			(tblInd.object_id)
		  ) 
		  + '.'
		  + QuoteName
		    (
			object_name
			(
				tblInd.object_id
			)
		   )

	, [indexName]
		= tblSysInd.name

	, IndexID = tblInd.Index_ID
	, IndexType = Index_Type_Desc
	, IndexLevel = index_level
	, avg_record_size_in_bytes
	, record_count
	, LastUpdated
		= STATS_DATE
		(
		    tblInd.object_id
		  , tblInd.index_id
		)
	, AvgFragmentationInPercent
		= round(Avg_Fragmentation_In_Percent, 3)

	FROM sys.dm_db_index_physical_stats
	(
	    db_id()
	   , NULL
	   , NULL
	   , NULL
	   , 'detailed'
	) tblInd

	inner join sys.indexes tblSYSIND

	    on tblInd.object_id = tblSysInd.object_id
	    and tblInd.index_id = tblSysInd.index_id

	where index_level = 0

    ) T

GROUP BY 

      ObjectId
    , ObjectName
    , IndexId
    , [indexName]
    , IndexType
    , indexLevel



Table Created with disabled XML Primary Index

Create Table

Let us create a table and on creation mark the Primary XML index disabled


use [tempdb]
go
 
 
SET ARITHABORT ON
SET CONCAT_NULL_YIELDS_NULL ON
SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
SET NUMERIC_ROUNDABORT OFF
GO


 
if object_id('[dbo].[CourseManagerUserLog_ID]') is not null
begin
 
    drop table [dbo].[CourseManagerUserLog_ID]
     
end
go
 
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[CourseManagerUserLog_ID]') AND type in (N'U'))
BEGIN
 
CREATE TABLE [dbo].[CourseManagerUserLog_ID]
(
    [id] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
    [username] [varchar](100) NOT NULL,
    [resourceID] [int] NOT NULL,
    [status] [varchar](10) NOT NULL,
    [message] [varchar](250) NULL,
    [details] [xml] NULL,
    [userID] [varchar](100) NULL,
    [refID] [varchar](100) NULL,
    [record_created] [datetime] NOT NULL
    CONSTRAINT [DF_CourseManagerUserLogCustom_record_created_1]  DEFAULT (getdate()),
 
    CONSTRAINT [PK_CourseManagerUserLogCustom_1] PRIMARY KEY CLUSTERED 
    (
       [id] ASC
    )
    ON [PRIMARY]
 ) 
 ON [PRIMARY] 
 
END
GO
 
 
/****** Object:  Index [INDX_ADMIN_CourseManagerUserLogCustom_userID]    Script Date: 3/2/2016 5:50:32 PM ******/
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[Admin].[CourseManagerUserLog_ID]') AND name = N'INDX_ADMIN_CourseManagerUserLogCustom_userID')
CREATE NONCLUSTERED INDEX [INDX_ADMIN_CourseManagerUserLogCustom_userID] 
ON [dbo].[CourseManagerUserLog_ID]
(
    [userID] ASC
)
INCLUDE (   [id],
    [username],
    [resourceID],
    [status],
    [message],
    [details],
    [refID],
    [record_created])  ON [PRIMARY]
GO
 
 
/****** Object:  Index [INDX_DBA_RecordCreated_UserID]    Script Date: 3/2/2016 5:50:32 PM ******/
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[Admin].[CourseManagerUserLog_ID]') AND name = N'INDX_DBA_RecordCreated_UserID')
CREATE NONCLUSTERED INDEX [INDX_DBA_RecordCreated_UserID] 
ON [dbo].[CourseManagerUserLog_ID]
(
    [record_created] ASC,
    [username] ASC
)
GO
 
 
/****** Object:  Index [INDX_DBA_USERNAME_RecordCreated]    Script Date: 3/2/2016 5:50:32 PM ******/
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[Admin].[CourseManagerUserLog_ID]') AND name = N'INDX_DBA_USERNAME_RecordCreated')
CREATE NONCLUSTERED INDEX [INDX_DBA_USERNAME_RecordCreated] 
ON [dbo].[CourseManagerUserLog_ID]
(
    [username] ASC,
    [record_created] ASC
) 
GO
 
 
/****** Object:  Index [INDX_DBA_XML_MAIN]    Script Date: 3/2/2016 5:50:32 PM ******/
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[Admin].[CourseManagerUserLog_ID]') AND name = N'INDX_DBA_XML_MAIN')
CREATE PRIMARY XML INDEX [INDX_DBA_XML_MAIN] 
ON [dbo].[CourseManagerUserLog_ID]
(
    [details]
)
GO
 
ALTER INDEX [INDX_DBA_XML_MAIN] ON[dbo].[CourseManagerUserLog_ID] DISABLE
GO
 
 
/****** Object:  Index [INDX_DBA_XML_Property]    Script Date: 3/2/2016 5:50:32 PM ******/
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[Admin].[CourseManagerUserLog_ID]') AND name = N'INDX_DBA_XML_Property')
CREATE XML INDEX [INDX_DBA_XML_Property] 
ON [dbo].[CourseManagerUserLog_ID]
(
    [details]
)
USING XML INDEX [INDX_DBA_XML_MAIN] FOR PROPERTY 
GO
 
ALTER INDEX [INDX_DBA_XML_Property] ON[dbo].[CourseManagerUserLog_ID] DISABLE
GO
 
 
/****** Object:  Index [INDX_DBA_XML_Secondary_Path]    Script Date: 3/2/2016 5:50:32 PM ******/
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[Admin].[CourseManagerUserLog_ID]') AND name = N'INDX_DBA_XML_Secondary_Path')
CREATE XML INDEX [INDX_DBA_XML_Secondary_Path] 
ON [dbo].[CourseManagerUserLog_ID]
(
    [details]
)
USING XML INDEX [INDX_DBA_XML_MAIN] FOR PATH 
GO
 
ALTER INDEX [INDX_DBA_XML_Secondary_Path] ON[dbo].[CourseManagerUserLog_ID] DISABLE
GO

 

Review Index State

Let us confirm index state


use [tempdb]
go

declare @tableName sysname
declare @objectID int

set @tableName = '[dbo].[CourseManagerUserLog_ID]'
set @objectID = object_id(@tableName)


select 
	  tblSI.name
        , tblSI.index_id
	, tbLSI.is_disabled

from   sys.indexes tblSI

where  tblSI.object_id = @objectID

order by tblSI.index_id

Output:

0.IsIndexDisabled

 

Get Index Size

Let us get the index size


use [tempdb]
go


declare @tableName sysname
declare @objectID int

set @tableName = '[dbo].[CourseManagerUserLog_ID]'
set @objectID = object_id(@tableName)

SELECT 

	 [ObjectId]

	,[ObjectName]

	,[IndexId]

	,[indexName]

	,[IndexType]

	,indexLevel

	,[IndexSize(MB)]
	   = CONVERT
		(
		  DECIMAL(16, 1)
		, (SUM
                    (
                       [avg_record_size_in_bytes] * [record_count]
                    )    
                         / (1024.0 * 1024)
                   )
		)

		,[StatisticLastUpdated]
			= max([lastupdated])

		, [AvgFragmentationInPercent]
			= avg([AvgFragmentationInPercent])

FROM (

	SELECT 

	     ObjectID = tblInd.OBJECT_ID

	  ,  ObjectName
		= QuoteName
		(
		  object_schema_name
			(tblInd.object_id)
		)
		+ '.'
		+ 
		 QuoteName
		 (
		   object_name
		   (
			tblInd.object_id
		   )
	         )

		, [indexName]
			= tblSysInd.name

		, IndexID = tblInd.Index_ID
		, IndexType = Index_Type_Desc
		, IndexLevel = index_level
		, avg_record_size_in_bytes
		, record_count
		, LastUpdated
			= STATS_DATE
			  (
			      tblInd.object_id
			    , tblInd.index_id
			  )
		, AvgFragmentationInPercent
				= round(Avg_Fragmentation_In_Percent, 3)

		FROM sys.dm_db_index_physical_stats
			(
				  db_id()
				, @objectID
				, NULL
				, NULL
				, 'detailed'
			) tblInd

		inner join sys.indexes tblSYSIND

			on tblInd.object_id = tblSysInd.object_id
			and tblInd.index_id = tblSysInd.index_id

		where index_level = 0

    ) T

GROUP BY 

      ObjectId
    , ObjectName
    , IndexId
	, [indexName]
    , IndexType
	, indexLevel


Output:
1.GetIndexStats-ID

 

Enable XML Index

To fix we will go in and enable the XML Indexes by rebuilding them.


USE [tempdb]
GO


ALTER INDEX [INDX_DBA_XML_MAIN] 
ON [dbo].[CourseManagerUserLog_ID] 
REBUILD PARTITION = ALL 
GO

ALTER INDEX [INDX_DBA_XML_Secondary_Path] 
ON [dbo].[CourseManagerUserLog_ID] 
REBUILD PARTITION = ALL 
GO


ALTER INDEX [INDX_DBA_XML_Property] 
ON [dbo].[CourseManagerUserLog_ID] 
REBUILD PARTITION = ALL 
GO


Table Created with enabled XML Indexes, Later Primary XML Index Disabled

Create Table – [dbo].[CourseManagerUserLog_IE]


use [tempdb]
go


SET ARITHABORT ON
SET CONCAT_NULL_YIELDS_NULL ON
SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
SET NUMERIC_ROUNDABORT OFF

GO

if object_id('[dbo].[CourseManagerUserLog_IE]') is not null
begin

	drop table [dbo].[CourseManagerUserLog_IE]
	
end
go

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Admin].[CourseManagerUserLog_IE]') AND type in (N'U'))
BEGIN

CREATE TABLE [dbo].[CourseManagerUserLog_IE]
(
	[id] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
	[username] [varchar](100) NOT NULL,
	[resourceID] [int] NOT NULL,
	[status] [varchar](10) NOT NULL,
	[message] [varchar](250) NULL,
	[details] [xml] NULL,
	[userID] [varchar](100) NULL,
	[refID] [varchar](100) NULL,
	[record_created] [datetime] NOT NULL CONSTRAINT [DF_CourseManagerUserLog_IE_record_created_1]  DEFAULT (getdate()),
 CONSTRAINT [PK_CourseManagerUserLog_IE_1] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
END
GO

/****** Object:  Index [INDX_ADMIN_CourseManagerUserLog_IE_userID]    Script Date: 3/2/2016 5:50:32 PM ******/
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[Admin].[CourseManagerUserLog_IE]') AND name = N'INDX_ADMIN_CourseManagerUserLog_IE_userID')
CREATE NONCLUSTERED INDEX [INDX_ADMIN_CourseManagerUserLog_IE_userID] 
ON [dbo].[CourseManagerUserLog_IE]
(
	[userID] ASC
)
INCLUDE 
( 	
    [id],
	[username],
	[resourceID],
	[status],
	[message],
	[details],
	[refID],
	[record_created]
)  
ON [PRIMARY]
GO


/****** Object:  Index [INDX_DBA_RecordCreated_UserID]    Script Date: 3/2/2016 5:50:32 PM ******/
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[Admin].[CourseManagerUserLog_IE]') AND name = N'INDX_DBA_RecordCreated_UserID')
CREATE NONCLUSTERED INDEX [INDX_DBA_RecordCreated_UserID]
ON [dbo].[CourseManagerUserLog_IE]
(
	[record_created] ASC,
	[username] ASC
)
GO


/****** Object:  Index [INDX_DBA_USERNAME_RecordCreated]    Script Date: 3/2/2016 5:50:32 PM ******/
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[Admin].[CourseManagerUserLog_IE]') AND name = N'INDX_DBA_USERNAME_RecordCreated')
CREATE NONCLUSTERED INDEX [INDX_DBA_USERNAME_RecordCreated]
 ON [dbo].[CourseManagerUserLog_IE]
(
	[username] ASC,
	[record_created] ASC
)
GO



/****** Object:  Index [INDX_DBA_XML_MAIN]    Script Date: 3/2/2016 5:50:32 PM ******/
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[Admin].[CourseManagerUserLog_IE]') AND name = N'INDX_DBA_XML_MAIN')
CREATE PRIMARY XML INDEX [INDX_DBA_XML_MAIN] ON[dbo].[CourseManagerUserLog_IE]
(
	[details]
)
GO



/****** Object:  Index [INDX_DBA_XML_Property]    Script Date: 3/2/2016 5:50:32 PM ******/
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[Admin].[CourseManagerUserLog_IE]') AND name = N'INDX_DBA_XML_Property')
CREATE XML INDEX [INDX_DBA_XML_Property] 
ON [dbo].[CourseManagerUserLog_IE]
(
	[details]
)
USING XML INDEX [INDX_DBA_XML_MAIN] FOR PROPERTY 
GO



/****** Object:  Index [INDX_DBA_XML_Secondary_Path]    Script Date: 3/2/2016 5:50:32 PM ******/
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[Admin].[CourseManagerUserLog_IE]') AND name = N'INDX_DBA_XML_Secondary_Path')
CREATE XML INDEX [INDX_DBA_XML_Secondary_Path] ON[dbo].[CourseManagerUserLog_IE]
(
	[details]
)
USING XML INDEX [INDX_DBA_XML_MAIN] FOR PATH 
GO

Review Index States


use [tempdb]
go

declare @tableName sysname
declare @objectID int

set @tableName = '[dbo].[CourseManagerUserLog_IE]'
set @objectID = object_id(@tableName)

select 
	  ObjectName
	    = object_name(tblSI.object_id)
	, [indexName]
            = tblSI.name
        , tblSI.index_id
	, tbLSI.is_disabled
from   sys.indexes tblSI
where  tblSI.object_id = @objectID
order by tblSI.index_id

Output

2.dbo.CourseManagerUserLog_IE.IndexState

 

 

Review Index Sizes


use [tempdb]
go

declare @tableName sysname
declare @objectID int

set @tableName = '[dbo].[CourseManagerUserLog_IE]'
set @objectID = object_id(@tableName)

SELECT 

		 [ObjectId]

		,[ObjectName]

		,[IndexId]

		,[indexName]

		,[IndexType]

		,indexLevel

		,[IndexSize(MB)]
			= CONVERT
				(
					  DECIMAL(16, 1)
					, (SUM([avg_record_size_in_bytes] * [record_count]) / (1024.0 * 1024))
				)

		,[StatisticLastUpdated]
			= max([lastupdated])

		, [AvgFragmentationInPercent]
			= avg([AvgFragmentationInPercent])

FROM (

		SELECT 
		  	   ObjectID = tblInd.OBJECT_ID

			,  ObjectName
				= QuoteName
					(
						object_schema_name
							(tblInd.object_id)
					)
					+ '.'
					+ 
					QuoteName
					(
						object_name
						(
							tblInd.object_id
						)
					)

			, [indexName]
				= tblSysInd.name

			, IndexID = tblInd.Index_ID
			, IndexType = Index_Type_Desc
			, IndexLevel = index_level
			, avg_record_size_in_bytes
			, record_count
			, LastUpdated
				= STATS_DATE
					(
						  tblInd.object_id
						, tblInd.index_id
					)
			, AvgFragmentationInPercent
				= round(Avg_Fragmentation_In_Percent, 3)

		FROM sys.dm_db_index_physical_stats
			(
				  db_id()
				, @objectID
				, NULL
				, NULL
				, 'detailed'
			) tblInd

		inner join sys.indexes tblSYSIND

			on tblInd.object_id = tblSysInd.object_id
			and tblInd.index_id = tblSysInd.index_id

		where index_level = 0

    ) T

GROUP BY 

      ObjectId
    , ObjectName
    , IndexId
	, [indexName]
    , IndexType
	, indexLevel




Output:

2.dbo.CourseManagerUserLog_IE.IndexSize

 

Disable Primary XML Index

Let us disable the primary XML Index.


use [tempdb]
go

alter index INDX_DBA_XML_MAIN 
on dbo.[CourseManagerUserLog_IE] DISABLE
go

 

Warnings

Textual

Warning: Index 'INDX_DBA_XML_Property' on table 'xml_index_nodes_885578193_256000' was disabled as a result of disabling the clustered index on the table.

Warning: Index 'INDX_DBA_XML_Secondary_Path' on table 'xml_index_nodes_885578193_256000' was disabled as a result of disabling the clustered index on the table.


 

Image

3.dbo.CourseManagerUserLog_IE.PrimaryXMLIndex.Disable-Warning

 

 

Review Index States


use [tempdb]
go

declare @tableName sysname
declare @objectID int

set @tableName = '[dbo].[CourseManagerUserLog_IE]'
set @objectID = object_id(@tableName)

select 
	  ObjectName
		= object_name(tblSI.object_id)
	, tblSI.name
        , tblSI.index_id
	, tbLSI.is_disabled
from   sys.indexes tblSI
where  tblSI.object_id = @objectID
order by tblSI.index_id

 

Output:

2.dbo.CourseManagerUserLog_IE.PrimaryXMLIndex.Disable.ReviewState

 

 

Review Index Size


use [tempdb]
go

declare @tableName sysname
declare @objectID int

set @tableName = '[dbo].[CourseManagerUserLog_IE]'
set @objectID = object_id(@tableName)

SELECT 

		 [ObjectId]

		,[ObjectName]

		,[IndexId]

		,[indexName]

		,[IndexType]

		,indexLevel

		,[IndexSize(MB)]
			= CONVERT
				(
					  DECIMAL(16, 1)
					, (SUM([avg_record_size_in_bytes] * [record_count]) / (1024.0 * 1024))
				)

		,[StatisticLastUpdated]
			= max([lastupdated])

		, [AvgFragmentationInPercent]
			= avg([AvgFragmentationInPercent])

FROM (

		SELECT 
		  	   ObjectID = tblInd.OBJECT_ID

			,  ObjectName
				= QuoteName
					(
						object_schema_name
							(tblInd.object_id)
					)
					+ '.'
					+ 
					QuoteName
					(
						object_name
						(
							tblInd.object_id
						)
					)

			, [indexName]
				= tblSysInd.name

			, IndexID = tblInd.Index_ID
			, IndexType = Index_Type_Desc
			, IndexLevel = index_level
			, avg_record_size_in_bytes
			, record_count
			, LastUpdated
				= STATS_DATE
					(
						  tblInd.object_id
						, tblInd.index_id
					)
			, AvgFragmentationInPercent
				= round(Avg_Fragmentation_In_Percent, 3)

		FROM sys.dm_db_index_physical_stats
			(
				  db_id()
				, @objectID
				, NULL
				, NULL
				, 'detailed'
			) tblInd

		inner join sys.indexes tblSYSIND

			on tblInd.object_id = tblSysInd.object_id
			and tblInd.index_id = tblSysInd.index_id

		where index_level = 0

    ) T

GROUP BY 

      ObjectId
    , ObjectName
    , IndexId
	, [indexName]
    , IndexType
	, indexLevel


 

Error

Visual

Msg 2530, Level 16, State 1, Line 10
The index "INDX_DBA_USERNAME_RecordCreated" on table "CourseManagerUserLog_IE" is disabled.

Visual

2.dbo.CourseManagerUserLog_IE.PrimaryXMLIndex.Disable.ReviewStat

SQL Server Version

Here are the SQL Server versions we tested against.

 

@@Version Version Version# Service Pack / Cummulative Update
Microsoft SQL Server 2014 (SP1-CU3) (KB3094221) – 12.0.4427.24 (X64)
Oct 10 2015 17:18:26
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
 v2014 12.0.4427.24 SQL Server 2014 SP1 CU3
Microsoft SQL Server 2014 – 12.0.4213.0 (X64)
Jun 9 2015 12:06:16
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
v2014 12.0.4213.0 2014 Service Pack 1 + Hotfix (KB3067257)
Microsoft SQL Server 2005 – 9.00.5292.00 (X64)
Apr 13 2011 15:43:31
Copyright (c) 1988-2005 Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1)
 v2005  9.00.5292.00 SP4 CU3 with “MS11-049: Description of the security update for SQL Server 2005 Service Pack 4 QFE

 

 

Connect Items

Here are some connect items:

  1. 686751
    • Title :- sys.dm_db_index_physical_stats errors out with disabled XML indexes
    • Opened By:-  Mladen Prajdic
    • Date Opened :- 2011-09-02
    • Status :- Closed as won’t fix
    • Link
  2.  2428659
    • Title :- Misleading Error Message when sys.dm_db_index_physical_stats issued against a table that has XML Column and disabled Index
    • Opened By :- Daniel Adeniji
    • Date Opened: 2016-03-02
    • Status :- Opened
    • Link

 

Source Control

Github

  1. DanielAdeniji/XML.Index.Disabled.sys.dm_db_index_physical_stats
    https://github.com/DanielAdeniji/XML.Index.Disabled.sys.dm_db_index_physical_stats

 

Addendum

2016-Sept-01

Connect Item  2428659 has the following field values changed:

  1. Status changed from “Active” to “Resolved”
  2. Resolution changed from “Not Set to “Fixed”

Connecttem-2428659

 

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s