블로그 이미지
LifeisSimple

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

'Brain Trainning'에 해당되는 글 288

  1. 2009.11.22 for xml path
  2. 2009.11.15 SQL_Server_2008_System_Views_Poster
  3. 2009.11.12 쿼리 및 시스템 튜닝 자료
  4. 2009.11.12 Sqlserver Host명 변경
  5. 2009.11.11 Snapshot 생성
  6. 2009.11.10 Backup 및 Restore
  7. 2009.11.08 테이블 파티션
  8. 2009.09.08 [Oracle] Connect by prior ... 예제
2009. 11. 22. 19:19 Brain Trainning/DataBase
FOR XML PATH 문을 활용해서 동일계층의 컬럼값을 한줄로..

with custgroups as
(
 select customerid,
  (select cast(employeeid as varchar(10)) + ';' as [text()] (의미없음-현혹되면 안됨)
   from ( select distinct employeeid from dbo.orders as O
    where O.customerid = c.customerid) as D
   order by employeeid
   for xml path('')) as custemps
  from dbo.customers as C
)
select customerid,
 case when custemps is null then null else min(customerid) over (partition by custemps) end as grp
from custgroups
order by grp, customerid;

'Brain Trainning > DataBase' 카테고리의 다른 글

Partition Table 의 구현  (0) 2009.11.30
인덱스~  (0) 2009.11.24
SQL_Server_2008_System_Views_Poster  (0) 2009.11.15
쿼리 및 시스템 튜닝 자료  (0) 2009.11.12
Sqlserver Host명 변경  (0) 2009.11.12
posted by LifeisSimple
2009. 11. 15. 20:23 Brain Trainning/DataBase

'Brain Trainning > DataBase' 카테고리의 다른 글

인덱스~  (0) 2009.11.24
for xml path  (0) 2009.11.22
쿼리 및 시스템 튜닝 자료  (0) 2009.11.12
Sqlserver Host명 변경  (0) 2009.11.12
Snapshot 생성  (0) 2009.11.11
posted by LifeisSimple
2009. 11. 12. 21:17 Brain Trainning/DataBase

이런자료도 있었넴... 흠..

추가 자료... Performance Dashboard

시스템에 셋업하고 열심히 들여다 봄...

그리고, DMV 참고링크
http://msdn.microsoft.com/en-us/library/ms188754(SQL.90).aspx

'Brain Trainning > DataBase' 카테고리의 다른 글

for xml path  (0) 2009.11.22
SQL_Server_2008_System_Views_Poster  (0) 2009.11.15
Sqlserver Host명 변경  (0) 2009.11.12
Snapshot 생성  (0) 2009.11.11
Backup 및 Restore  (0) 2009.11.10
posted by LifeisSimple
2009. 11. 12. 20:29 Brain Trainning/DataBase
링크 : http://msdn.microsoft.com/ko-kr/library/ms143799.aspx

방법: SQL Server의 독립 실행형 인스턴스를 호스팅하는 컴퓨터 이름 바꾸기

SQL Server를 실행하는 컴퓨터의 이름을 변경하면 SQL Server 시작 시 새 이름이 인식됩니다. 컴퓨터 이름을 다시 설정하기 위해 설치 프로그램을 다시 실행할 필요는 없습니다. 대신 다음 단계에 따라 sys.servers에 저장되어 있고 시스템 함수 @@SERVERNAME으로 보고되는 시스템 메타데이터를 업데이트할 수 있습니다. @@SERVERNAME을 사용하거나 sys.servers에서 서버 이름을 쿼리하는 응용 프로그램이나 원격 연결을 위해 변경된 컴퓨터 이름을 반영하여 시스템 메타데이터를 업데이트해야 합니다.

다음 단계는 SQL Server 인스턴스의 이름 변경 작업에 사용할 수 없습니다. 이 단계는 인스턴스 이름에서 컴퓨터 이름에 해당하는 부분을 변경하는 경우에만 사용할 수 있습니다. 예를 들어 Instance1이라는 SQL Server 인스턴스를 호스팅하는 MB1이라는 컴퓨터의 이름을 다른 이름(예: MB2)으로 변경할 수 있습니다. 그러나 이름에서 인스턴스에 해당하는 Instance1은 변경되지 않고 유지됩니다. 이 예제의 경우 \\ComputerName\InstanceName은 \\MB1\Instance1에서 \\MB2\Instance1로 변경됩니다.

시작하기 전에

이름 바꾸기 프로세스를 시작하기 전에 다음 정보를 검토하십시오.

  • SQL Server 인스턴스가 SQL Server 장애 조치(Failover) 클러스터의 일부인 경우 컴퓨터의 이름을 바꾸는 프로세스는 독립 실행형 인스턴스를 호스팅하는 컴퓨터의 이름을 바꾸는 프로세스와 다릅니다.
  • SQL Server는 복제와 함께 로그 전달을 사용하는 경우를 제외하고 복제에 관련된 컴퓨터의 이름 바꾸기를 지원하지 않습니다. 주 컴퓨터가 영구적으로 손실되면 로그 전달의 보조 컴퓨터 이름을 바꿀 수 있습니다. 자세한 내용은 복제 및 로그 전달을 참조하십시오.
  • Reporting Services를 사용하도록 구성된 컴퓨터의 이름을 바꾸면 컴퓨터 이름이 변경된 후 Reporting Services를 사용하지 못할 수 있습니다. 자세한 내용은 보고서 서버 컴퓨터 이름 바꾸기를 참조하십시오.
  • 데이터베이스 미러링을 사용하도록 구성된 컴퓨터의 이름을 바꾸는 경우 이름 바꾸기 작업을 수행하기 전에 데이터베이스 미러링을 해제한 다음 데이터베이스 미러링을 새 컴퓨터 이름으로 다시 설정해야 합니다. 데이터베이스 미러링의 메타데이터는 새로운 컴퓨터 이름을 반영하도록 자동으로 업데이트되지 않습니다. 다음 단계에 따라 시스템 메타데이터를 업데이트하십시오.
  • 컴퓨터 이름에 대해 하드 코딩된 참조를 사용하는 Windows 그룹을 통해 SQL Server에 연결하는 사용자는 SQL Server에 연결할 수 없습니다. 이는 이름 바꾸기 후 Windows 그룹이 기존 컴퓨터 이름을 지정하는 경우에 발생할 수 있습니다. 이름 바꾸기 작업 후 Windows 그룹이 SQL Server와 연결되도록 하려면 새 컴퓨터 이름을 지정하도록 Windows 그룹을 업데이트해야 합니다.

SQL Server 서버를 다시 시작하면 새 컴퓨터 이름을 사용하여 SQL Server에 연결할 수 있습니다. @@SERVERNAME이 로컬 서버 인스턴스의 업데이트된 이름을 반환하도록 하려면 다음 중 해당 시나리오에 적용되는 절차를 직접 실행해야 합니다. 업데이트하는 컴퓨터에서 SQL Server의 기본 인스턴스를 호스팅하는지 아니면 명명된 인스턴스를 호스팅하는지 여부에 따라 사용할 절차가 달라집니다.

  • SQL Server의 기본 인스턴스를 호스팅하는 컴퓨터의 이름이 바뀐 경우 다음 절차를 실행합니다.

    sp_dropserver <old_name>
    GO
    sp_addserver <new_name>, local
    GO

    SQL Server 인스턴스를 다시 시작합니다.

  • SQL Server의 명명된 인스턴스를 호스팅하는 컴퓨터의 이름이 바뀐 경우 다음 절차를 실행합니다.

    sp_dropserver <old_name\instancename>
    GO
    sp_addserver <new_name\instancename>, local
    GO

    SQL Server 인스턴스를 다시 시작합니다.

컴퓨터의 이름이 변경되면 이전 컴퓨터 이름을 사용하던 모든 연결은 새 이름을 사용하여 연결되어야 합니다.

  • @@SERVERNAME 또는 sys.servers에서 정보를 선택합니다. @@SERVERNAME 함수에서 새 이름을 반환하고, sys.servers 테이블에 새 이름이 표시됩니다. 다음 예에서는 @@SERVERNAME을 사용하는 방법을 보여 줍니다.

    SELECT @@SERVERNAME AS 'Server Name'

원격 로그인 - 컴퓨터에서 원격 로그인을 사용하는 경우 sp_dropserver를 실행하면 다음과 유사한 오류가 발생할 수 있습니다.

Server: Msg 15190, Level 16, State 1, Procedure sp_dropserver, Line 44
There are still remote logins for the server 'SERVER1'.

오류를 해결하려면 이 서버에 대한 원격 로그인을 삭제해야 합니다.

  • 기본 인스턴스의 경우 다음 프로시저를 실행합니다.

    sp_dropremotelogin old_name
    GO
  • 명명된 인스턴스의 경우 다음 프로시저를 실행합니다.

    sp_dropremotelogin old_name\instancename
    GO

연결된 서버 구성 - 연결된 서버 구성은 컴퓨터 이름 바꾸기 작업의 영향을 받습니다. sp_addlinkedserver 또는 sp_setnetname을 사용하여 컴퓨터 이름 참조를 업데이트해야 합니다. 자세한 내용은 MSDN에서 sp_addlinkedserver 또는 sp_setnetname SQL Server 온라인 설명서 항목을 참조하십시오.

클라이언트 별칭 - 명명된 파이프를 사용하는 클라이언트 별칭은 컴퓨터 이름 바꾸기 작업의 영향을 받습니다. 예를 들어 명명된 파이프 프로토콜을 사용하여 SRVR1을 가리키는 "PROD_SRVR"이라는 별칭을 만든 경우 파이프 이름은 \\SRVR1\pipe\sql\query와 같습니다. 컴퓨터의 이름을 바꾸면 명명된 파이프의 경로가 더 이상 유효하지 않습니다. 명명된 파이프에 대한 자세한 내용은 MSDN에서 명명된 파이프를 사용하여 유효한 연결 문자열 만들기 SQL Server 온라인 설명서 항목을 참조하십시오.

 

출처 : MSDN


'Brain Trainning > DataBase' 카테고리의 다른 글

SQL_Server_2008_System_Views_Poster  (0) 2009.11.15
쿼리 및 시스템 튜닝 자료  (0) 2009.11.12
Snapshot 생성  (0) 2009.11.11
Backup 및 Restore  (0) 2009.11.10
테이블 파티션  (0) 2009.11.08
posted by LifeisSimple
2009. 11. 11. 00:23 Brain Trainning/DataBase

Snapshot은 처음생성시에는 단순히 원본 DB를 바라보는 정도의 역할을 하지만 (그래도 용량은 동일)
원본 DB가 Update되는 시점에 Update 이전의 데이터를 Snapshot에 저장해 시점 Data를 저장한다.

다음은 생성예제... (SSMS에는 없는 기능인듯)

create database CreditR_Snapshot
on ( name = CreditData,
       filename = 'D:\10.MSSql2005\CreditR_SH.mdf'
    
) as snapshot of CreditR

use CreditR_Snapshot

select * from member

'Brain Trainning > DataBase' 카테고리의 다른 글

쿼리 및 시스템 튜닝 자료  (0) 2009.11.12
Sqlserver Host명 변경  (0) 2009.11.12
Backup 및 Restore  (0) 2009.11.10
테이블 파티션  (0) 2009.11.08
[Oracle] Connect by prior ... 예제  (0) 2009.09.08
posted by LifeisSimple
2009. 11. 10. 23:59 Brain Trainning/DataBase


use Credit

backup database credit to disk = 'E:\backup\Credit_Full.bak'

select *
 into ct_test
from Category

select * from Category

backup database credit to disk = 'E:\backup\Credit_Full.bak'

select *
 into ct_test
 from category
select getdate() -- 2009-11-10 23:49:40.373

update ct_test set category_code = convert(varchar(2), category_no)
select getdate() -- 2009-11-10 23:50:03.547

select * from ct_test

insert into ct_test values ( 'aaa', 11)

select getdate() --2009-11-10 23:50:53.297

insert into ct_test values ('bbb', 12)
select getdate() -- 2009-11-10 23:51:27.140

backup log credit to disk = 'E:\backup\Credit_Log.bak'
select getdate() -- 2009-11-10 23:51:38.863

-- 문제발생
bakup log credit to disk = 'E:\backup\Credit_RLog.bak' with name = '비상로그 백업', no_truncate

restore database CreditR from disk = 'E:\backup\Credit_Full.bak' with norecovery

restore log CreditR from Disk = 'E:\backup\Credit_Log.bak' with stopat='2009-11-10 23:50:53:297'

'Brain Trainning > DataBase' 카테고리의 다른 글

쿼리 및 시스템 튜닝 자료  (0) 2009.11.12
Sqlserver Host명 변경  (0) 2009.11.12
Snapshot 생성  (0) 2009.11.11
테이블 파티션  (0) 2009.11.08
[Oracle] Connect by prior ... 예제  (0) 2009.09.08
posted by LifeisSimple
2009. 11. 8. 22:41 Brain Trainning/DataBase


테이블 파티셔닝... 그냥..

use master

if object_id('multiTest') is not null drop database multiTest

create database multiTEST
on primary
( name = 'multiTest_1',
 filename = 'e:\200. multibase\multiTest_1.mdf',
 size = 30mb,
 filegrowth = 5mb),
( name = 'multiTest_2',
 filename = 'e:\200. multibase\multiTest_2.ndf',
 size = 30mb,
 filegrowth = 5mb)
log on
( name = 'multiTest_log',
 filename = 'e:\200. multibase\mutlTest.log',
 size = 10mb,
 filegrowth = 3mb)

alter database multiTEST
 add filegroup FG2

alter database multiTest add file
( name = 'multiTEST_FG2',
 filename = 'E:\200. MultiBase\multiTest_FG2.mdf',
 size = 10mb,
 filegrowth = 3mb
) to filegroup FG2

sp_helpdb multiTest


create table Persons
(
 prs_id int not null primary key,
 prs_name varchar(30)
) on  'primary'

create table Department
(
 dpt_id int not null primary key,
 dpt_name varchar(30)
) on 'FG2'

sp_helpdb multiTest
sp_helpindex persons

alter database multiTest set offline
use multiTest
alter database multiTest set online

alter table Persons column add dpt_id int

sp_helpindex department

declare @int int
set @int = 10001

while @int < 3000 * 10
begin
 insert department values(@int, replicate('p', 10))

 set @int = @int + 1
end

select * from persons
select * from department

sp_helpdb multiTest

sp_help persons

select * from $partition('FG2', 1)

sp_helpfile multiTest_Fg2

alter database multiTest add file
( name = 'multiTest_FG3',
 filename = 'E:\200. MultiBase\multiTest_FG3.mdf',
 size = 10mb,
 filegrowth = 3mb
) to filegroup FG2

alter database multiTest add file
( name = 'multiTEST_FG2',
 filename = 'E:\200. MultiBase\multiTest_FG2.mdf',
 size = 10mb,
 filegrowth = 3mb
) to filegroup FG2

alter database multiTest add filegroup FG3

alter database multiTest add file
( name = 'multiTEST_FG3_1',
 filename = 'E:\200. MultiBase\multiTest_FG3_1.mdf',
 size = 10mb,
 filegrowth = 3mb
) to filegroup FG3

alter database multiTest add file
( name = 'multiTEST_FG3_2',
 filename = 'E:\200. MultiBase\multiTest_FG3_2.mdf',
 size = 10mb,
 filegrowth = 3mb
) to filegroup FG3

alter database multiTest add filegroup FG4

alter database multiTest add file
( name = 'multiTEST_FG4_1',
 filename = 'E:\200. MultiBase\multiTest_FG4_1.mdf',
 size = 10mb,
 filegrowth = 3mb
) to filegroup FG4

alter database multiTest add file
( name = 'multiTEST_FG4_2',
 filename = 'E:\200. MultiBase\multiTest_FG4_2.mdf',
 size = 10mb,
 filegrowth = 3mb
) to filegroup FG4

drop partition function DepartmentPF

begin tran
 create partition function DepartmentPF(int) as range left for values (10000, 20000)
 create partition scheme DepartmentPS as partition DepartmentPF to ([primary], FG3, FG4)
commit tran

sp_helpdb multiTest

alter table Department on DepartmentPS

create table

sp_helpdb tempdb

alter database tempdb add file
( name = 'tempdev2',
 filename = 'E:\200. MultiBase\tempdb_2.ndf',
 size = 30mb,
 filegrowth = 5mb
) to filegroup [primary]


alter database tempdb add file
( name = 'tempdev3',
 filename = 'E:\200. MultiBase\tempdb_3.ndf',
 size = 30mb,
 filegrowth = 5mb
) to filegroup [primary]

 

'Brain Trainning > DataBase' 카테고리의 다른 글

쿼리 및 시스템 튜닝 자료  (0) 2009.11.12
Sqlserver Host명 변경  (0) 2009.11.12
Snapshot 생성  (0) 2009.11.11
Backup 및 Restore  (0) 2009.11.10
[Oracle] Connect by prior ... 예제  (0) 2009.09.08
posted by LifeisSimple
2009. 9. 8. 15:09 Brain Trainning/DataBase
계층적 쿼리를 간단히 - 게시판 덧글에 유용한...
MS-SQL에서는 흠... 나름 어려웠던것 같은데..

요렇게 입력하면.. 
    SELECT LTRIM(SYS_CONNECT_BY_PATH(품목코드, ','), ',')
        INTO v_품목리스트 
        FROM (
            SELECT 유통동향ID, 품목코드, 공통상품명,
                ROW_NUMBER () OVER (PARTITION BY 유통동향ID ORDER BY 일련번호 DESC) RN,
                COUNT(*) OVER (PARTITION BY 유통동향ID) CNT
                FROM CM_CCT_품목매핑
                WHERE 유통동향ID = p_유통동향ID
                ) A
     WHERE RN = CNT
        START WITH RN = 1
        CONNECT BY PRIOR RN = RN - 1
               AND PRIOR 유통동향ID = 유통동향ID;

요렇게 나온다.
쭈욱 연결해서 : 060102,060101,060101,060101

'Brain Trainning > DataBase' 카테고리의 다른 글

쿼리 및 시스템 튜닝 자료  (0) 2009.11.12
Sqlserver Host명 변경  (0) 2009.11.12
Snapshot 생성  (0) 2009.11.11
Backup 및 Restore  (0) 2009.11.10
테이블 파티션  (0) 2009.11.08
posted by LifeisSimple