SQL
posted by 준치 2014. 11. 27. 01:01

오늘은 테스트를 진행하기 위해 임시 데이터를 넣어야한다.

날짜로 정렬을 하기때문에 날짜를 증가시켜서 알아보기 쉽게 넣으면된다.

FOR문도 있지만 WHILE문을 사용하여 200 정도 넣어보자

DECLARE @ADDINT INT
DECLARE @ADDDATE DATETIME
SET @ADDINT = 0
SET @ADDDATE = GETDATE()

WHILE @ADDINT < 200
BEGIN

INSERT 문

SELECT @ADDINT
SELECT @ADDDATE

 SET @ADDINT = @ADDINT + 1
 SET @ADDDATE = DATEADD(DAY,1,@ADDDATE)
END

잘 들어간다..

오늘도 화이팅

SQL
posted by 준치 2014. 11. 20. 17:22

SELECT DISTINCT

STUFF((

SELECT merge_column + '^'

FROM table_name

WHERE where_column = '10'

FOR XML PATH('')),1,0,'') AS

FROM table_name

merge_column : 합쳐야 할 컬럼

where_column : 조건 컬럼

table_name : 테이블명

결과 : column^column^column

오늘도 화이팅!!

SQL
posted by 준치 2014. 5. 22. 17:35

메시지 보내는 간단한 작업을 하는데 입력하는 순간 에러가 발생한다.

에러 메시지는 "문자열이나 이진 데이터는 잘립니다."

내 상황에서는 간단하게 처리되었다.

원인

입력되는 컬럼의 크기보다 데이터가 더 많아서 생긴 문제였다.

해결

컬럼의 크기를 크게 잡거나 데이터를 줄이거나 선택.

오늘도 화이팅.

SQL
posted by 준치 2013. 11. 27. 19:31

오늘도 완전 허접한 삽질은 한다..ㅠㅠ 젠장!!!!

mssql 에서 테이블을 생성하고 한참 작업하다 보니 컬럼을 수정해야했다.

그래서 아무생각없이 수정하려 했으나 경고 메시지가 나온다. 우씨...

메시지 - 변경 내용을 저장할 수 없습니다. 변경 내용을 적용하려면 다음 테이블을 삭제하고 다시 만들어야합니다. 다시 만들 수 없는 테이블을 변경했거나 [테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함] 옵션을 설정했습니다.

SQL Server 테이블을 저장 하려고 하면 오류 메시지: "변경 내용 저장 허용 되지 않습니다"

이거다.. 남들 다 알고 있는 이거다....ㅋㅋㅋ

그래서 해결 방법은 옵션을 변경하기로 했다.

해결방법

Sql studio - 도구(T) - 옵션 - Designers 에서 테이블을 다시 만들어야 하는 변경 내용 저장 안 함(S) 을 체크 제거 하면 잘된다.

참고 : http://support.microsoft.com/kb/956176/ko

오늘도 화이팅~~~~

SQL
posted by 준치 2013. 9. 11. 17:45

오늘은 같이 일하는 동생을 위해 잠깐 시간내서 테스트를 했다.

돈 합산이라 (,)가 있어서 치환 하고 char 를 int로 변환하고 그리고 합산을 해야한다.

SELECT REPLACE( 해당컬럼, ',', '') FROM 테이블명   10,000 -> 10000 치환작업

SELECT CONVERT(int,REPLACE( 해당컬럼, ',', '')) FROM    int 변환작업

SELECT SUM(CONVERT(int,REPLACE( 해당컬럼, ',', ''))) FROM 테이블명    합산작업

처음 구상할때 부터 int로 넣어서 display 할때 , 작업을 할것인지...

아니면 ,로 넣어서 query로 작업할것인지... 선택을 하면된다.

간단한거 하고 거창하게 쓰네..ㅋㅋㅋ

오늘도 화이팅~~

SQL
posted by 준치 2013. 7. 2. 18:31

오랜만에 글을 쓴다..ㅎㅎ

퇴근시간이 넘어가자 갑자기 연락이 왔다..ㅎㅎ 중복된 데이타를 찾아서 삭제해달라고..

그래서 검색 고고씽~

SELECT [중복 컬럼 명] , count(*) AS CNT
FROM [테이블 명]
GROUP BY [중복 컬럼 명]
HAVING count(*) > 1

결과는 count 에서 1 이상인게 출력 된다~

오늘도 화이팅~~

SQL
posted by 준치 2012. 10. 9. 15:15

개발한 내용을 배포를 하는데... 테스트를 했더니 자동 증가값 (identity) 값이 수정이 안된다.

identity 로 전체 카운트를 할려고 생성한 컬럼인데... 어쩔까나...

mssql 2005 에서는 테이블을 수정 - 열속성 - ID 사양 을 아니요 저장 - 다시 예 로 변경하면 초기화가 된다.

mssql 2008 에서는 안되고 테이블을 삭제해서 다시 생성하라는 메시지가 나온다.. 젠장...

암튼 그래서 또 찾아보았다.. 초기화 방법.. 생각 보다 간단했다..

해결방법

DBCC CHECKIDENT('테이블명',RESEED,0)

상단의 내용을 실행하면 mssql 2008 에서는 다음과 같은 메시지가 나온다.

ID 정보 확인: 현재 ID 값은 '1'이며, 현재 열 값은 '0'입니다.
DBCC 실행이 완료되었습니다. DBCC에서 오류 메시지를 출력하면 시스템 관리자에게 문의하십시오.

암튼 다시 저장해서 테스트해보니 초기 1값이 되어있었다.

끝~~~ 오늘도 화이팅~~~^^

 

SQL
posted by 준치 2012. 8. 16. 15:53

오늘은 갑자기 날짜 계산에 대해서 해보게 되었다.

오늘부터 특정날짜까지 몇년 몇월이 지났을까?! 쿼리로 계산해 보고 싶었다.

간단하게 생각했는데 생각보다 어렵네.. 그래서 검색...

쿼리는 다음과 같다는.....

DECLARE @SD DATETIME , @ED DATETIME

SET @SD = Convert(varchar(10),'2010-04-04',120)
SET @ED = Convert(varchar(10),'2012-08-16',120)

SELECT @SD AS START_DATE , @ED AS END_DATE

SELECT
 (CONVERT (VARCHAR,DATEDIFF(MONTH,@SD,@ED)/12) + '년 ' +
 CONVERT (VARCHAR, DATEDIFF(MONTH,@SD,@ED) % 12) +'월') AS VALUE_DATE

결과값은 2년 4월

DATEDIFF 는 시,분,초,년,월,일 선택이 모두 가능하다.

참고해서 사용한다면 유용할듯..

오늘도 파이팅~~~~

SQL
posted by 준치 2012. 5. 23. 18:11

오늘 mssql에서 조인걸어서 select 하려고 하는데 오류가났다. 젠장..

"System.Web.Services.Protocols.SoapException: 서버에서 요청을 처리할 없습니다. ---> System.Data.SqlClient.SqlException: 현재 보안 컨텍스트로는 서버 보안 주체 "ApvDBUser"() 데이터베이스 "ErpApv" 액세스할 없습니다"

이건 도대체 뭔지.. 또 어디서 나왔는지...흠.. 검색.. 고고씽...

쿼리를 확인해보니 서로다른 DB를 조인걸어서 접근할수 없어서 오류가 나는것이라고 한다.

방법은 쿼리를 고치삼!! ㅠㅠ

참고 : http://hmoai.blog.me/50100104896

서로 다른 두 DB를 DB명을 사용하여 조인했을때 SQL 매니지먼트에서는 잘 나오던것이

asp 페이지에서 돌리면 아래와 같은 에러가 뜬다. 

Microsoft OLE DB Provider for SQL Server 오류 '80004005'

현재 보안 컨텍스트로는 서버 보안 주체 "koreaspoiler_csm"이(가) 데이터베이스 "koreaspoiler"에 액세스할 수 없습니다.

/inventory/shop_setInventory.asp, 줄 122 

이건 DB에 계정 권한이 없기 때문이다.

그래서 SQL 매니지먼트에서 양쪽에 접근할 계정에 대해 DB두곳 다 접근 권한을 주면 된다.

권한은 보안 탭의 로그인의 계정에서 사용자 매핑에서 설정할 수 있다.

 

SQL
posted by 준치 2011. 12. 7. 14:30

오늘 정말 당황 스러운 일이 생겼다.. 요즘 데스크탑 개발 PC가 삐리 삐리 해서..

오류검사 , 조각 모음 을 짜증나게 겁나 하다가.. mssql DB에 문제가 생겼다.

DB명 옆에 (주의대상) 이라는것이 써있다.. 이건 뭐야 젠장!!!! 또 검색 고고씽...

그래도 다행이 해결 방법이 있었다. 감사합니다 송을 겁나 불렀다.

우선 해결 방법

EXEC sp_resetstatus 'yourDBname';
ALTER DATABASE yourDBname SET EMERGENCY
DBCC checkdb('yourDBname')
ALTER DATABASE yourDBname SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC CheckDB ('yourDBname', REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE yourDBname SET MULTI_USER

근데 저 스크립트를 어디다가 시킬까?!ㅠㅠ 그냥 master에서 실행 하면된다!

**출처**
http://webee.tistory.com/58
http://blog.daum.net/jungsangun/7691128
http://cafe.naver.com/teamsystem.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=125&

정리가 다 잘되있다.. 감사합니다.

오늘도 화이팅!!!