/****************************************************************************/

/* Script Name : Get Max Number of NumberType Data from All Tables */

/* Author : Sunsick Yoon */

/* Version : 1.0 */

/* Create Date : 14.04.2015 */

/* Modified Date : 14.04.2015 */

/****************************************************************************/



--SELECT A.name AS TableName, B.name AS ColumnName, C.name AS TypeName, SELECT MAX(

--FROM sys.sysobjects A join sys.all_columns B ON A.id = B.object_id JOIN sys.types C ON B.system_type_id = C.system_type_id AND C.name in ('int', 'smallint', 'bigint')

--WHERE A.type = 'U'

--SELECT '['+SCHEMA_NAME(schema_id)+'].['+name+']', * FROM AdventureWorks2012.sys.tables


use tempdb

GO


-- #1. Drop Temp Table

IF OBJECT_ID('#TempCommand', 'U') IS NOT NULL

DROP TABLE #TempCommand;


IF OBJECT_ID('TempMaxCount', 'U') IS NOT NULL

DROP TABLE TempMaxCount;


-- #2. Create Temp Table

CREATE TABLE #TempCommand 

(

cmd NVARCHAR(2000) 


CREATE TABLE tempdb.dbo.TempMaxCount

Seq INT NOT NULL IDENTITY(1,1) PRIMARY KEY,

dbname varchar(50),

SchemaName varchar(50),

TableName VARCHAR(200),

ColumnName VARCHAR(200),

TypeName VARCHAR(200),

-- Command NVARCHAR(2000),

MaxNumber BIGINT


----------------------

-- #3. Make Basic Command -- Execute at once

BEGIN

DECLARE @dbname varchar(50) 

DECLARE @command varchar(1000)


DECLARE dbname_cursor CURSOR FOR SELECT name from master..sysdatabases  

WHERE name not in ('DB_SecurityAudit', 'master', 'model', 'tempdb', 'msdb')

AND (STATUS NOT IN (65568,48))


OPEN dbname_cursor 

FETCH next FROM dbname_cursor into @dbname 

WHILE @@fetch_status = 0 

BEGIN 

--SELECT @command = 'USE [' + @dbname + ']' + CHAR(13)

SELECT @command = 

'INSERT INTO tempdb.dbo.TempMaxCount (dbname, SchemaName, TableName, ColumnName, TypeName)

SELECT ''' + @dbname + ''' AS dbname, D.name AS SchemaName, A.name AS TableName, B.name AS ColumnName, C.name AS TypeName

FROM ' + @dbname + '.sys.tables A join ' + @dbname + '.sys.all_columns B ON A.object_id = B.object_id JOIN sys.types C ON B.system_type_id = C.system_type_id AND C.name in (''int'', ''smallint'', ''bigint'')

JOIN ' + @dbname + '.sys.schemas D ON A.schema_id = D.schema_id '

INSERT #TempCommand VALUES (@command) 

FETCH NEXT FROM dbname_cursor INTO @dbname 

END 

CLOSE dbname_cursor 

DEALLOCATE dbname_cursor 

END

GO 


-- #4. Get Result for Execution

SELECT * FROM #TempCommand

--DROP TABLE #TempCommand




---------------------------

-- #5. Paste result from #4 Here.

-- Here



---------------------------

-- #5. Get Max Numbers from All Tables -- Execute at once

BEGIN

SET NOCOUNT ON;

DECLARE @I INT, @TOT INT

DECLARE @CNT BIGINT

DECLARE @SQL NVARCHAR(2000)

DECLARE @dbname varchar(50), @SchemaName varchar(50), @TableName VARCHAR(200), @ColumnName VARCHAR(200)


--UPDATE tempdb.dbo.TempMaxCount

--SET

-- Command = 'SELECT @CNT = MAX(' + ColumnName + ') FROM ' + dbname + '.' + TableName + ' WITH(READUNCOMMITTED) '


SET @I = 1

SELECT @TOT = COUNT(*) FROM tempdb.dbo.TempMaxCount


WHILE @I <= @TOT

BEGIN

SELECT @dbname = dbname, @TableName = TableName, @SchemaName = SchemaName, @ColumnName = ColumnName

FROM tempdb.dbo.TempMaxCount WHERE Seq = @I

SET @SQL = 'UPDATE tempdb.dbo.TempMaxCount SET '

SET @SQL = @SQL + ' MaxNumber = (SELECT MAX([' + @ColumnName + ']) FROM [' + @dbname + '].[' + @SchemaName + '].[' + @TableName + '] WITH(READUNCOMMITTED) ) '

SET @SQL = @SQL + ' WHERE SEQ = ' + CONVERT(VARCHAR(20),@I)


EXEC (@SQL)

--PRINT @SQL

SET @I = @I + 1

END

END


-- #6. Retreive Final Result

SELECT * FROM tempdb.dbo.TempMaxCount



Best Practices for Virtualizing and Managing SQL Server 2012

PDF


Best_Practices_for_Virtualizing_and_Managing_SQL_Server_2012.pdf


Frequently used "ServerProperty"


SELECT

    SERVERPROPERTY('MachineName') AS [ServerName], 

SERVERPROPERTY('ServerName') AS [ServerInstanceName], 

    SERVERPROPERTY('InstanceName') AS [Instance], 

    SERVERPROPERTY('Edition') AS [Edition],

    SERVERPROPERTY('ProductVersion') AS [ProductVersion], 

Left(@@Version, Charindex('-', @@version) - 2) As VersionName





생각난김에 끄적 끄적.

 

예전에 다른 데엔 정리해 놨었는데...

 

지나다 보면 그런 질문 많이 받는다.

 

SQL Server 인덱스 생성일 언제인지 어떻게 알아요???

정답은 "PK 빼고는 모른다"이다.

 

1. PK는 다음과 같이 알 수 있다.

SELECT i.NAME 'Index Name' ,o.create_date

FROM sys.indexes i

INNER JOIN sys.objects o ON i.NAME = o.NAME

WHERE o.is_ms_shipped = 0

 AND o.type IN ('PK','FK','UQ')

 AND o.parent_object_id = (SELECT OBJECT_ID('테이블명'))

 

 

2. 다만, 인덱스통계작성일의 경우 다음 쿼리를 통해 확인이 가능하다.

--In SQL Server 2000

Select Name as IndexName,

STATS_DATE ( id , indid ) as IndexStatsDate

From sysindexes where id=object_id('HumanResources.Employee')

 

 

-- In SQL Server 2005

Select Name as IndexName,

STATS_DATE ( object_id , index_id ) as IndexStatsDate

From sys.indexes where object_id=object_id('HumanResources.Employee')

 

관련글 : http://judydba.tistory.com/788

 

그런 면에서 아래 글은 좀 희한한 내용일세...

 

http://www.sqlpanda.com/2013/10/how-to-check-index-creation-date.html

 

http://www.microsoft.com/ko-kr/sqlserver/event/sqlunplugged2013/agenda.aspx

 

올해도 지른. ...

 

microsoft pass
SQL Unplugged 2013
2013.10.16(수) 08:30~18:00  l  논현동 파티오 9 약도보기
blank
SQL Unplugged 2013

HOME 아젠다 세션소개 이벤트 행사안내 blank 사전등록하기 blank

아젠다
키노트 1 – SQL PASS Korea
키노트 2 - 한국마이크로소프트
SQL 토크쇼 – 전문가로 가는 지름길
아젠다

blank
Welcome Hekaton
아주 쉽고 재미있는 인덱스 이야기
SSMA를 통한 Oracle에서 SQL Server로 건너가
SQL Server 2012 SSIS Package 업그레이드 방안
5 reasons why I prefer MS SQL Server to MySQL
SQL Server를 활용한 비즈니스 플랫폼 구성
Deadlock 기초부터 심화
개발자를 위한 SQL 튜닝
실전! SQL Server AlwaysOn
PDW v2 & PolyBase
EIM : 신뢰할 수 있는 데이터를 위한 최선의 선택
Columnstore Index best practice

 

맺음말 및 경품추첨

+ Recent posts