728x90

Windows Server 2003 또는 Windows XP 서비스 팩 2를 설치한 후 연결된 서버에 대해 분산된 트랜잭션을 실행할 때 SQL Server 2000에서 7391 오류 메시지가 나타날 수 있습니다.
아래 페이지 참고
http://support.microsoft.com/kb/839279



SQL Server에서 연결된 서버를 사용할 때 발생하는 7391 오류 문제를 해결하는 방법
http://support.microsoft.com/kb/306212/ko


728x90
728x90




# MSSQL 미러링시 사용자 계정 설정 방법 #

 

마스터 DB에서 장애 발생 시, 슬레이브 DB fail-over 는 되나, 사용자 맵핑이 해제가 되는 일이 발생한다.

이는, fail-over DB의 사용자 권한은 전송이 되지만, system object 인 로그인 정보는 전송이 되지 않아

같은 로그인 id 이지만 다른 sid를 가지게 되어 맵핑이 해제가 된다.

이를 막기 위해 마스터DB의 로그인 id를 이용해 슬레이브 DB의 로그인 id를 같은 sid를 쓰도록 생성한다.

 

1. 마스터 DB에 사용자 생성 (testuser)

 

create login testuser with PASSWORD='password'

 

 

2. 마스터 DB testuser 사용자 sid 조회

 

select sid

from sys.syslogins

where name='testuser'

 

 

3. 슬레이브 DB testuser 생성 (마스터 DB testuser sid를 이용)

 

create login testuser with PASSWORD='password', SID = 0x874199B2C7A99F4FBC19990086313F22


교수님이 알려주신 내용.


728x90
728x90


 

로그인에서 오른쪽 마우스 선택하여 "새 로그인"을 선택한다.

새로운 로그인 계정을 추가한다. 일반 탭에서 로그인 아이디와 암호 그리고 사용할 기본 데이터베이스 설정을 해준다.


사용자 매핑 선택하면 위와 같은 화면이 나온다. 위와 같이 권한을 준다. 데이터베이스 역할 멤버 자격을 잘 못 선택할 경우 사용자 권한 설정을 하여도 모든 테이블이 보이게 된다. 기본 public으로만 셋팅하고 확인을 누른다.

로그인에 test 계정이 추가 되었고, TEST 데이터 베이스에 사용자에 test도 추가 되었다.

test 사용자에서 마우스 오른쪽을 클릭한 후 "속성"을 선택하면 위와 같은 화면이 나온다. 일반에서 설정할 필요 없고, 보안개체를 선택한 후 위에서 추가 버튼을 선택한다.


개체 추가 화면이 보이고, 특정 개체를 선택한다.


개체 유형을 선택한다.

권한을 줄 개체 유형을 선택한 후 확인 버튼을 누른다.

개체 유형 선택 후 선택할 개체 이름을 입력한 후 이름 확인을 누르면 필터가 되고, 찾아보기를 선택하면 개체 유형에 맞는 모든 정보가 보인다. table이란 이름을 입력하고 이름 확인을 선택한다.

권한을 줄 테이블을 체크한 후 확인을 준다. Table_1을 선택한 후 확인을 누른다.

위와 같이 추가 되고 확인을 누른다.

위 테이블에 SELECT 권한만 주고 확인을 누른다.

새로 생성한 계정으로 로그인 하면 추가된 테이블만 조회 가능하다.


특정 명이 들어있는 테이블, 뷰, 프로시저, 함수 등이 많은 경우 개체유형 체크가 번거롭기 때문에..


스크립트 선택하여 새쿼리 창 작업을 선택 하면 아래와 같이 구분이 생성된다.
use [TEST]
GO
GRANT SELECT ON [dbo].[TestTable] TO [test]
GO
위 구문을 복사하고,

SELECT 'GRANT SELECT ON [dbo].[' + name + '] TO [test]'
FROM sysobjects
WHERE name like '%table%'


위와 같이 셀렉트를 날리면 table이 포함된 테이블, 뷰, 프로시저, 함수이 위 구문으로 생성되고 그 문을 복사하여 일괄 명령을 날리면 손쉽게 명이 같은 개체에 권한을 부여할 수 있다.


 

728x90
728x90

xp_avalablemedia 시스템의 사용 가능한 드라이버 목록을 나타냄
xp_cmdshell 관리자 권한의 임의 명령을 수행함
xp_deletemail SQL서버에서 받은 메일함에 있는 내용을 삭제함
xp_dirtree 디렉토리 구조를 나타냄
xp_dsninfo ODBC DSN정보를 나타냄
xp_enumdsn 서버의 ODBC데이터 목록을 나타냄
xp_enumgroups 윈도우 그룹들의 목록을 나타냄
xp_eventlog 이벤트 로그를 보여줌
xp_fixeddrives 하드디스크 드라이버와 남은 용량을 나타냄
xp_getfiledetails 파일의 속성을 나타냄
xp_getnetname Netbios 명을 나타냄
xp_grantlogin 특정 사용자에게 로그인 권한을 설정
xp_logevent SQL 서버에 사용자 정의 로그를 기록함
xp_loginconfig 보안 모드에 대한 정보를 나타냄
xp_logininfo 사용자의 로그인 정보를 나타냄
xp_makecab 서버 파일에 대해 압축할 수 있는 권한을 허용
xp_msver SQL서버의 버전 정보를 나타냄
xp_ntsec_enumdomains 서버가 접근할 수 있는 도메인을 나열함
xp_readerrorlog SQL서버의 에러 로그를 나타냄
xp_regaddmultistring 레지스트리 키에 여러 문자열을 추가함
xp_regdeletekey 레지스트리 키를 삭제함
xp_regdeletevalue 레지스트리 키에 있는 값을 삭제함
xp_regenumkeys 레지스트리 키를 나열함
xp_regread 레지스트리 키를 읽음
xp_regremovemmultistring 레지스트리 키에 있는 여러 문자열을 삭제함
xp_regwrite 레지스트리 키를 작성함
xp_revokelogin 윈도우 그룹과 사용자로부터 접근을 취소함
xp_sendmail 정의한 수신자에게 메일을 보냄
xp_servicecontrol 윈도우 서비스 시작 혹은 정지를 수행함
xp_startmail SQL서버 메일 사용자 세션을 시작함
xp_stopmail SQL서버 메일 사용자 세션을 중지함
xp_subdir 하위 디렉토리 목록을 나타냄
xp_terminate_process 프로세스를 KILL시킴

 

sysobjects 데이터 베이스에 있는 모든 객체들을 제공
sysdatabases 데이터베이스가 가진 생성 날짜, 파일명, 경로 등의 정보를 제공
syslogins 데이터베이스에 로그인한 사용자와 비밀번호를 제공
sysprocesses 시스템 처리와 관련된 정보를 제공하여, 사용자별 작업 내역을 확인할 수 있음
syscolumns 모든 테이블과 뷰에 있는 각 칼럼 정보를 제공
sysfiles 선택한 특정 데이터베이스에 존재하는 모든 파일 정보를 제공
sysobjects 선택한 특정 데이터베이스에 대한 모든 객체 정보를 제공
syspermissions 사용자, 그룹, 역활들에 주어지거나, 거절되는 허가 항목에 대한 정보를 제공
sysprotects grant, deny구문들을 가진 보안 계정들에게 적용할 허가 사항들을 제공
systypes 데이터베이스에 있는 모든 시스템 데이터 유형과 사요자 정의 데이터 유형을 제공
sysusers 데이터베이스에 접근하는 모든 윈도우 사용자와 SQL서버 사용자 정보를 제공



참고 페이지 : http://netpyoung.springnote.com/pages/6172689?print=1


728x90
728x90

[MS-SQL] RANK(), DENSE_RANK(), ROW_NUMBER() 차이
위 구문들은 MS-SQL에서 순위를 매기기 위해 주로 사용하게 되는 구문이다.

ROW_NUMBER() OVER ([<partition_by_clause>] <order_by_clause>)
RANK() OVER ([<partition_by_clause>] <order_by_clause>)
DENSE_RANK() OVER ([<partition_by_clause>] <order_by_clause>)

성적 ROW_NUMBER RANK  DENSE_RANK 
85  1  1 1
85  2  1 1
82  3  3 2
80  4  4 3

위에 테이블 명이 [성적]인 경우 셀렉트 방법

SELECT RANK() OVER (PARTITION BY ORDER BY 성적) AS 'RANK'
              , DENSE_RANK() OVER (PARTITION BY ORDER BY 성적) AS 'DENSE_RANK'
              , ROW_NUMBER() OVER (PARTITION BY ORDER BY 성적) AS 'ROW_NUMBER'
FROM 성적

위와 같이 사용하면 된다.


더 자세한 내용 참고 하고 싶다면,
http://thehobt.blogspot.com/2009/02/rownumber-rank-and-denserank.html

728x90

'개발및업무 > SQL' 카테고리의 다른 글

[MS-SQL] 특정 테이블 권한 주기  (0) 2011.08.18
MSSQL저장프로시저 및 시스템 테이블 정보  (0) 2011.08.17
SQL Native Client(SNAC)  (0) 2011.07.26
Sqlite 데이터 MS-sql 이관 방법  (0) 2011.06.21
dts.dll 오류  (0) 2011.06.21

+ Recent posts