본문 바로가기

MSSQL

(43)
MS-SQL Server 인스턴스(Instance) 사용시 원격 접속하기 보통 인스턴스를 만들고 나면 EM이나 기타 프로그램에서 아래와 같이 접속할 것이다. "ServerName\InstanceName" 또는 "ServerIP\InstanceName" 뭐 서버에 별도 인스턴스가 없다면 ServerName으로만으로도 접속이 가능하다. 그러나 이것은 같은 네트웍상에 있을때 가능하다. 서버와 다른 네트웍에 있을경우 아래와 같이 포트번호까지 명시적으로 지정해 줘야만 접속이 가능하다. (MSSQL은 디폴트로 1433번 포트를 사용하므로 아래와 같은 예제가 된다. 별도의 포트를 지정했다면 해당 포트번호를 명시해 주면 된다.) "ServerName\InstanceName,1433" 또는 "ServerIP\InstanceName,1433" 크리에이티브 커먼즈 라이선스 이 저작물은 크리에이티..
[SQL2005] 스키마(Schema) 이해 SQL 서버 2005에서 데이터베이스에 테이블, 뷰, 저장프로시저와 같은 개체를 만들면 스키마(Schema)안에 만들어 집니다. SQL 서버 2000과 달라진 부분이기 때문에 SQL 서버 2000 사용자 분들이 이것에 대해 많이 혼란스러워합니다. 스키마에 대해 살펴보도록 하겠습니다.1. 스키마란 스키마는 데이터베이스 개체에 대한 네임스페이스(Namespace) 입니다. 즉 데이터베이스 개체가 갖는 고유한 이름을 결정지어주게 됩니다. 스키마는 데이터베이스 안에서 고유해야 하기 때문에 데이터베이스의 모든 개체는 다음과 같은 형식의 고유한 이름을 갖게 됩니다. Server.Database.Schema.Object SQL 서버 2000에서는 Server.Database.Owner.Object와 같은 형식으로 이..
데이터 정렬 설정 MSSQL을 설치하다보면 중간단계중에 데이터 정렬 설정을 하는 부분이 나옵니다. 물론 서버, DB단과 테이블을 생성할때 각각의 필드에도 설정할 수 있습니다. SELECT * FROM ::fn_helpcollations(); -- SQL Server에서 사용 가능한 데이터 정렬 목록을 반환 (Description 포함) 정렬 순서(접미사) 설명 _BIN (이진) 이진 정렬, 대/소문자와 악센트를 구분, 가장 빠른 정렬 순서 이 옵션을 선택하지 않으면 SQL Server는 관련된 언어 또는 알파벳에 대해 사전에 정의된 정렬 및 비교 규칙을 따릅니다. 이 옵션을 선택하면 대/소문자 구분, 악센트 구분, 일본어 가나 구분 및 전자/반자 구분 옵션을 사용할 수 없습니다. _BIN2 (이진 코드 포인트) 유니코드 ..
문서화 되지 않은 DBCC 명령어들 ※ 주의 : 아래의 명령어들은 문서화 되지 않은 것들입니다. 문서화 되지 않았다는것은 명령어를 실행하였을 경우 위험할 수 있으며 문제가 발생하더라도 MS에서 공식적으로 지원하지 않습니다. 이 점 유의하시어 사용하시기 바랍니다. 별도로 문서화 되어 있지 않은 DBCC 명령 문에 대해서 정리를 해봤습니다. 유용하게 사용하시기 바랍니다. 1. DBCC ADDEXTENDEDPROC (procname, DLL) 서버가 관리하는 프로시져 목록에 확장 프로시저를 추가함 2. DBCC ADDINSTANCE (object, instance) 성능 모니터에 오브젝트 인스턴스를 추가한다. 3. DBCC BCPTABLOCK(dbid, tabid, seflag) 테이블의 table lock on bulk load 옵션을 설정함..
SSMS에서 특정 사용자의 DB만 보이게 하는 방법 Question 디비를 여러게 사용하고 있는데요 Microsoft SQL Server Management Studio로 접속하면 권한이 없어도 해당 디비명이 다 보입니다. 기존 MSSQL2000에서는 sp_MSdbuseraccess를 변경해서 자기 디비만 보이도록 설정을 했었는데 MSSQL2005에서는 설정하는 방법이 없나요? 다음과 같은 방식으로 SSMS에서 자신의 데이터베이스만 SSMS에 나타나도록 설정할 수 있습니다. -- 테스트용 사용자 데이터베이스 생성 CREATE DATABASE User1DB GO CREATE DATABASE User2DB GO -- 각 데이터베이스에 해당하는 사용자 계정 생성 CREATE LOGIN User1 WITH PASSWORD='AAA', DEFAULT_DATABAS..
EM에서 권한이 있는 DB만 보이도록 셋팅 sp_MSdbuseraccess 는 EM으로 접속할때 각각의 데이터베이스에 접속권한이 있는지 확인하는 프로시저인데 이 프로시저를 약간 수정하여 EM으로 접속했을때의 응답속도도 향상시킬수 있고 더불어 권한이 있는 데이터베이스만 보이도록 셋팅할 수 있다. 다음 프로시저를 복사하여 실행하기만 하면된다. (기존 프로시저와 다른 부분은 빨간색으로 표시했다. 관심있는 분들은 분석해 보시기 바랍니다.) /*******************************************************************************/ /* exec sp_MSdbuseraccess 'perm', 'dbname' -- selecting priv bit from specified database */ /* e..
서버 역할 및 데이터베이스 역할 1. 서버 역할 System Administrators 서버에 대한 모든 작업을 수행할 수 있습니다. Security Administrators 서버의 로그인, 감사등 보안에 관한 권한을 가지고 관리할 수 있습니다. Server Administrators 서버 차원의 구성 옵션을 설정할 수 있습니다. Setup Administrators 확장 저장 프로시저를 관리할 수 있습니다. Linked Server들을 관리하고 복제를 설정할수 있습니다. Process Administratos SQL Server에서 실행 중인 프로세스를 관리할 수 있습니다. Disk Administrators 디스크 파일을 관리할 수 있습니다. 데이터베이스 미러링과 백업 디바이스 추가등을 할 수 있습니다. Database Creat..
연결된 서버 만들기 두 개의 MS SQL 서버가 존재한다고 가정을 하겠습니다. 그리고 서버의 이름은 SVR1과 SVR2라고 가정을 하겠습니다. 이런 상황에서 SVR1의 데이터베이스에 연결이 된 상태에서 SVR2 서버의 데이터베이스 내용을 참고해야 하는 경우가 발생 할 수 있습니다. 실제 업무에서 본다면 회계용 MS SQL 서버에 접속한 상태에서 특별한 목적으로 인사용 MS SQL 서버의 데이터베이스의 내용이 필요한 경우가 발생할 수 있습니다. 얼핏 생각하기에 두 서버가 MS SQL 서버가 설치가 되어 있고 네트워크로 연결이 되어 있으므로 그냥 쿼리문을 수행하면 될거라 생각하지만 그렇지 않습니다. 이 처럼 다른 MS SQL와 연결하여 작업을 해야하는 경우 사용되는 것이 연결된 서버(Linked Server)입니다. 연결된 서..
데이터베이스 사용자 추가 로그인 인증은 사용자가 SQL 서버에 접속하는 과정일 뿐이지 데이터베이스를 사용할 수 있는 것과는 다릅니다. 실제 데이터베이스를 사용하기 위해서는 인증된 로그인 계정이 해당 데이터베이스 사용자로 등록이 되어야 합니다. 우리가 비자를 가지고 미국에 입국 했다고 해서 미국방성 또는 백악관을 마음대로 들어 갈 수 없는것과 같은 이유 입니다. 또다른 허가가 필요한 것입니다. 이번강좌에서는 데이터베이스 사용자 관리에 대해 살펴보도록 하겠습니다. 데이터 베이스에 사용자를 추가하는 방법은 여러가지가 있습니다. 이중에서 다음의 방법을 알아보도록 하겠습니다. o 로그인 계정 등록시 데이터베이스 사용자 계정 추가 o 새로운 데이터베이스 사용자 계정 추가 o T-SQL 문을 이용한 데이터베이스 사용자 계정 추가 1. 데이터..
[삽질방지] T-SQL JOIN 과 ANIS-SQL JOIN의 결과가 다른 이유 MS-SQL 에서는 T-SQL 및 ANSI-SQL을 이용하여 조인문을 사용할수 있다 대부분의 경우에는 각쿼리는 동일하며 올바른 결과를 생성한다 그러나 외부결합을 WHERE 절에서 IS NULL 과 결부시켰을 경우에는 문제가 발행한다 Northwind 의 샘플 데이터베이스에 대한 두 쿼리를 보자! [T-SQL LEFT OUTER JOIN] SELECT c.customerid FROM customers c, orders o WHERE c.customerid *= o.customerid AND o.customerid IS NULL ORDER BY o.customerid 결과 : 91행의 결과 [ANSI-SQL LEFT OUTER JOIN] SELECT c.customerid FROM customers c LE..