mssql 2005 서버 설정부분...펌
1. MS-SQL 2000 사용 팁 [Bottom] [Top]
1.1. 인증 모드 바꾸기 [Bottom] [Top]
MS-SQL 에는 아래와 같이 두 가지 인증 모드가 있으며 하나를 선택하여 사용한다.
- Windows 인증 모드 ( Windows 인증 ) Windows 인증 모드는 사용자가 Windows NT 4.0 또는 Windows 2000 사용자 계정을 사용하여 연결할 수 있게 한다.
- 혼합 모드 ( Windows 인증 및 SQL Server 인증 ) 혼합 모드는 사용자가 Windows 인증 또는 SQL Server 인증을 사용하여 SQL Server 인스턴스에 연결할 수 있게 한다. Windows NT 4.0 또는 Windows 2000 사용자 계정을 사용하여 연결하는 사용자는 Windows 인증 모드 또는 혼합 모드에서 트러스트된 연결을 만들 수 있다.
SQL Server 인증은 이전 버전과의 호환성을 위해 제공된다. 예를 들어, Windows 2000 그룹을 하나 만들어 필요한 모든 사용자를 그 그룹에 추가하면 그 Windows 2000 그룹에 SQL Server 로의 로그인 권한을 허용하여 필요한 데이터베이스를 액세스할 수 있게 해야 한다.
1.1.1. 엔터프라이즈 관리자 사용하기 [Bottom] [Top]
- 서버 그룹을 확장한다.
-
마우스 오른쪽 단추로 서버를 클릭한 다음 등록 정보를 클릭한다.
-
보안 탭의 인증에서 인증 모드를 선택한다.
-
혼합 모드 인증 - SQL Server 및 Windows 선택
-
Windows 인증 - Windows 만 선택
-
-
감사 수준에서 SQL Server 오류 로그에 기록하는 MS-SQL Server 에 대한 사용자 액세스 수준을 선택한다.
-
없음 - 감사를 수행하지 않는다.
-
성공 - 성공한 로그인 시도만 감사
-
실패 - 실패한 로그인 시도만 감사
-
모두 - 성공 및 실패한 로그인 시도가 모두 감사
-
1.2. MS-SQL 서버 설치없이 SQL 서버 연결하기 [Bottom] [Top]
MS-SQL 서버가 설치되어 있다면 클라이언트 네트워크 유틸리티 로 서버의 별칭을 지정하면 손쉽게 다른 SQL 서버로 연결할 수 있다. 하지만 SQL 서버가 설치되어 있지 않을 경우 다른 SQL 서버로 어떻게 연결해야 할까?
MDAC 만 설치되어 있다면 클라이언트 네트워크 유틸리티 를 바로 실행할 수 있다. 즉, MDAC 에 기본적으로 포함되어 있기 때문이다.
- 실행시키는 방법
-
[ 시작 ] -> [ 실행 ] -> cliconfg.exe 입력 후 확인
-
1.3. MDAC 에 대한 팁 [Bottom] [Top]
MDAC 에 대하여 검색 중 http://sqler.pe.kr 에서 MDAC 에 대한 정보를 얻게 되었다.
- SQL 서버와 연결될 시스템의 MDAC 버젼이 일치해야 한다. 버젼 충돌 문제 발생할 수 있다.
- SQL 서버 SP3a 는 MDAC 2.71a 버젼이 설치된다는데 버젼 확인이 필요하다.
-
MDAC 버젼 확인 방법은 C:/WINNT/INF/mdac.inf 에서 확인할 수 있다. (윈도우즈 시스템 디렉토리가 C:/WINNT 일 경우)
-
MDAC 문제로 Time-out 이 발생하거나 특정 PC 에서 연결할 수 없을때 해결하는 방법은 http://sqler.pe.kr/web_board/view_list.asp?id=57614&read=291&pagec=3&found=is&part=myboard1&ser=yes 를 참고한다.
2. MS SQL 2005 사용 팁 [Bottom] [Top]
2.1. 외부 연결 설정 [Bottom] [Top]
2.1.1. SQL Server 노출 영역 구성 [Bottom] [Top]
2.1.2. SQL Server 구성 관리자 [Bottom] [Top]
2.1.3. 서버 속성 [Bottom] [Top]
2.1.4. 방화벽 설정 [Bottom] [Top]
%ProgramFiles%\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe
2.2. 암호화된 저장 프로시저 복호화 [Bottom] [Top]
원문링크: http://education.sqlfarms.com/education/ShowPost.aspx?PostID=784
Decrypt SQL Server 2K5 (2005) stored procedures, functions, triggers, and views
다운로드: SQL/Decrypt_SQL_2005_Objects.zip
HEADS UP: In order to run this script you must log in to the server in DAC mode: To do so, type ADMIN:<SQLInstanceName> as your server name and use the "sa" or any other server admin user with the appropriate password.
CAUTION! DAC (dedicated admin access) will kick out all other server users.
The attached script accepts an object (schema name + object name) that were created using the WITH ENCRYPTION option and returns the decrypted script that creates the object. This script is useful to decrypt stored procedures, views, functions, and triggers that were created WITH ENCRYPTION.
The algorithm used below is the following:
-
Check that the object exists and that it is encrypted.
-
In order to decrypt the object, the script ALTER (!!!) it and later restores the object to its original one. This is required as part of the decryption process: The object is altered to contain dummy text (the ALTER uses WITH ENCRYPTION) and then compared to the CREATE statement of the same dummy content.
Note: The object is altered in a transaction, which is rolled back immediately after the object is changed to restore all previous settings. -
A XOR operation between the original binary stream of the enrypted proc with the binary representation of the dummy proc and the binary version of the proc in clear-text is used to decrypt the original object.
2.3. SQL Server 버전 정보 확인 [Bottom] [Top]
- 시스템 저장 프로시저를 이용한 버전 확인 방법
EXEC master..xp_msver
- SQL Server 2000 이상에서 확인 방법
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')
- SQL Server 7.0 이하에서 확인 방법
SELECT @@VERSION
참고> SQL Server 버전과 에디션을 확인하는 방법 http://support.microsoft.com/kb/321185/ko
3. SQL 쿼리문 팁 [Bottom] [Top]
3.1. 임시 테이블 [Bottom] [Top]
SQL Server 는 임시 테이블을 지원한다. 임시 테이블의 테이블 이름은 숫자 기호(#)로 시작한다. 사용자가 연결이 끊겼을 때 임시 테이블이 삭제되지 않는 경우 SQL Server는 자동으로 임시 테이블을 삭제한다. 임시 테이블은 현재 데이터베이스에 저장되지 않고 시스템 데이터베이스 tempdb에 저장된다.
다음과 같은 두 가지 유형의 임시 테이블이 있다.
- 로컬 임시 테이블
-
이 테이블의 이름은 하나의 숫자 기호(#)로 시작한다. 이 테이블은 테이블을 만든 연결에서만 볼 수 있다.
-
- 전역 임시 테이블
-
이 테이블의 이름은 두 개의 숫자 기호(##)로 시작한다. 이 테이블은 모든 연결에서 볼 수 있다. 테이블을 만든 연결이 끊어지기 전에 이 테이블이 명시적으로 삭제되지 않으면, 다른 모든 작업이 이 테이블에 대한 참조를 중지할 때 바로 삭제된다. 전역 임시 테이블을 만든 연결이 끊어진 다음에는 새 작업에서 이 테이블에 참조할 수 없다. 작업과 테이블 간 연결은 항상 현재 명령문에서 실행을 완료할 때 삭제되기 때문에, 대개 전역 임시 테이블은 이 테이블을 만든 연결이 끊어진 다음에 바로 삭제된다.
-
일반적으로 사용되던 많은 임시 테이블을 이제 table 데이터 형식을 가진 변수로 바꿀 수 있다.
3.2. DB 내의 사용자 정의 테이블 목록 보기 [Bottom] [Top]
-
Toggle line numbers
SELECT name FROM sysobjects WHERE (xtype = 'U') AND (status >= 1610612736) ORDER BY name
3.3. 사용자와 역활 목록 보기 [Bottom] [Top]
-
Toggle line numbers
-- 사용자 목록 보기 -- SELECT * FROM sysusers WHERE (gid <> 0) AND (issqluser = 1) -- 역활 목록 보기 -- SELECT * FROM sysusers WHERE (gid <> 0) AND (issqluser = 0)
3.4. 두 테이블의 교집합, 차집합 구하기 [Bottom] [Top]
- 교집합 구하기
Toggle line numbers
-- 교집합 예1 (SELECT ... EXISTS 문) -- SELECT * FROM stores WHERE EXISTS (SELECT * FROM sales WHERE (stores.stor_id = sales.stor_id) AND (stor_id < 7500)) -- 교집합 예2 (SELECT ... IN 문) -- SELECT * FROM stores WHERE (stor_id IN (SELECT stor_id FROM sales WHERE (stor_id < 7500)))
- 차집합 구하기
Toggle line numbers
-- 차집합 예1 (SELECT ... NOT EXISTS 문) -- SELECT * FROM stores WHERE NOT EXISTS (SELECT * FROM sales WHERE (stores.stor_id = sales.stor_id) AND (stor_id < 7500)) -- 차집합 예2 (SELECT ... NOT IN 문) -- SELECT * FROM stores WHERE (stor_id NOT IN (SELECT stor_id FROM sales WHERE (stor_id < 7500)))
3.5. Cursor 사용하기 [Bottom] [Top]
-
Toggle line numbers
DECLARE @variable1 DataType DECLARE @variable2 DataType ------------------------------------------------------------ DECLARE Cursor_Name CURSOR FOR SELECT Column1, Column2 FROM Table_Name ------------------------------------------------------------ OPEN Cursor_Name FETCH NEXT FROM Cursor_Name INTO @variable1, @variable2 WHILE @@FETCH_STATUS = 0 BEGIN ... SELECT @variable1, @variable2 ... FETCH NEXT FROM Cursor_Name INTO @variable1, @variable2 END ------------------------------------------------------------ CLOSE Cursor_Name DEALLOCATE Cursor_Name
4. 용어 정리 [Bottom] [Top]
4.1. SQL Native Client [Bottom] [Top]
SQL Native Client (SNAC) 은 SQL Server 2005 에 새롭게 추가된 Data Access Libary 로 이해하면 된다.
간단히 말하면, SNAC 은 OLE DB 와 ODBC 모두를 지원하는데 사용하는 Stand-alone Data Access API 이다. Microsoft Data Access Components (MDAC) 이 지원하는 기능에 더하여 새로운 기능을 지원하며, SQL OLE DB Provider 와 SQL ODBC Driver 를 하나의 Native Dynamic Link Library (DLL) 로 결합시켰다.
SNAC 은 응용 프로그램에서 SQL Server 2005 의 새로운 기능 (MARS: Multiple Active Result Sets, UDT:User-Defined Types, XML Data Type) 등을 활용하는데 필요하다.
OLE DB Provider 와 SQL ODBC Driver 를 하나의 라이브러리로 결합한 SNAC 을 새로이 공급하는 이유는 MDAC 의 제한이나 문제점을 해결하기 위한 것이다. 현재 MDAC 은 윈도우 운영체제의 컴포넌트로 제공된다. 따라서 MDAC 기반의 응용프로그램을 개발하고 유지보수하는데 운영체제 유지보수 체계와의 문제로 인하여, 설치, 배포, 업그레이드 등과 관련된 이슈와 문제점이 많다. SNAC 이 제공은 이러한 이슈들을 MDAC 과 분리하기 위한 것으로 이해할 수 있다.
SNAC 은 SQL Server 를 위한 ODBC 와 OLE DB API 만을 지원하고 SQL Server 릴리스와 서비스 팩에서만 업그레이드 된다. MDAC 은 계속해서 SNAC 을 포함하는 모든 드라이버/프로바이더릉 위한 핵심적인 Data Access Service 를 지원하지만 윈도우 릴리스와 서비스 팩에서만 업그레이드 된다.
그렇다고 무조건 SNAC 을 쓰라는 것은 아니다. 이미 구축되어 있는 응용 프로그램을 SQL 2005 의 새로운 특징들을 활용할 수 있도록 업그레이드하거나 새로문 COM-기반 또는 Native 응용 프로그램을 개발할 때 사용하기를 권고하고 있다. SQL 2005 의 새로운 특징들을 사용할 필요가 없다면, 기존의 OLE DB 나 ODBC 코드로 충분하다. 물론, 데이터 접근에 있어 관리되는 코드 기반으로 가고자 한다면, .Net Framework의 ADO.NET Data Access 클래스가 필요하다.
참고> SQL Native Client Programming http://msdn2.microsoft.com/ko-kr/library/ms130892.aspx