7월, 2013의 게시물 표시

DB를 백업하고 트랜잭션 로그 줄이는 쿼리 생성 쿼리

모든 DB를 백업하고 트랜잭션 로그 줄이는 쿼리를 생성시킨다. go use master; set nocount on; begin try drop table #tmpSql; end try begin catch end catch; declare @sql varchar(max) = ''; select Convert(nvarchar(1000), 'use [' + name +'];' + CHAR(13)+CHAR(10) +'backup database [' + name +'] to disk=''C:\temp\' + name +'.bak'' with init;'+ CHAR(13)+CHAR(10) +'backup log [' + name +'] to disk=''C:\temp\' + name +'_log.bak'' with init;'+ CHAR(13)+CHAR(10) +'alter database [' + name +'] Modify File (NAME = [' + replace(name,'GM Quiz', 'finehome') +'_Log], SIZE = 30MB);'+ CHAR(13)+CHAR(10) +'DBCC SHRINKFILE(''' + replace(name,'GM Quiz', 'finehome') +'_Log'', 11);'+ CHAR(13)+CHAR(10) +'--alter database [' + name +'] set offline;'+ CHAR(13)+CHAR(10) +'GO'+ CHAR(13)+CHAR(10)) "sqlStri...

Database에 마지막으로 접속한 시각 알아보기

SELECT DatabaseName, MAX(LastAccessDate) LastAccessDate FROM (SELECT DB_NAME(database_id) DatabaseName , last_user_seek , last_user_scan , last_user_lookup , last_user_update FROM sys.dm_db_index_usage_stats) AS PivotTable UNPIVOT (LastAccessDate FOR last_user_access IN (last_user_seek , last_user_scan , last_user_lookup , last_user_update) ) AS UnpivotTable GROUP BY DatabaseName HAVING DatabaseName NOT IN ('master', 'tempdb', 'model', 'msdb') ORDER BY 2 단, 서버를 리스타트 시키면 위의 정보는 초기화된다. 원문 시스템의 Database 목록 보기 SELECT name, dbid, filename, mode, crdate, * FROM master..sysdatabases s

신기방기한 SQL Server의 기능들

PIVOT, UNPIVOT CTE {CROSS | OUTER} APPLY 연산자 TABLESAMPLE 문 RANKING 함수들 APPLY 연산자는 잘 몰랐는데 매우 유용할듯. PIVOT은... 알면 편할듯. 2008 R2보면 많이 발전했지만, 아직도 Intrinsic 함수들은 Oracle에 비하면 조족지혈

이쯤에서 보는 SQL Server 2008(R2)의 T-SQL 새 기능들.

사실 SQL 새 기능에 대해서 관심 끊긴지 오래됐네. 간단히 정리하면 MERGE문 - 두 테이블을 비교해서 합친다. OUTPUT 문 - DML문의 결과를 리턴한다. GROUPING SETS (A, B, C ..), GROUPING_ID() 함수 Declare 문에서 선언과 동시에 값 할당 복합할당 연산자 ROW 생성자. VALUES({expression | DEFAULT | NULL| }[,...n])[,... n]  Date, Time 타입 추가 SP 파라미터로 Table-Valued 파라미터를 사용할 수 있다. Hierarchyid 데이타 타입 추가 Change Tracking. 테이블의 바뀐 시점과 버전을 관리해줌. http://technet.microsoft.com/en-us/library/cc645577(v=sql.100).aspx http://msdn.microsoft.com/en-us/library/cc645577(v=sql.105).aspx 그리고 사소한 팁하나. Update할 때 set 문에서 변수도 업데이트할 수 있다. [ WITH [...n] ] UPDATE [ TOP ( expression ) [ PERCENT ] ] { <object> | rowset_function_limited [ WITH ( [ ...n ] ) ] } SET { column_name = { expression | DEFAULT | NULL } | { udt_column_name.{ { property_name = expression | field_name = expression } | method_name ( argument [ ,...n ] ) } ...

컴퓨터의 파일 목록을 크기 별로 보는 프로그램.

http://download.cnet.com/TreeSize-Free-Portable/3000-2248_4-75796418.html?tag=mncol;2 TreeSize 라는 프로그램을 이용하면, 특정 폴더 혹은 특정 드라이브의 전체 파일 목록을 크기별로 정렬해서 볼 수 있다. 파일 정리할 때 요긴한 프로그램.

Form의 Close() 와 Dispose() 호출.

Form.Close() sends the proper windows messages to shut down the win32 window. During that process, if the form was not shown modally, Dispose is called on the form. Disposing the form frees up the unmanaged resources that the form is holding onto.   If you do a form1.Show() or Application.Run(new Form1()), Dispose will be called when Close() is called. However, if you do form1.ShowDialog() to show the form modally, the form will not be disposed, and you'll need to call form1.Dispose() yourself.  I believe this is the only time you should wor...

내 새끼들

이미지
첫 글의 영예는 놓쳤지만... 그래도 내 새끼들도 올려야지.

특정 컬럼의 의존성(Dependencies)를 찾는 쿼리 혹은 툴

SELECT DISTINCT 'TABLES' AS OBJECT, t.TABLE_TYPE AS OBJECT_TYPE, t.TABLE_NAME AS [OBJECT_NAME] FROM INFORMATION_SCHEMA.Columns c INNER JOIN INFORMATION_SCHEMA.Tables t ON t.TABLE_CATALOG = c.TABLE_CATALOG AND t.TABLE_SCHEMA = c.TABLE_SCHEMA AND t.TABLE_NAME = c.TABLE_NAME WHERE COLUMN_NAME IN ('컬럼명') UNION SELECT DISTINCT 'ROUTINES' AS OBJECT, ROUTINE_TYPE AS OBJECT_TYPE, ROUTINE_NAME AS [OBJECT_NAME] FROM INFORMATION_SCHEMA.Routines WHERE ROUTINE_DEFINITION LIKE '%컬럼명%' 원문 더 찾다 보니 Red-Gate SQL Search 라는 툴도 있구나. 원문
DropBox에 담아 놓은 PDF 문서 드랍박스

윈폼에서 폼의 모든 컨트롤의 데이타바인딩 제거하는 방법.

//익셉션 발생 dataTable.Rows[0].Delete(); public void clearAllBindings(){ CurrencyManager cm = this.BindingContext[dataTable] as CurrencyManager; cm.Bindings.Cast<Binding>().ToList().ForEach(b => b.Control.DataBindings.Clear()); } //괜찮음. dataTable.Rows[0].Delete(); 윈폼에서 DataSource로 데이타테이블을 사용하는데, 현재 컨트롤들에 바인딩된 행이 만약 지워지면, 컨트롤의 DataBinding 에서 에러를 뿜는다. 컨트롤에서야 당연히 DataSource가 유효할 것으로 생각하는데, 현재 행이 지워져버렸기 때문. 따라서 컨트롤에서 사용 중인 행을 꼭 지워야 하는 상황이라면, 미리 모든 바인딩을 삭제해야 한다. 해당 컨트롤 별로 컨트롤.DataBindings.Clear()를 호출할 수도 있으나, 위의 코드가 더 깔끔. 물론 각 컨트롤의 DataBinding에서 소스를 읽을 때 처리해줘도 된다. 찾아보길. 원문