달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2010. 7. 29. 14:47

MSSQL Dummy 데이터 만들기 Work/SQL Server2010. 7. 29. 14:47

-- 90 일 날짜 만들기
WITH Dumy 
AS

 SELECT GETDATE() DT  
 UNION ALL
 SELECT DT + 1 FROM Dumy 
 WHERE DT + 1 < DATEADD(day, 90, GETDATE())

SELECT CONVERT(varchar(10), DT, 121) DT
FROM Dumy 
OPTION (MAXRECURSION 0);

-- 10까지 숫자 만들기
WITH Dumy 
AS

 SELECT 0 Seq 
 UNION ALL
 SELECT Seq + 1 FROM Dumy 
 WHERE Seq + 1 <= 10 

SELECT Seq FROM Dumy 
OPTION (MAXRECURSION 0);
:
Posted by Elick
굉장히 간단한 방법으로 시스템 데이터베이스를 이동할 수 있다.
물론 서비스 중에는 안된다.

원본 : http://www.sp-configure.com/how-to-change-path-of-system-databases-on-sql-2005/

Master

  1. Open SQL Server Configuration Manager.
  2. Right Click on SQL Server Service and select properties.
  3. On SQL Server Proterties window select Advanced tab.
  4. Select Startup Parameters
  5. Edit the startup parameters to reflect the new path for –d and -l parameters.
  6. Stop SQL Service.
  7. Move the database files to their new locations.
  8. Start SQL Service.

Model

  1. Run the following query:
    USE master;
    GO
    alter database model MODIFY FILE (NAME = modeldev,FILENAME=’NEW PATH’);
    go
    alter database model MODIFY FILE (NAME = modellog,FILENAME=’NEW PATH’);
    go
  2. Stop SQL Service.
  3. Move the database files to their new locations.
  4. Start SQL Service.

Msdb

  1. Run the following query:
    USE master;
    GO
    alter database msdb MODIFY FILE (NAME = MSDBData,FILENAME=’NEW PATH’);
    go
    alter database msdb MODIFY FILE (NAME = MSDBLog,FILENAME=’NEW PATH’);
    go
  2. Stop SQL Service.
  3. Move the database files to their new locations.
  4. Start SQL Service.

Tempdb

  1. Run the following query:
    USE master;
    GO
    alter database tempdb MODIFY FILE (NAME = tempdev,FILENAME=’NEW PATH’);
    GO
    alter database tempdb MODIFY FILE (NAME = templog,FILENAME=’NEW PATH’);
    GO
  2. Stop SQL Service.
  3. Delete the database files as they will be recreated on new locations.
  4. Start SQL Service.

mssqlsystemresource

  1. Stop SQL Service.
  2. Start the services using NET START MSSQLSERVER /f /T3608 (*MSSQLSERVER is for default instance, if you have installed named instance then you need to use NET START MSSQL$Instancename /f /T3608)
  3. Run the following query from sqlcmd
    USE master;
    GO
    alter database mssqlsystemresource MODIFY FILE (NAME = data,FILENAME=’NEW PATH\mssqlsystemresource.mdf’);
    go
    alter database mssqlsystemresource MODIFY FILE (NAME = log,FILENAME=’NEW PATH\mssqlsystemresource.ldf’);
    go
    alter database mssqlsystemresource set READ_ONLY;
    go
  4. Stop SQL Service.
  5. Move the database files to their new locations.
  6. Start SQL Service.
:
Posted by Elick
2009. 11. 27. 10:53

MSSQL 라이센스 Work/SQL Server2009. 11. 27. 10:53

예상은 했었지만... MSSQL을 구매하려면... 돈이 많이든다는 걸 알았습니다.

SQL Server
             SQL Server 2000 :  http://www.microsoft.com/korea/sqlserver/2005/howtobuy/pricing/default.mspx
             SQL Server 2005 : http://www.microsoft.com/korea/sqlserver/2005/howtobuy/default.mspx

             SQL 서버는 현재 두 가지 라이선스 모델을 통해 사용할 수 있습니다.

             프로세서 라이선스 (PL) : SQL 서버를 실행하는 컴퓨터 내의 각 CPU에 대해 라이선스가 하나씩 있어야 합니다.
                           이 라이선스는 클라이언트 장치를 무제한으로 액세스할 수 있습니다.

      서버/사용자 단위 클라이언트 액세스 라이선스(CAL) :
                           Microsoft 서버 제품을 실행하는 컴퓨터에 대한 라이선스가 필요하며, 각 클라이언트 장치에 대한 클라이언트 액세스 라이선스(CAL)도 필요합니다.
                           CAL의 설정 횟수는 서버 라이선스와 서버 소프트웨어에 포함되어 있습니다.

             ** 듀얼코어든 쿼드코어든 옥토퍼스든 물리적인 씨퓨에 따라서 각 1개씩 사야한다.
             현재 600만원이 넘는다. (2008-06-26)
             Standard Edition : $5,999 (2008년 3월 26일)

전화로 확인된 사실 (2009-05-25 )
CPU 4개, 메모리 4G 넘어가면 Enterprise Edition을 구입해야 한다고 한다.
Standard Edtion의 경우 CPU 당 600만원 정도라고 한다.

:
Posted by Elick
2009. 10. 9. 17:00

[관리]/[SQL Server 로그] 설정 Work/SQL Server2009. 10. 9. 17:00


MSSQL 로그를 보다 보면 6개의 파일이 돌아가면서 재사용된다는 것을 알 수 있다.
MSSQL이 재시작 되는 순간 새로운 파일에 로그를 기록한다.
재사용되는 파일 수를 아래의 구문으로 수정할 수 있다. 파일 수는 6에서 99까지 가능하다.
예는 12개로 수정하는 것이다.

USE [master]
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'NumErrorLogs', REG_DWORD, 12
GO


그리고 필요에 따라 재시작을 하지 않아도 로그 파일을 순환하고 싶은 순간이 있다.
그 때.. sp_cycle_errorlog 를 실행하면 재시작 하지 않고 로그를 순환할 수 있다.
그냥 아래처럼 실행하면 순환된다.
EXEC sp_cycle_errorlog;
GO
:
Posted by Elick
2009. 10. 6. 16:34

SQL Server Single User Mode Work/SQL Server2009. 10. 6. 16:34


tempdb 위치를 이동하려던 중 실수로 mdf/ldf 의 파일이름을 모두 동일하게 작성해서 실행했었던 때가 있다.
tempdb의 위치 이동을 하면 mssql을 재시작 해야 작업했던 위치로 tempdb가 이동되지만, mdf/ldf 의 파일이름이 같으므로 mssql은 재시작하다 오류 메시지를 띄우면서 재시작이 안된다.

참고로, 이벤트 로그에는 "SQL Server (MSSQLSERVER) 서비스가 서비스 특정 오류 1814 (0x716) 때문에 종료되었습니다." 라고 기록된다.

이 때 Single User Mode로 MSSQL을 실행하고 잘못된 설정을 바로 잡고, 다시 mssql을 실행하면 된다.


작업 순서는 아래와 같다.

1. MSSQL Server 와 상관있는 모든 서비스를 중지한다. (SSIS, SSRS, SSFTS)
  SSIS : SQL Server Integration Service
  SSRS : SQL Server Reporting Service
  SSFTS : SQL Server Full Text Search

2. cmd 에서 sqlservr -c -f -T3608 -T4022 를 실행한다. 경로는 대부분 아래와 같다.
  C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\

3. 2.에서 실행한 cmd는 내버려 두고, SSMS(SQL Server Management Studio) 혹은 QA(Query Analyser)로 접속을 시도한다.

4. 잘못된 설정을 바로 잡는다.

5. SSMS 혹은 QA를 종료하고, 2.의 cmd 도 종료한다.

6. SQL Server 를 시작한다.

p.s.
위의 상황이 발생했지만, http://dbrang.tistory.com/220 에 나온 그대로 해보고 재시작 되서 정말 다행이었다. --;;
:
Posted by Elick
2009. 9. 4. 10:09

MSSQL system stored procedure... Work/SQL Server2009. 9. 4. 10:09

관리자 혹은 개발자가 필요에 의해서 system stored procedure 라는 것을 만들 때가 있다. 생성은 master에 해두고 현재 사용 DB에서 호출하면 현재 사용 DB의 정보로 결과를 내보내 주는 신기한 기능을 한다. 대부분 Microsoft 에서 설치시에 제공된 형태로 사용하는데, 자신의 목적에 맞게 수정된 stored procedure를 system stored procedure 로 등록하고 싶은 경우가 흔치 않게 발생하기 마련이다. system stored procedure 로 등록되는 조건은 찾아보면 2가지 이다.

1. master에 생성할 것.
2. system stored procedure 이름을 앞에 'sp_' 로 시작해서 만들 것.

테스트 해본 결과 어떤 Server에서는 system stored procedure 로 등록되고, 어떤 Server에서는 user stored procedure 로 등록된다. 둘다 MSSQL 2005 sp3 반영된 Server이고, OS도 Windows 2003 R2.  어디에서 이런 차이가 발생하는지 좀 더 찾아보아야 겠다.
위의 2가지 조건을 만족했음에도 system stored procedure 로 등록이 안되었을 경우 system stored procedure로 등록하는 방법은 아래와 같다.

(www.sqlleader.com 펌)
----------------------------------------------------------------------------------------------------------------
사용자가 만든 시스템 프로시저는 엔터프라이즈 관리자에서 시스템 오브젝트가 아닌 사용자 오브젝트로 표시됩니다. 이는 디폴트로 sysobjects에 있는 프로시저의 status 컬럼의 시스템 비트(0xC0000000)가 설정되지 않기 때문이며, sp_MS_marksystemobject를 호출하면 이 비트를 설정할 수 있습니다.
sp_MS_marksystemobject 구문은 다음과 같으며, 매개 변수로서 시스템 비트를 설정하고자 하는 오브젝트의 이름을 기술해 주면 됩니다.

sp_MS_marksystemobject @objname

이 저장 프로시저는 문서화되지 않은 (Undocumented) 프로시저이며, 매개 변수로 지정한 오브젝트의 시스템 비트(0xC0000000)를 설정해 주는 역할을 합니다. 이 저장 프로시저를 사용하여 오브젝트의 시스템 비트를 설정한 다음에 IsMSShipped 오브젝트 속성을 확인하면 결과가 1이 반환됩니다. 즉, OBJECTPROPERTY()의 IsMSShipped 속성을 점검하면, 해당 오브젝트의 시스템 비트가 설정되어 있는지 확인할 수 있습니다.

모든 경우에 저장 프로시저를 반드시 시스템 오브젝트로 설정해야 하는 것은 아닙니다만, 일부 문서화되지 않은 함수나 DBCC 명령어의 경우에는 시스템 오브젝트에서 호출하지 않으면 제대로 동작하지 않는 경우가 있습니다. 즉, 시스템 프로시저가 아니면 제대로 동작하지 않는 기능들이 있기 때문에, 그런 기능들이 필요한 경우에는 시스템 오브젝트로 설정하는 것이 필요합니다.

참고로, SQL Server 2000 교재를 보면, 예를 들어 시스템 비트가 설정되지 않은 저장 프로시저는 DBCC CALLFULLTEXT()를 통하여 full text를 처리할 수 없다고 설명되어 있습니다.
----------------------------------------------------------------------------------------------------------------

:
Posted by Elick
2009. 6. 30. 14:33

MSSQL Install 과정 Work/SQL Server2009. 6. 30. 14:33


MSSQL 2000 (Development Edition) 설치
 1. autorun.exe 실행
 2. [MSSQL 2000 구성 요소] 클릭
 3. [데이터베이스 서버 설치] 클릭
 4. Microsoft SQL Server 설치 마법사 : [다음] 클릭
 5. 컴퓨터 이름 선택 후 [다음] 클릭 (로컬 컴퓨터)
 6. 설치 선택 에서 옷변 선택 후 [다음] 클릭 (새 SQL Server 인스턴스를 만들거나 클라이언트 도구 설치)
 7. 사용자 정보 입력 후 [다음] 클릭
 8. 소프트웨어 사용권 계약 [예] 클릭
 9. 설치 정의 유형 중 선택 후 [다음] 클릭 (서버와 클라이언트 도구)
 10. 인스턴스 이름 선택 후 [다음] 클릭
 11. 설치 유형 선택 후 [다음] 클릭 (표준)
 12. 서비스 계정 에서 선택 후 [다음] 클릭 (각 서비스에 대해 동일한 계정 사용. SQL Server 서비스 자동 시작, 로컬 시스템 계정)
 13. 인증 모두 선택 후 [다음] 클릭 (혼합 모드(Windows 인증과 SQL Server 인증)
 14. 파일 복사 시작 [다음] 클릭
 15. 설치 시작~
 16. 설치 완료 [완료] 클릭

MSSQL 2005 (Development Edition) 설치
 1. setup.exe 실행
 2. 최종 사용자 사용권 계약 [동의함] 선택 [다음] 클릭
 3. 필수 구성 요소를 설치하는 중 [설치] 클릭  [다음] 클릭
 4. Microsoft SQL Server 설치 마법사 시작  [다음] 클릭
 5. 시스템 구성 검사  [다음] 클릭
 6. 등록정보  [다음] 클릭
 7. 설치할 구성 요소 모두 선택 후 [다음] 클릭
 8. 인스턴스 이름 선택 후  [다음] 클릭
 9. 서비스 계정 (기본 제공 시스템 계정 [로컬 시스템] 선택) 적당히 선택 후  [다음] 클릭
 10. 인증 모드 (혼함 모드 (Windows 인증 및 SQL Server 인증)  [다음] 클릭
 11. 데이터 정렬 설정 (Default) [다음] 클릭
 12. 오류 및 사용 보고서 설정 (Default) [다음] 클릭
 13. 설치 준비 완료 [설치] 클릭
 14. 설치 진행률  모두 설치 된 후 [다음] 클릭
 15. Microsoft SQL Server 2005 설치 완료 [마침] 클릭

MSSQL 2008 (Development Edition) 설치
 1. setup.exe 실행
 2. SQL Server 설치 센터 [설치] 클릭
 3. [새 SQL Server 독립 실행형 설치 또는 기존 설치에 기능 추가] 클릭
 4. 설치 지원 규칙 [확인] 클릭
 5. 제품키 입력 후 [다음] 클릭
 6. 사용 조건 (동의함) [다음] 클릭
 7. 설치 지원 파일 (.NET framwork 나 기타 필요한 설치 지원 파일을 설치하라고 함) [설치] 클릭
 8. 아래의 Error 발생
  TITLE: Microsoft SQL Server 2008 설치
  ------------------------------
  다음 오류가 발생했습니다.
  Windows Installer 파일 'E:\ko_sql_server_2008_developer_x86_x64_ia64_dvd_x14-88859\x86\setup\sql_engine_core_inst_msi\sql_engine_core_inst.msi'을(를) 열 수 없습니다.
  Windows Installer 오류 메시지: 시스템이 지정된 장치나 파일을 열 수 없습니다.
  .
  실패한 동작을 다시 시도하려면 '다시 시도'를 클릭하고 이 동작을 취소하고 설치를 계속하려면 '취소'를 클릭하십시오.
  For help, click: http://go.microsoft.com/fwlink?LinkID=20476&ProdName=Microsoft+SQL+Server&EvtSrc=setup.rll&EvtID=50000&ProdVer=10.0.1600.22&EvtType=0x5D9A8C61
  ------------------------------
  BUTTONS:
  &Retry
  Cancel
  ------------------------------
 9. 위의 url 의 내용
  Explanation
  An attempt was made to install (or update) SQL Server Native Client on a computer where SQL Server Native Client is already installed, and where the existing installation was from an MSI file that was not named sqlncli.msi.
  User Action
  To resolve this error, uninstall the existing version of SQL Server Native Client. To prevent this error, do not install SQL Server Native Client from an MSI file that is not named sqlncli.msi.
 10. Uninstall the existing version of SQL Server Native Client.
 11. 다시 설치 실패
 12. 설치파일을 Demon으로 CD롬으로 인식하게 한뒤 실행 (에러 발생단계 넘어감)
 13. 설치 지원 규칙 [다음] 클릭
 14. 기능 선택 (모두 선택) [다음] 클릭
 15. 인스턴스 구성 (인스턴스 이름 결정) [다음] 클릭
 16. 디스크 공간 요구 사항 [다음] 클릭
 17. 서버 구성 (서비스 계정 결정) [다음] 클릭
 18. 데이터베이스 엔진 구성 (인증 계정 결정) [다음] 클릭
 19. Analysis Services 구성 (인증 계정 결정) [다음] 클릭
 20. Reporting Service 구성 (기본 모드 구성)  [다음] 클릭
 21. 오류 및 사용 보고 (모두 선택하지 않음)  [다음] 클릭
 22. 설치 규칙 [다음] 클릭
 23. 설치 준비 [다음] 클릭
 24. 설치 진행률 [다음] 클릭
 25. 완료 [닫기] 클릭


위의 방식으로 개인 PC (Windows XP Professional Edition)에 2000, 2005, 2008 각각 3개, 모두 9개의 Instanace를 설치했고, 문제없이 작동함.

Service pack update 시 2000 의 경우는 각각 3번에 걸쳐서 update를 해야 했으나 2005 부터는 update를 한번 할 때 동시 적용이 가능.
위에서 SQL Server Native Client를 제거한것 때문에 2005의 경우 인증에서 넘어가지 못했으나, SQL Server Native Client를 설치 후 문제 없이 update를 진행할 수 있었음.
SQL Server Native Client를 따로 설치하는 방법을 몰라서 MSSQL 2005 4번째 Instance를 설치했음. Instance 설치 시 SQL Server Native Client가 함께 설치되는 것 확인 했음.

:
Posted by Elick
2009. 6. 30. 14:32

MSSQL Instance 정보 Work/SQL Server2009. 6. 30. 14:32

SERVERPROPERTY라는 함수... 쓸만했다.
MSSQL 여러 대를 관리할 때, OPENQUERY 와 EXEC 을 함께 사용해서 정보 취합을 하는 것이 편했던 기억이 난다.

SELECT
 SERVERPROPERTY('ProductVersion') ProductVersion
 , SERVERPROPERTY('ProductLevel') ProductLevel
 , SERVERPROPERTY('Edition') Edition



MSSQL2005 이상인 경우는 아래 쿼리도 유용할듯...

SELECT
 SERVERPROPERTY('ProductVersion') ProductVersion
 , SERVERPROPERTY('ProductLevel') ProductLevel
 , SERVERPROPERTY('Edition') Edition
 , cpu_count/hyperthread_ratio CpuCount
 , cpu_count CoreCount
 , (physical_memory_in_bytes/1024/1024) PhysicalMemoryMB
FROM master.sys.dm_os_sys_info
:
Posted by Elick