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 준치 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&

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

오늘도 화이팅!!!
SQL
posted by 준치 2011. 12. 1. 15:19

DB에 들어있는 nvarchar 값이 XML 구조로 들어있었다.. 그중에 특정 값을 변경해달라네..ㅠㅠ

프로그램으로 할수도 있지만 DB로 해보고 싶어졌다.. 잘 못하면서..ㅋㅋㅋ

그래서 또 겁나 검색.. 쫄지마 ㅆㅂ.. 정신으로...

우선 출처는 http://technet.microsoft.com/ko-kr/library/ms190675.aspx

여기가 짱인듯.. 예제를 그냥 복사해서 실행... 이해가 금방가네...ㅎㅎㅎ

DECLARE @myDoc xml
SET @myDoc = '<Root>
<Location LocationID="10" 
            LaborHours="1.1"
            MachineHours=".2" >Manufacturing steps are described here.
<step>Manufacturing step 1 at this work center</step>
<step>Manufacturing step 2 at this work center</step>
</Location>
</Root>'
SELECT @myDoc

-- update text in the first manufacturing step
SET @myDoc.modify('
  replace value of (/Root/Location/step[1]/text())[1]
  with     "new text describing the manu step"
')
SELECT @myDoc
-- update attribute value
SET @myDoc.modify('
  replace value of (/Root/Location/@LaborHours)[1]
  with     "100.0"
')
SELECT @myDoc
결과를 보면 이렇게 변경...파란 부분은 
/Root/Location/step 에 첫번째 node 값을 변경
<Root>

  <Location LocationID="10" LaborHours="1.1" MachineHours=".2">
  Manufacturing steps are described here.
<step>new text describing the manu step</step>
<step>Manufacturing step 2 at this work center</step></Location>
</Root>








두번째 결과
<Root>
  <Location LocationID="10" LaborHours="100.0" MachineHours=".2">
  Manufacturing steps are described here.
<step>new text describing the manu step</step>
<step>Manufacturing step 2 at this work center</step></Location>
</Root>
/Root/Location/@LaborHours 의 값이 변경


나중에 유용하게 쓸수 있을듯.. 오늘도 퐈이링..ㅎㅎ
 
 
SQL
posted by 준치 2009. 2. 3. 10:50

sbyte
1 Byte
System.Byte
-128~127

byte
1 Byte
System.SByte
0~255

short
2 Byte
System.int16
-32768~32767

ushort
2 Byte
System.Uint16
0~65535

int
4 Byte
System.Int32
-2,147,483,648~2147,483,647

uint
4 Byte
System.UInt32
0~4,294,967,295

long
8 Byte
System.Int64
-9,223,372,036,854,775,808~

9,223,372,036,854,775,807

ulong
8 Byte
System.UInt64
0~7,446,744,073,709,551,615

float
4Byte
System.Single
1.40239846e-45

~3.40282347e+38

double
8Byte
System.Double
4.94065645841246544e-324

demical
16Byte
System.Demical
28-29자리의 소수

char
8,000바이트(문자)까지 지정 가능한 유니코드가 아닌 고정길이 데이터 형입니다.

varchar
 8,000바이트 까지 지정 가능한 유니코드가 아닌 가변길이 데이터 형입니다.

text
 2^31 - 1 (2,147,483,647) 유니코드가 아닌 가변길이 데이터형으로 2기가 까지 지정 가능 합니다.

nchar
4,000바이트 까지 지정 가능한 유니코드 고정길이 데이터 형입니다.

nvarchar
4,000바이트 까지 지정 가능한 유니코드 가변길이 데이터 형입니다.

ntext
2^30 - 1 (1,073,741,823) 즉, 1기가 까지 지정 가능한 가변길이 유니코드 데이터 형입니다.

binary
8,000 바이트 까지 이진 데이터를 지정 가능한 고정길이 데이터형입니다.

varbinary
8,000바이트 까지 이진 데이터를 지정 가능한 가변길이 데이터형입니다.

image
2기가까지 이진 데이터를 지정 가능한 가변길이 데이터형입니다.

cursor

커서 지정에 사용하는 형입니다. 커서에서만 사용 합니다.

rowversion
sql2000에서 timestamp 형에서 변경된 데이터 형으로 데이터베이스에 걸쳐 유일하게 사용하는 고유 값을 지정 하는 데이터 형입니다. 해당 로우가 변경될시 함께 변경됩니다. timestamp형이라 보통 불립니다.

sql_variant
sql2000부터 생긴 데이터 형으로 text, ntext, timestamp, 과 sql_variant 형을 제외한 모든 데이터형을 저장 가능한 데이터 형입니다.

table
sql2000부터 생긴 데이터 형으로 테이블과 같은 2차원 데이터를 저장하기위한 데이터 형입니다.

uniqueidentifier
어떠한 경우라도 중복되지 않는 항상 고유한 값을 저장하는 데이터 형입니다.

 출처
http://jjunya84.egloos.com/27949
http://blog.naver.com/const34?Redirect=Log&logNo=20003318458
http://blog.naver.com/ballkiss?Redirect=Log&logNo=30025300601

SQL
posted by ekfn 2008. 11. 21. 11:25

제목: Microsoft SQL Server Management Studio
------------------------------

서버 'EKFNQ'에 대한 복원이(가) 실패했습니다.  (Microsoft.SqlServer.Smo)

도움말을 보려면 다음을 클릭하십시오: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.1399.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=복원+Server&LinkId=20476

------------------------------
추가 정보:

System.Data.SqlClient.SqlError: 미디어 세트에 2개의 미디어 패밀리가 있지만 1개만 제공하고 있습니다. 모든 멤버를 제공해야 합니다. (Microsoft.SqlServer.Smo)

도움말을 보려면 다음을 클릭하십시오: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.1399.00&LinkId=20476

이런 경우 데이타베이스 백업시  백업창에서 일반 > 대상 에서
백업파일을 하나만 추가 하여 실행합니다.
두개로 백업할 경우 위와 같은 에러가 발생합니다.(파일을 분할 하여 백업파일을 생성합니다.)

SQL
posted by 준치 2008. 8. 26. 14:33

상당히 복작합 일을 물으셨습니다. 하지만 답은 된다는 겁니다.

설명대로 차근차근 따라하시면 됩니다.
일단 SQL7 의 ERD를 가져오기 위해서 SQL7이 실행 중이어야 합니다.

1단계: ERWIN을 실행합니다. 빈화면이죠. 그리고 모드를 lOGICAL에서
       PHYSICAL로 바꿉니다.
2단계: 연결하고자 하는 SQL7과 연결 설정을 만듭니다. 여기서는 TCP/IP
       를 이용해서 직접연결하는 방법을 설명하겠습니다.(그러기 위해서는
       SQL7에서 넷트웍 라이브러리 디폴트 값이 TCP/IP로 미리 설정되어
       있어야 합니다. 대부분 TCP/IP를 디폴트로 쓰니까^^)

       메뉴 > SERVER > TARGET SERVER... 를 클릭하면  서버 타입을 설정하는
       메뉴가 잔뜩 나타납니다. 그상태에서 SQL7을 선택합니다.
       그 다음에 OK하고 빠져 나옵니다.

3단계: 메뉴 > SERVER > SQL SERVER CONNECTION메뉴가 있습니다.
       클릭하면 연결 설정하는 팝업창이 뜨는데 질문에 맞게 답을 넣어주고
       CONNECT버튼을 누르면 연결됩니다. ( SQL 서버에 등록된 사용자/
       PASSWORD/DATABASE NAME/SERVER NAME)을 입력하라고 하는데 주의
       할것은 아까 위에서 TCP/IP로 연결 한다고 했죠. 즉 서버 네임에
       IP주소를 넣어야 합니다. SQL서버가 탑재되어있는 서버의 IP주소.
       SQL서버에 독자적인 주소를 부여했다면 그 IP주소.

4단계: 연결 된 후에도 ERWIN 화면은 빈 화면입니다.(연결만 했지 ERD값을
       가져오는 작업을 하지 않았기 때문이죠) 요기서 ERD값을 가져오려면
       메뉴바 밑에 그림 버튼이 여러개 있죠. 그 위에 마우스 커서를 가져
       가면 풍선도움말이 나오는데, "COMPLETE COMPARE"가 있습니다. 그걸
       클릭하세요. 그러면 선택화면이 뜨는데 특별이 다른 조건이 없으면
       그냥 NEXT버튼을 클릭하고 그러면 RESOLVE DIFFERENCE 창이 열립니다.
       휴! 설명이 길군요. 화면이 두개로 나뉘어져 보이는데 왼쪽이 ERWIN에서
       가진값(아무것도 없을겁니다.) 오른쪽이 SQL 서버(트리구조로 잔뜩 있을
       겁니다.) 서버쪽을 스크롤 하면, 아래쪽에 TABLE이 있는데 마우스로 클릭
       하면 파랗게 반전 됩니다. 필요한 테이블을 다 선택하고 오른쪽에 있는
       "<-"를 클릭하면 선택한 자료가 옮겨집니다.

       요기서 중요! 그냥 OK 하면 자료가 옮겨지지 않습니다. 선택하고 "<-"
       버튼 누른 후에 화면 왼쪽아래를 보면 옮긴다는 의미의 버튼이 있습니다.
       그걸 누르면 자료가 옮겨가는 화면이 막 보이고 이때 "DONE"이나 "OK"
       하면 작업이 종료됩니다. 윗단계에서 잘 살펴 보면 PRIMIRY 키값도 있고
       스토어드 프로시져도있고, 사용자 정의도 있고 많이 있습니다. 선택하면
       알아서 옮겨 줍니다.

5단계: 자료가 드디어 ERWIN화면에 보일겁니다. 일단 저장하고, 다른 작업을 하세요.
       요기서 레포트 출력하면 쉽게 ERD하고 속성이나 기타정보가 들어간 산출물을
       만들 수 있습니다. 거의 원하는 모든 걸 뽑아 올 수 있습니다.


열심히 하세요.... 설명이 좀 황당하지만..... 참고로 ERWIN은 한국공급업체가
제니시스 입니다. 인터넷에서 메뉴얼을 받을 수 있는 걸로 압니다. 물론 회원등록
하고 전화한번 해야 하지만 메뉴을 받을 수 있기는 합니다.

메뉴얼에 앞에서 설명한 이런 내용은 없습니다. 그냥 레포트를 만들어서 워드로 넘긴
다든지 만들어진 ERD로 SQL7에 테이블이나 데이터베이스를 생성하는 방법정도 있습니다.
하여가 기력을 업하는데는 도움이 됩니다. ERWIN을 제대로 다루기 위해서는 SQL7에 대한
이해가 우선해야 하고,DB에 대한 기본적인 이해가 필요합니다. 특히 메쏘드가 사람을
괴롭히는데 각각의 메쏘드가 어떤 형태의 DB를 얘기하는지 알아야 제대로 된 테이블이
만들어 집니다. RDB에도 요기서는 종류가 여러 가지 입니다. 툭툭나오는 설명을 조심해서
해석 하셔야 합니다.