Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
해당되는 게시물 4건
  DB내 모든 테이블의 SPACE 정보를 확인하는 쿼리 
작성일시 : 2008.07.16 15:51 | 분류 : SQL Server/Administration | 태그 : data, Index_Size, Reserved, Rows, sp_spaceused, SQL Server, table, table information, Unused, 테이블 정보

아래 쿼리는 임시로 #tblSize 를 만들고 이 table에 각 table의 Rows, Reserved, Data, Index_Size, Unused 를 저장하여 보여줍니다.

DECLARE @objname varchar(750)

CREATE TABLE #tblSize (
       Name nvarchar (128),
       Rows char (11),
       Reserved varchar (18),
       Data varchar (18),
       Index_Size varchar (18),
       Unused varchar (18)
)

DECLARE TabNameCur CURSOR FOR
       SELECT name
       FROM dbo.sysobjects
       WHERE xtype = 'u'
       ORDER BY name

OPEN TabNameCur
FETCH TabNameCur INTO @objname

WHILE @@FETCH_STATUS = 0
BEGIN
       insert #tblSize EXEC sp_spaceused @objname

FETCH NEXT FROM TabNameCur INTO @objname
END

CLOSE TabNameCur
DEALLOCATE TabNameCur

SELECT * FROM #tblSize

[결과]

Name   Password   Home   Secret   Submit
  PK가 설정된 테이블 두개를 한테이블로 데이터 이전 
작성일시 : 2008.03.25 22:36 | 분류 : SQL Server/Administration | 태그 : data migration, PK, table, 엔티티 무결성

[Action Plan]

DB01.test 테이블의 데이터와 DB02.test 테이블의 데이터를 DB03.test 테이블로 Migration 쿼리 작성
단 이때 seq (Primary Key)를 변환 하여 중복을 피해준다.
본 예제 에서는 DB02.test.seq 칼럼에 1000을 더하여 Primary Key 중복을 피하도록 하겠다.

[DB 및 Table 구조]

[입력 데이터]

seq 가 PK로 겹치기 때문에 단순 입력은 불가능하다.

[실행 쿼리]

일단 db01.dbo.test01의 데이터는 그대로 입력해 주고, db02.dbo.test01의 데이터는 pk 제약 조건을 해결 하기 위해여 커서를 사용했다.
해당 쿼리에서는 커서를 통해 해당 seq에 1000을 더하여 데이터의 중복의 회피 하였다.

begin tran 

    insert db03.dbo.test01 -- 먼저 db01의 데이터를 db03에 넣는다.
        select seq, inputText from db01.dbo.test01

    declare @seqNum int, @inputTextV nvarchar(1000) -- db02의 데이터를 입력할 때 사용할 변수를 선언

    declare seqCursor scroll cursor -- 커서를 선언
    for
        select * from db02.dbo.test01
    for read only

    open seqCursor

    while @@fetch_status = 0
    begin
        fetch from seqCursor into @seqNum, @inputTextV -- 한라인씩 읽어서 변수에 할당
        select @seqNum = @seqNum + 1000

        if @seqNum > 2000 -- 마지막 라인의 경우 항상 2번 출력됨므로 해당 출력을 막기 위해 설정한 구문
            break

        insert db03.dbo.test01
            values (@seqNum, @inputTextV)
    end

    close seqCursor
    deallocate seqCursor

commit tran

[기타...]
그리고 쉽게 하는 방법도 있습니다.
역시 전 쿼리에 약하나 봅니다...
하긴 첨 짜보는 쿼리니깐...;;;
최석준님 감사합니다...^^

begin tran

       insert db03.dbo.test01

       select seq, inputText from db01.dbo.test01

       union all

       select seq+1000,inputText from db02.dbo.test01

commit tran

Name   Password   Home   Secret   Submit
  SQL Server 열에 Caption (Commant, Description)을 달자 
작성일시 : 2008.03.13 15:51 | 분류 : SQL Server/Development | 태그 : caption, Column, commant, SQL Server, table

Oracle의 경우 Table 생성 시 각 열에 맞게 commant를 달아 줄 수 있습니다.







SQL Server 또한 동일한 주석을 달아 줄 수 있는데, 이는 Table 생성 이후에 달 수 있습니다.
다음 예제는 AdventureWorks 데이터베이스의 Address 테이블의 PostalCode 열에 Caption을 다는 것입니다.
USE AdventureWorks;
GO
EXEC sp_addextendedproperty
@name = N'Caption', @value = 'Postal code is a required column.',
@level0type = N'Schema', @level0name = Person,
@level1type = N'Table', @level1name = Address,
@level2type = N'Column', @level2name = PostalCode;
GO
참고 : 확장 속성을 관리하는 저장 프로시저

sp_addextendedproperty
sp_updateextendedproperty
sp_dropextendedproperty
fn_listextendedproperty()

출처 : http://technet.microsoft.com/ko-kr/library/ms180047.aspx
BlogIcon MayStyle (2008.03.14 00:14 신고) R | X
라클이랑 비교 당할 때 좀 스트레스를 이빠이 받습니다...
비교하는 것 때문에 스트레스를 받는게 아니고... 다짜고짜 전화해서 오라클은 되는데 왜 SQL은 않되!
라는 식의 따지는 말투 때문이죠...
오늘도 설움 한번 당해봤습니다...ㅋ

Name   Password   Home   Secret   Submit

Select의 경우 서버 성능상의 치명적인 이슈가 제기 될 수 있으므로 생략한다.

AuditTest 라는 데이터 베이스를 생성하고 해당 데이터 베이스에 AuditTable 이라는 대상 Table과 AuditTableChanged 이라는 데이터 삭제 및 변경 시 저장할 Table을 만들었다.

변경 또는 삭제가 발생했을 때 작동하는 트리거를 AuditTable 에 부착한다.

Name   Password   Home   Secret   Submit