'MSSQL'에 해당되는 글 4건

  1. 2012/09/04 글뻥 MSSQL Char(n)에다 C#에서 데이터 넣을 때 (2)
  2. 2007/03/09 글뻥 MSSQL 과부하 걸릴때 조치
  3. 2006/09/14 글뻥 로그인 계정이 이미있다고 나올때 계정정리하기
  4. 2006/04/21 글뻥 MSSQL 설치 팁
올만에 쓰는 기술 팁인듯...

암튼, 최근 SNG게임 만들면서 황당한 상황을 만났다.

This article is just a reference of SQL Data Types to C# Data Types.

SQL Server data typeCLR data type (SQL Server)CLR data type (.NET Framework)
varbinarySqlBytes, SqlBinaryByte[]
binarySqlBytes, SqlBinaryByte[]
varbinary(1), binary(1)SqlBytes, SqlBinarybyte, Byte[]
imageNoneNone
varcharNoneNone
charNoneNone
nvarchar(1), nchar(1)SqlChars, SqlStringChar, String, Char[]
nvarcharSqlChars, SqlStringString, Char[]
ncharSqlChars, SqlStringString, Char[]
textNoneNone
ntextNoneNone
uniqueidentifierSqlGuidGuid
rowversionNoneByte[]
bitSqlBooleanBoolean
tinyintSqlByteByte
smallintSqlInt16Int16
intSqlInt32Int32
bigintSqlInt64Int64
smallmoneySqlMoneyDecimal
moneySqlMoneyDecimal
numericSqlDecimalDecimal
decimalSqlDecimalDecimal
realSqlSingleSingle
floatSqlDoubleDouble
smalldatetimeSqlDateTimeDateTime
datetimeSqlDateTimeDateTime
sql_variantNoneObject
User-defined type(UDT)user-defined typeNone
tableNoneNone
cursorNoneNone
timestampNoneNone
xmlSqlXmlNone

위의 표를 자세히 보면 MSSQL char 타잎은 .NET CLR에서 지원하지 않는다. (뭥미...?)
그래서 이리저리 테스트해본 결과...
배열인 Char[]은 지원하고 있다는 사실을 발견하였고,
현재는 이렇게 해서 문제를 해결하고 있다.

        public bool joinmember(string DeviceID, string herotype)
        {
               //LINQSQL 선언부 생략 
 //herotype이 Char(1)이다. 
                um.herotype = (Char)herotype.ToCharArray(0,1)[0]; 

               //중략
                db.userMaster.InsertOnSubmit(um);
               //후략
         }


여기에 맞추기 위해 일단 string으로 받아서 CharArray로 변환후에 [0]번째 Char로 돌려 주는 거다.

상세히 보면, String -Char[]변환->Char[]중 [0]번째만 Return -> Char
복잡하기는 하지만 잘 작동중.
2012/09/04 15:54 2012/09/04 15:54
SQL만 공부들 하시느라 그런지 MSSQL이나 오라클 등이 나자빠질정도로 과부하가 걸려도 아무렇지도 않다는 듯이 무관심한 사람들이 꽤 있다. 그러지말자. 그덕에 나같은 사람들 출장다녀야 하니 짜증 짬뽕이다.

가장 많이 접하는 경우를 예로 들면 테이블에 인덱스 안걸고 쿼리문에는 where조건 미친 프로그래머들이다.
나도 개발하지만 미친 프로그래머들땜시 RX8620의 CPU가 풀나는 아주 웃기지도 않는 사건이 있다.
그럴때는 차분히 다음과 같이 하자.

1. 먼저 MSSQL의 "프로필러"를 실행하라.
사용자 삽입 이미지

2. 정보를 수집하라
- 다른곳은 그대로 두고 "추적속성"에 "이벤트"탭만 설정한다.
사용자 삽입 이미지

3. 수집된 정보를 분석하라.
- "CPU"와 "Duration" 2개 필드가 높은넘부터 Sort하여 정렬한다. 예제에서는 그런넘이 없어 아쉽지만 참고만하자.
사용자 삽입 이미지

4. 가능성 있는 용의자를 확인했으면 테스트하자
- begin tran ~ rollback 사이에 용의자(쿼리)를 집어넣고 "CTRL+L"을 눌러 실행계획을 보자
- 실행계획에 가는 실선이 아닌 굵은 선으로 된부분을 따라가다보면 다음과 같이 나온다.
- 예제에서는 풀스캔하고 있다... ㅡㅡ;;
사용자 삽입 이미지

5. 이제 제대로 바꿔놓자
- 인덱스를 추가해놓자
사용자 삽입 이미지

6. 결과
- 적용 5분후 결과이다.
사용자 삽입 이미지
- 최종 10분후의 CPU사용율이다.
사용자 삽입 이미지

* 본사례는 H대학교 시스템에서 발생했던 부하에 대해 조치한 것을 리포트형식을 빌어 기록해둔것이다.
* 처음 추적을 시작할때 필터를 걸면 원하는 것을 얻어 낼 수도 있지만 DB에 넣어 원하는 바를 얻고싶다면 SQL에서 생성한 파일을 직접 import할 수도 있다.
SELECT * INTO tbltr
FROM ::fn_trace_gettable('D:\tmp\파일명.trc', default) 
2007/03/09 11:11 2007/03/09 11:11
SQL운영중에 백업했다가 복구했는데 황당하게도 계정이 추가 안된다.
"Error 15023: User or role '%s' already exists in the current database."

이럴때는 간단하게 다음과 같이 쳐주자
sp_change_users_login 'auto_fix', 'username'

username에는 추가하고자하는 계정명을 넣고 SQL쿼리분석기에서 돌려주자.
그리고 해당 DB를 재시작하면 짜잔하고 생기는 아이디 주긴다.
2006/09/14 21:52 2006/09/14 21:52
TAG ,

MSSQL 설치 팁

Admin/MSSQL 2006/04/21 03:32

- SQL을 완전 삭제하는법
1. MSSQL관련 폴더를 남김없이 지운다.
2. 레지트리에 관련정보를 삭제한다.
(모든 버전)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLServer
(6.x 버전)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLExecutive
(7.x 버전)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLServerAgent
(모든 버전)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer

- 설치중 에러파악전 확인사항
1. 정확한 IP를 지정한다.
2. Virus Vachin / IIS와 같은 웹서비스 / 익스체인지와 가끔 충돌난다.

- 실행안될때
%SQL폴더%\binn\setup /t RegistryRebuild = On

- 이래도 저래도 설치 안되면
%SQL폴더%\install\*.out파일을 확인한다

- *.out파일에 "스크립트를 수행하기 위해 SQL서버를 접속못합니다."라고 된경우
1. "setup.inf"파일 백업
2. "set !ServerName = $(!ComputerName)"라인검색
3. 다음코드 추가
ifstr(i) $(!Local) == "Yes"
set !ServerName = "."
endif
4. setup /t Local=Yes 실행

- 인스톨후에 EM에 등록안되는 경우
서버명에 "."만 입력 >> Windows계열은 "."은 Localhost와 같은 의미의 Netbios규칙
> 이경우 네트워크 안거치고 네임드파이프로 접근

2006/04/21 03:32 2006/04/21 03:32
TAG ,