'사용자'에 해당되는 글 1건

  1. 2007/06/19 PHP와 MSSQL 연동 (1)

휴,, 정말 오랜만에 포스팅하는군요.

인천대학교 실습 때문에 MSSQL 서버를 쓰게 되었습니다. 분명 PHP와 연동할 방법이 있을 것 같아서 조사해 본 자료입니다.

먼저, MSSQL의 연동 방법은 MySQL과 같습니다. 함수 이름만 mysql_[...] 에서 mssql_[...]로 바뀐 것 뿐입니다. 하지만 사용 전에 세팅이 필요합니다.

먼저, PHP.ini 파일을 수정해야 합니다. APM Setup 사용자들은 APM 관리자에서 [환경 설정] -> [PHP 환경성절] -> [PHP 확장모듈 설정] 으로 들어가서 'php_mssql.dll'에 체크를 해 주시면 됩니다. APM Setup을 사용하시지 않으시는 분들은 직접 PHP.ini 파일을 열어서 주석으로 처리되어 있는 'extension=php_mssql.dll' 부분의 주석을 해제해주시거나 없는 경우 직접 입력해 주셔야 합니다. 그러면 일단 MSSQL을 사용하실 수 있습니다.

위 함수들이 주로 사용하게 되는 함수들입니다. MySql과 사용법은 같습니다. 자세한 사항은 링크된 Documentation을 참고하시기 바랍니다.

MSSQL에서 가장 까다로운 점은, MySQL과는 달리 여러 사용자를 설정할 수 있다는 것입니다. (MySQL에 다중 사용자 기능이 있는지는 모르겠지만, 저는 사용해 본 적이 없으므로...) 뭐 익숙해진 이 시점에서는 장점이라고 보아야겠지만, 처음 할 때는 매우 헷갈리더군요.

MSSQL은 로그인사용자의 개념을 구분합니다. 전체 DB에 로그온하는 것'로그인'으로 설정된 유저이며, '사용자'각각의 데이터베이스에 접근하는 자격입니다. 또한 사용자는 로그인에 종속적입니다.

무슨 말인고 하니, board라는 데이터베이스가 있다고 합시다. 이 데이터베이스에 접근하기 위해서는 먼저 DB 전체에 로그인을 해야 합니다. 하지만 로그인을 했다 해도 그것만 가지고는 board에 접근할 수 없습니다. 이 로그인이 board에 접근할 수 있는 권한을 주어야 하는데 이것이 '사용자'입니다. '로그인' 자격으로 로그인을 한 후 '사용자'의 자격으로 DB에 접근하는 것입니다. 하나의 로그인은 여러 개의 사용자를 가질 수 있으며, 하나의 사용자는 한 개의 로그인에서만 유효합니다.

최대한 쉽게 풀어보려고 했는데 점점 꼬이네요..;; 어쨌든 그렇습니다.

MSSQL은 기본적으로 sa라는 로그인을 제공합니다. 또한 각 데이터베이스에는 sa의 로그인을 사용하는 dbo라는 사용자가 설정됩니다. 때문에 모든 DB에 접근하기 위해서는 sa로만 로그인하면 됩니다. 하지만 이는 보안상 불리할 수 있기 때문에 용도에 따라 로그인을 몇 개 더 만든 후 사용하는 것이 좋습니다.

기본적으로 MySQL과 MSSQL의 쿼리문은 같습니다. 다만, MySQL의 LIMIT 문을 MSSQL에서는 TOP으로 써야 합니다. 다음은 비교 소스입니다.

MySQL (Language : sql)
  1. SELECT * FROM tbl_name LIMIT 10;
  2. SELECT * FROM tbl_name LIMIT 0,30;
  3. SELECT * FROM tbl_name LIMIT 30,10;
 
MSSQL (Language : sql)
  1. SELECT TOP 10 * FROM tbl_name;
  2. SELECT TOP 30 * FROM tbl_name;
  3. SELECT TOP 10 * FROM tbl_name WHERE INDEX NOT IN ( SELECT TOP 30 INDEX FROM tbl_name );

보시는 바와 같이 중간에 있는 데이터를 뽑아올 때에는 NOT IN 문을 써야 합니다. 좀 귀찮은 건 사실입니다.

아직 많이 써 보진 않았지만 관리하기에는 MSSQL이 더 편할 것 같아 추후 개발시에는 MSSQL을 이용하려고 합니다.



2008년 1월 19일 이후 작성된 모든 글에 대해서 퍼가는 것을 금지합니다.
퍼가고자 하시는 분은 링크를 달아 주시기 바랍니다.
Posted by Harry