2007년 4월 9일 월요일
MDAC 버전확인 하기
HKEY_LOCAL_MACHINE\Software\Microsoft\DataAccess\FullInstallVer
주로, VBScript등으로 DB접속할때나, App 등에서 DB접속할때,
서버를 확인 할수 없다는 메시지가 나올때,
MDAC 버전을 확인하여
필요한 버전을 다운로드 받아 설치 해야 한다.
물론, MS사이트에서 다운로드 받으면 된다.
2007년 3월 26일 월요일
테이블 전체 레코드 구하기 (고성능)
- 일반적인 방법
SELECT Count(*) FROM [TableName]
- 성능을 향상 시킬 수 있는 방법
SELECT rows FROM sysindexes WHERE id = OBJECT_ID('[TableName]') AND indid <>
100만건 DB에서 예상비용으로 1000배 이상의 효과를 보았음.
MS-SQL 7.0, 2000, 2005 모두 사용가능
Collation이 달라서 에러가 날때
에러 : Cannot resolve collation conflict for equal to operation
컬럼명 COLLATE "Collation 타입"
ex)
SELECT * FROM Data
WHERE MID COLLATE SQL_Latin1_General_CP1_CI_AS in (
SELECT MID FROM Data
)
소심한 개발자를 위한 자동증가 번호 조절하기
보통 테이블을 만들고, Primary Key로 자동증가형을 선택하여 작성 합니다.
그상태에서 각종 테스트를 하다보면, Key값은 계속증가 하죠
그래서 데이타를 다 지웠는데, 새로 입력한 값은 이전에 등록한 이후의 값으로 표시됩니다.
이런, 그래서, 테이블을 Drop 시키고 새로 만들면 괜찮기는 한데,
관계를 잡았던거라면, 관계풀고, Drop 한다음에 다시 관계를 잡자니
여간 불편한게 아니군요.
이럴때, DBCC CHECKIDENT (테이블명)을 하면, Key 값이 초기화 됩니다.
아래는 SQL 2000 도움말을 가져온것이구요.
소심하다거나, 깔끔하다거나, 높은완성도를 추구하는 개발자를 위한 팁입니다. ^_^
A. 필요에 따라 현재 ID 값 재설정
다음은 jobs 테이블의 현재 ID 값을 재설정하는 예제입니다.
USE pubs
GO
DBCC CHECKIDENT (jobs)
GO
B. 현재 ID 값 보고
다음은 jobs 테이블의 현재 ID 값을 보고하고, ID 값이 정확하지 않아도 그 값을 수정하지 않는 예제입니다.
USE pubs
GO
DBCC CHECKIDENT (jobs, NORESEED)
GO
C. 현재 ID 값을 30으로 설정
다음은 jobs 테이블의 현재 ID 값을 30으로 설정하는 예제입니다.
USE pubs
GO
DBCC CHECKIDENT (jobs, RESEED, 30)
GO
쿼리만들때, 너무나 많은 컬럼 자동으로 만들기
나의 MS-SQL 버전은?
MS SQL의 버전에는 여러가지가 있었다.
내가 본건
MS SQL 7.0
MS SQL 2000 뿐이지만... 6.5도 있었다고 하고, 그 이전에도 있었을 것이다.
그런데, 컴퓨터 화면, 우측하단 트레이에서 오른쪽 마우스 버튼으로 버전을 확인해보면,
8.0 어쩌구 저쩌구 라고 나온다.
거참 이상하다... 내껀 분명히 2000 인데....
그럴때, 이걸 해본다.
1단계 : SELECT @@VERSION
이걸 하면 나의 경우에는 요렇게 나온다.
Microsoft SQL Server 2000 - 8.00.760 (Intel X86) Dec 17 2002 14:22:05 Copyright (c) 1988-2003 Microsoft Corporation Enterprise Edition on Windows NT 5.0 (Build 2195: Service Pack 4)
MS SQL의 버전과 함께, 운영체제의 버전이 나온다.
고로, SQL 2000은 내부적으로 버전 7.0 이후에 나온 8.0 이 맞는 다는 예기이고,
Windows 2000 여시 NT 4.0 이후에 나온 버전 5.0 이라는 것이다.
더불어, 운영체제에 설치된 서비스팩 버전도 함께 표시된다.
한단계 더 나가면,
2단계 : XP_MSVER 이라는 내장 스토어드 프로시저가 있다
exec xp_msver 만 사용하면, 전체 내용이 표시되고,
exec xp_msver ProductVersion 와 같이 항목 이름을 추가하면, 해당 항목만 표시된다.