Database/MS-SQL2013. 9. 5. 11:35

잠금 요청 제한....

deadlock 이란다...  교착상태

http://msdn.microsoft.com/ko-kr/library/ms177433(v=sql.100).aspx

이런게 있구나... ㅠ.ㅠ

Posted by 비니미니파
Database/MS-SQL2013. 8. 30. 15:25

MS SQL 에서 row number 를 사용하기 위해서는 아래와 같이

select
   ROW_NUMBER() OVER( ORDER BY COL_NAME ) RNUM
 , COL_NAME2
from TBL_NAME
ORDER BY COL_NAME

ROW_NUMBER 에 선언한 order by 와 쿼리 order by 를 다르게 하면 row number 가 꼬임

 

Posted by 비니미니파
Database/MS-SQL2013. 8. 6. 16:19

create function [dbo].[function_name] ( @param char(2) )
returns INT
AS
BEGIN
declare @returnVal;

 

return @returnVal;
END

-----------------------------------------------------------------
수정할때는 alter
-----------------------------------------------------------------

아래는 요일을 숫자로 바꿔주는 함수... 월 을 1로 리턴해준다.

Create FUNCTION [dbo].[convYoiltoNum] (@pYoil varchar(2))
RETURNS INT
AS
BEGIN
 declare @nYoil int;

 if @pYoil = '월' set @nYoil = 1;
 else if @pYoil = '화' set @nYoil = 2;
 else if @pYoil = '수' set @nYoil = 3;
 else if @pYoil = '목' set @nYoil = 4;
 else if @pYoil = '금' set @nYoil = 5;
 else if @pYoil = '토' set @nYoil = 6;
 else if @pYoil = '일' set @nYoil = 7;
    
 return @nYoil;
END

-----------------------------------------------------------------
함수 호출 방법

select dbo.convYoiltoNum('월')

결과 1

 

Posted by 비니미니파
Database/MS-SQL2013. 6. 14. 13:50

[SQLServer 2000 Driver for JDBC] Underlying input stream returned zero bytes

 

JDBC 처리 시 DB 컬럼 타입이 TEXT 이고, 리턴되는 값이 0 byte 일 경우 오류 이다.

 

BIGO 컬럼 이 text 라면  0byte 를 ' ' 로 바꿔야 된다.

 

select

CASE DATALENGTH(BIGO)
                 WHEN 0 THEN ' '
                 ELSE BIGO
          END as BIGO

from TBL_NAME

 

 

Posted by 비니미니파
Database/MS-SQL2013. 6. 5. 16:24

select 를 날렸더니

잠금 요청 제한 시간이 초과되었습니다.

 라고 나온다. 이럴때 해결은

EXEC SP_LOCK 

실행하면 SPID 번호는 같고 여러개인 것이 나온다.

DBCC INPUTBUFFER( SPID )

찾은 SPID 로 명령 실행 하면 EventInfo 에 뭔가가 나온다... ㅠ.ㅠ

KILL SPID

뭐가 뭔지 모르겠지만 SPID 를 KILL 해버리면 된다.

SPID 를 잘 못 넣어 엉뚱한걸 KILL 해 버리면 곤란! ^^

 

Posted by 비니미니파
Database/MS-SQL2013. 5. 30. 17:29

오라클 SQL 문

select *
from TEST.MENU A
          START WITH A.UP_MENU_NO    = '1'
          CONNECT BY PRIOR A.MENU_NO = A.UP_MENU_NO 
          ORDER SIBLINGS BY A.SORT_NO

=========================================================================>

위의 오라클 sql 문을 ms-sql 문으로 변환

MS-SQL  문

;WITH CTE (UP_MENU_NO, MENU_NO,  MENU_LEVEL , MENU_NAME, SORT ) AS (

  SELECT 
       UP_MENU_NO AS UP_MENU_NO
       , '0' AS MENU_NO
       , MENU_LEVEL
       , MENU_NAME 
       , convert(varchar(255), right(N'00'+rtrim(SORT_NO),3)  ) AS SORT        //  1을 001 형태의 3자리 로 바꾸준다.
    FROM  MENU

    WHERE   UP_MENU_NO = '1' 
    UNION ALL 
    SELECT
         B.UP_MENU_NO AS UP_MENU_NO
         , B.MENU_NO AS MENU_NO
        , C.MENU_LEVEL + 1 AS MENU_LEVEL
        , B.MENU_NAME
        , convert(varchar(255), convert(nvarchar,C.SORT) + '|' +  right(N'00'+rtrim(B.SORT_NO),3)  ) AS SORT
    FROM    MENU B
    INNER JOIN CTE C ON B.UP_MENU_NO = C.MENU_NO
)
SELECT * FROM CTE order by SORT

 


 

Posted by 비니미니파
Database/MySQL&MariaDB2013. 3. 13. 11:50

my.cnf 에 아래 추가

[mysqld]
long_query_time=1
log-slow-queries=/var/log/mysql/log-slow-queries.log

파일 생성

mkdir /var/log/mysql
touch /var/log/mysql/log-slow-queries.log
chown mysql.mysql -R /var/log/mysql

MySQL 재구동 시
/var/log/mysql/log-slow-queries.log
에 다음 내용이 생성되면 정상적용 된것.

/usr/libexec/mysqld, Version: 5.0.77-log (Source distribution). started with:
Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument


 

Posted by 비니미니파
Database/MySQL&MariaDB2013. 2. 15. 15:39

MySQL 에서 문자를 연결할 때에는 concat() 함수를 사용하여야 한다.

예) select CONCAT( col1, col2 ) from db_name;

 

실전예) A 칼럼에는 1자리 코드 , B 컬럼에는 2자리 문자가 있는 데이터를 A 컬럼에 합쳐야 하는 상황

update db_name set  A = CONCAT( A, B );

컬럼 내용 합치기.

Posted by 비니미니파
Database/MySQL&MariaDB2013. 2. 14. 15:21

2006 : MySQL server has gone away

MySQL dump 후 import 할 때 위와 같이 오류가 뜬다면 아래를 시도해 보자.

SET GLOBAL max_allowed_packet = 1024 * 1024 * 32;

 

Posted by 비니미니파
Database/MySQL&MariaDB2013. 1. 22. 10:39

php 입력시 time() 을 이용하여 입력하였을 때 쿼리 실행 시 시간을 알수가 없다.

이럴때는 FROM_UNIXTIME() MySql 함수를 사용하여 편하게 보자!

SELECT FROM_UNIXTIME( UNIXTIME );

결과 yyyy-mm-dd hh:mm:ii

Posted by 비니미니파
Database/MySQL&MariaDB2011. 6. 22. 12:08

mysql user 추가/권한 ( grant )

데이터 베이스 추가


> create database demo_db;


사용자 추가


> grant all privileges on demo_db.* to demo_user@localhost identified by 'demo_user_pwd';



사용자 추가 적용


> flush privileges; 


Posted by 비니미니파
Database/Oracle2011. 5. 6. 11:56
1. 사용자가 LOCK 걸렸다는 오류 메세지를 뿌릴경우... ㅠ.ㅠ

"ORA-28000: the account is locked"

2. LOCK 걸린 사용자를 찾아낸다.

SELECT username, account_status, to_char(lock_date,'yy/mm/dd hh24:mi') lock_date
FROM dba_users;

3. LOCK 걸린 TESTUSER의 LOCK 푼다.

ALTER USER TESTUSER account unlock;

4. 비밀번호 변경을 한다. (비밀번호가 맞지 않을때...)

ALTER USER TESTUSER  IDENTIFIED BY TESTUSER;


Posted by 비니미니파