System & Develop/SQL2002. 7. 1. 18:05
mysql 실행

mysql> use mysql;

'Anonymouse 권한 삭제
mysql> delete from user where password="";

'루트 패스워드 변경
mysql> update user set password = password('Password') where user ='root';

'User 추가하기
mysql> insert into user (host,user,password) values ('localhost','User_name','password('Password'));

'DB권한 추가하기
mysql> insert into db values ('localhost','DB_Name','User_Name','y','y','y','y','y','y','y','y','y','y');

'실행법
> mysql -u User_Name -p Password DB_Name

'리로드 꼭 하기
mysql> Flush privileges (MySQL Reload)

Posted by basaaja
System & Develop/SQL2002. 6. 29. 21:58
이번 기사에서는 IP 주소를 사용하여 SQL Server 데이터베이스에 연결했을 때 속도가 너무 느리거나 "제한시간이 만료되었습니다"라는 에러메시지를 해결하는 방법에 대해서 최근 Microsoft 고객기술지원부에서 제안한 내용을 볼 수 있다.

지난 기사인 "SQL 7.0 원격지 서버에 SQL 2000으로 접속하기" 기사와 같이 참고하기 바란다.

MDAC(Microsoft Data Access Components) 버전 2.6이 설치된 경우, 서버 이름이 아니라 IP 주소를 사용하여 SQL Server 7.0 또는 SQL Server 2000 데이터베이스에 연결하려고 하면 그 때마다 예상한 것보다 시간이 더 걸리는 경우가 있다. 보고된 바 있는 특정한 사례에서는 "제한 시간이 만료되었습니다"라는 오류가 클라이언트 응용 프로그램에 보고되고 연결 시도가 실패하기도 한다.
TCP/IP 주소로 매핑되는 서버 별칭을 이용할 때는 이 문제가 계속 발생할 수 있다. MDAC 2.5 또는 2.1을 설치한 경우에는 이 문제가 발생하지 않는다.

발생하는 원인은?

SQL Server 네트워크 라이브러리인 Dbnetlib.dll의 MDAC 2.6 버전은 역방향 조회를 사용하여 IP 주소의 호스트 이름을 확인하려고 한다. 클라이언트 컴퓨터에 속도가 느린 도메인 이름 서비스(DNS) 서버만 있거나 DNS 서버가 아예 없고 컴퓨터의 로컬 HOSTS 또는 LMHOSTS 파일에 해당 SQL Server의 IP 주소에 대한 호스트 이름이 포함되어 있지 않을 때는 역방향 조회가 5초 후에 시간 초과된다.

이것은 SQL Server 드라이버 코드 내의 내부 시간 제한일 뿐이고, 이에 따라 클라이언트 응용 프로그램에서 시간 초과 오류가 발생할 수도 있고 그렇지 않을 수도 있다. 연결 시도가 성공할 수는 있지만 해당 응용 프로그램이 수행한 새 연결이 모두 동일하게 5초 지연된다.

해결 방법은?

이 문제를 해결하려면 Microsoft SQL Server 2000용 최신 서비스 팩이 필요하다. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조한다.

How to Obtain the Latest SQL Server 2000 Service Pack

이 문제를 해결하려면 Microsoft Data Access Components 2.6의 최신 서비스 팩을 구한다. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조한다.

How to Obtain the Latest MDAC 2.6 Service Pack

해결 과정은?

이 문제를 해결하려면 SQL Server 서버의 IP 주소 역방향 조회를 안정적으로 수행할 수 있는 수단을 제공하거나 IP 주소 대신 SQL Server 시스템 이름을 사용하거나 이 핫픽스를 적용한다.

HOSTS 파일이나 LMHOSTS를 사용하려면 해당 SQL Server 서버의 TCP/IP 주소를 줄의 맨 앞에 입력하고 공백을 몇 개 입력한 다음 SQL Server 서버의 시스템 이름을 입력한다. 예를 들면 다음과 같다.

123.123.123.123 myservername

HOSTS 또는 LMHOSTS 파일은 Microsoft Windows NT 및 Microsoft Windows 2000을 실행 중인 클라이언트 컴퓨터의 경우에는 System32DriversEtc 디렉터리에 속해 있고 Microsoft Windows ME, Microsoft Windows 98 또는 Microsoft Windows 95를 실행 중인 클라이언트의 경우에는 Windows 디렉터리에 속해 있다.

어떤 상황에서 발생하는가?

Microsoft는 본 문서의 시작 부분에 나열한 제품에서 이 문제를 확인했다. 이 문제는 SQL Server 2000 서비스 팩 2와 MDAC 2.6 서비스 팩 2에서 처음 수정되었다.

이와 같은 문제를 확인해 보려면 SQL Server 시스템 이름이 아닌 IP 주소를 통해 SQL Server에 연결하는 다음과 같은 Microsoft Visual Basic 코드를 실행하면 현상을 테스트 할 수 있다.

Dim conn as ADODB.Connection
Set conn = New ADODB.Connection
' Replace 123.123.123.123 with the IP address of your SQL Server here.
conn.Open "Provider=SQLOLEDB;Server=123.123.123.123;User ID=sa;" & _
          ";Password=;Initial Catalog=Pubs;"

이 문제는 SQL Server 7.0과 함께 MDAC 2.6을 사용할 때 주로 발생한 것으로 보고되었다.


Posted by basaaja
System & Develop/SQL2002. 6. 29. 00:30
IF @var = NULL

- 이것은 NULL 이라는 문자열로 비교해서 에러가 난다

IF @var IS NULL

로 해야 정상적으로 인식한다.
Posted by basaaja
System & Develop/SQL2002. 6. 29. 00:28
REATE PROCEDURE sp_hanmir_billInput
(
        @vID varchar(14),
        @vName varchar(8),
        @vMonth int,
        @vServiceCode int,
        @vServiceType int
)
AS

set xact_abort on
BEGIN TRAN
        
        Declare @vChkId varchar(14)

        SELECT @vChkId = hanmirMember.Id from hanmirMember where hanmirMember.Id = @vId
        
        IF @vChkId IS NULL
        BEGIN
                INSERT INTO hanmirMember (id,name,serviceType,endUseDate,state) values(@vId,@vName,@vServiceType,dateAdd(m,@vMonth,getDate()),'1')
                INSERT INTO hanmirMoneyInfo (id,serviceCode,registerDate) values(@vId,@vServiceCode,getDate())

                PRINT "Insert OK"
        END
        ELSE
        BEGIN
                UPDATE hanmirMember SET hanmirMember.serviceType = @vServiceType, endUseDate = dateAdd(m,@vMonth,getDate())
                INSERT INTO hanmirMoneyInfo (id,serviceCode,registerDate) values(@vId,@vServiceCode,getDate())

                PRINT "Update OK"
        END

COMMIT TRAN
GO
Posted by basaaja
System & Develop/SQL2002. 6. 3. 17:54
Select
CompanyName
From
Customers
WHERE
EXISTS
(
   SELECT DISTINCT
     CustomID
   FROM
     Orders
   WHERE
     ShopCountry = '대한민국'  
     AND Orders.CustomerID = Customers.CustomerID
  )


대한민국을 발송 주소로 가지고 있는 모든 회사의 이름을 얻는다.

중요
- In에 비해 Exists를 사용하는것이 훨씬 더 효율적이다. 왜냐하면 Exists는
불린 테스트(True/False)인 반면 In은 쿼리 안에 있는 각 행들을 판별하기 떄문이다. Exists는 이것이 하나의 일치되는 항목을 찾았다면 종료된다. 그럼으로써 이 쿼리를 실행 시키는 데 요구 되는 자원을 줄이게 된다.

'System & Develop > SQL' 카테고리의 다른 글

SqlServer SP - 값없음 확인 함수 IS NULL  (0) 2002.06.29
SqlServer SP - 간단한 트랜잭션 xact_abort on  (0) 2002.06.29
SQL - IN (중첩된 SQL문)  (0) 2002.06.03
SQL - Distinct  (0) 2002.06.03
SQL - TOP n  (0) 2002.06.03
Posted by basaaja
System & Develop/SQL2002. 6. 3. 17:51
Select
CompanyName
From
Customers
WHERE
CustomerID IN
(
   SELECT DISTINCT
     CustomID
   FROM
     Orders
   WHERE
     ShopCountry = '대한민국'  
  )


대한민국을 발송 주소로 가지고 있는 모든 회사의 이름을 얻는다.

Mysql의 경우

SELECT Table1.*
FROM Table1,Table2
WHERE Table1.id = Table2.id

'System & Develop > SQL' 카테고리의 다른 글

SqlServer SP - 간단한 트랜잭션 xact_abort on  (0) 2002.06.29
SQL - EXISTS (중첩된 SQL문)  (0) 2002.06.03
SQL - Distinct  (0) 2002.06.03
SQL - TOP n  (0) 2002.06.03
SQL - Like '_예제', '[선택]함'  (0) 2002.06.03
Posted by basaaja
System & Develop/SQL2002. 6. 3. 17:42
SELECT DISTINCT  Example,Example2 From Table

중복되는 값들을 하나로 포함


'System & Develop > SQL' 카테고리의 다른 글

SQL - EXISTS (중첩된 SQL문)  (0) 2002.06.03
SQL - IN (중첩된 SQL문)  (0) 2002.06.03
SQL - TOP n  (0) 2002.06.03
SQL - Like '_예제', '[선택]함'  (0) 2002.06.03
SQL - Between  (0) 2002.06.03
Posted by basaaja
System & Develop/SQL2002. 6. 3. 17:40
SELECT TOP n [PERCENT] Field1, Field2 ...
FROM Table

위에서 부터 몇개 가져오기.

'System & Develop > SQL' 카테고리의 다른 글

SQL - IN (중첩된 SQL문)  (0) 2002.06.03
SQL - Distinct  (0) 2002.06.03
SQL - Like '_예제', '[선택]함'  (0) 2002.06.03
SQL - Between  (0) 2002.06.03
SQL - Inner Join ????  (0) 2002.05.31
Posted by basaaja
System & Develop/SQL2002. 6. 3. 17:39
Lastname Like '_수용' 는 수용앞에 단 한글자가 포함된것만 검색

Lastname Like '[선택]함' 는 선이나 택으로만 시작하는 단어들 중에서 검색

'System & Develop > SQL' 카테고리의 다른 글

SQL - Distinct  (0) 2002.06.03
SQL - TOP n  (0) 2002.06.03
SQL - Between  (0) 2002.06.03
SQL - Inner Join ????  (0) 2002.05.31
SqlServer Sp - 문자열 자르기 SubString, 빈값체크 IsNull  (0) 2002.05.31
Posted by basaaja
System & Develop/SQL2002. 6. 3. 17:37
Between <시작 값> AND <종료 값>

값에는 날짜가 들어갈수도 있다.

Posted by basaaja