Database/MSSQLSERVER2013. 7. 8. 17:49

회사에서 중요한 데이터 베이스 작업을 앞두고 긴장하는 경우가 많은데요
이럴때는 간단하게 필요한 정보만 백업 해 두고싶은욕구가 생기죠..
바로 이런 경우에 요긴하게 쓰일 수 있는 게 바로

SELECT INTO 구문입니다.

select into 구문은  create table 와 insert ~ select 구문을
합쳐 놓은거 라고 생각하지면 되겠습니다.

예로 회사 상용디비에 업뎃을 걸거나 삭제를 날려야 할때 예상치 못한 결과를 대비해서
미리 테이블 자체를 백업을 하는것이 가능합니다.
(저는 간떨려서 꼭 해 둡니다...ㅋㅋㅋ)

USE 사용할 데이터베이스
SELECT * INTO newtable FROM oldtable


이렇게 해두면 상당한 크기의 테이블이라도 단 몇초만에 백업가능합니다.
(한 레코드  100byte 정도의 100만건이라도 1분을 안 넘깁니다.)

하지만 주의점은 어디까지나 임시 백업용이라는점을 잊지마세요
테이블의 데이터만 완전 백업을 받을 수 있는거지 , 기존 테이블에 걸려있는
각종 키정보나 제약  정보는 아무것도 따라오는것이 아니랍니다.

중요 업뎃 날리실때 꼭 테이블 백업 하시고 가벼운 맘으로 where 구문없이 ..ㅋㅋ (농담요.ㅋ)

대한민국 개발자 여러분 홧팅하세요..^^

참고로 MSSQL 기준으로 작성된 글 입니다.
아마도 oracle 에서는 CREATE TABLE newtable AS SELECT * FROM oldtable 이라는 구문을 사용하실수 있을겁니다.

출처 : http://jajking.tistory.com/entry/간단-테이블-백업-Select-into

Posted by 아로나
Database/MSSQLSERVER2013. 5. 16. 10:03

update openquery(linked1, 'select ssn from testlinked where ssn=2')
set ssn=ssn + 1


insert openquery(linked1, 'select ssn from testlinked where 1=0') values (1000)


delete openquery(linked1, 'select ssn from testlinked where ssn>100')


 

* linked1 : DB 링크명

'select ssn from testlinked where ssn=2' : 실제 해당 DBMS에서 사용하는 쿼리

Posted by 아로나
Database/MSSQLSERVER2013. 5. 6. 16:23

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

데이터베이스 단위

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

 

--데이터베이스에 설명 추가

EXEC sp_addextendedproperty

@name = N'Caption', @value = 'Performance Monitor DB';

 

--데이터베이스 설명 확인

SELECT objtype, objname, name, value

FROM ::fn_listextendedproperty(default, default, default, default, default, default, default);

GO

 

--데이터베이스 설명 삭제

EXEC sp_dropextendedproperty

@name = N'Caption'

 

 

 

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

--        테이블 단위

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

 

--테이블에 설명 추가

EXEC sp_addextendedproperty

@name = N'Caption', @value = N'성능데이터수집테이블',

@level0Type = N'Schema', @Level0Name = dbo,

@level1Type = N'Table', @Level1Name = 'PerfData';

GO

 

--테이블에 설명 확인

SELECT objtype, objname, name, value

FROM ::fn_listextendedproperty (NULL, 'schema', 'dbo', 'table', 'PerfData', default, default);

GO

 

--데이터베이스의 모든 테이블의 설명 확인

SELECT objtype, objname, name, value

FROM ::fn_listextendedproperty (NULL, 'schema', 'dbo', 'table', default, default, default);

GO

 

--테이블 설명 삭제

EXEC sp_dropextendedproperty

@name = N'Caption',

@level0Type = N'Schema', @Level0Name = dbo,

@level1Type = N'Table', @Level1Name = 'PerfData';

GO

 

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

--        단위

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

 

--열에 설명 추가 (PerfData 테이블의 CollectedDate )

EXEC sp_addextendedproperty

@name = N'Caption', @value = N'수집일자',

@level0Type = N'Schema', @Level0Name = dbo,

@level1Type = N'Table', @Level1Name = 'PerfData',

@level2Type = N'Column', @Level2Name = 'CollectedDate';

GO

 

--열에 설명 추가 (PerfData 테이블의 ServerSeq )

EXEC sp_addextendedproperty

@name = N'Caption', @value = N'서버아이디',

@level0Type = N'Schema', @Level0Name = dbo,

@level1Type = N'Table', @Level1Name = 'PerfData',

@level2Type = N'Column', @Level2Name = 'ServerSeq';

GO

 

 

 

--열에 설명 확인 (개별열)

SELECT objtype, objname, name, value

FROM ::fn_listextendedproperty (NULL, 'schema', 'dbo', 'table', 'PerfData', 'column', 'CollectedDate');

GO

 

--테이블의 모든 열의 설명 확인

SELECT objtype, objname, name, value

FROM ::fn_listextendedproperty (NULL, 'schema', 'dbo', 'table', 'PerfData', 'column', default);

GO

 

 

 

--열에 설명삭제

EXEC sp_dropextendedproperty

@name = N'Caption',

@level0Type = N'Schema', @Level0Name = dbo,

@level1Type = N'Table', @Level1Name = 'PerfData',

@level2Type = N'Column', @Level2Name = 'CollectedDate';

GO

출처 : http://blog.daum.net/jungsangun/7691124

Posted by 아로나
Database/MSSQLSERVER2013. 3. 4. 11:52

SQL Server 2008 에 로그인 하지 못하고 오류가 발생하였을 때 실패에 대한 감사 설정이 되어 있다면 로그인 실패 원인을 정확히 찾아낼 수 있습니다. 간단한 내용입니다만 고객 문의와 오류 번호를 참조하기 위해 미리 정리해 놓습니다. ^^



[현상]
로그인을 시도하였을 때, 아래와 같은 오류가 발생하며 로그인이 실패합니다.
사용자 'laigo'이(가) 로그인하지 못했습니다. (Microsoft SQL Server, 오류: 18456)


[원인]
로그인을 시도한 계정의 패스워드가 일치하지 않습니다.


[해결방법]
올바른 로그인 계정의 패스워드를 입력해야 합니다. 만약 분실하였을 경우 sa 권한으로 아래 쿼리를 사용하여 패스워드를 재입력 할 수 있습니다.

ALTER LOGIN laigo WITH PASSWORD = 'P@$$w0rd';


[분석결과]
1. 로그인 감사가 설정되어 있을 경우 로그인 실패 원인을 확인할 수 있습니다.
가. 서버 속성 - 보안 - 로그인 감사 - '실패한 로그인만'

2. 오류 로그 확인
sp_readerrorlog

2009-09-29 12:57:51.800 로그온 오류: 18456, 심각도: 14, 상태: 8.
2009-09-29 12:57:51.800 로그온 Login failed for user 'laigo'. 원인: 암호가 제공된 로그인의 암호와 일치하지 않습니다. [클라이언트: <local machine>]


[참고자료]

Posted by 아로나