보관물

Archive for the ‘DBMS’ Category

SQL Server 에서 정수형을 문자형으로 변환하는 3가지 방법

DECLARE @num int
SET @num = 12345

— 방법1: CAST 함수 사용
SELECT CAST(@num as VARCHAR(10))

— 방법2: CONVERT 함수 사용
SELECT CONVERT(VARCHAR(10), @num)

— 방법3: STR 함수 사용
SELECT LTRIM(STR(@num, 10))

모든 결과는 동일합니다

카테고리:SQL SERVER

The SQL Server 2005 Express Tools are installed. To continue, remove the SQL Server 2005 Express Tools.

기존 SQL Server 2005 Express 를 제거하고 SQL Server 2008 Express 할 때 설치 과정의 설치 규칙을 확인하는 부분에서 다음과 같은 에러 메시지가 발생하는 경우가 있습니다.

SQL Server 2005 Express Tools가 설치되어 있습니다. 계속하려면 SQL Server 2005 Express Tools를 제거하십시오.

The SQL Server 2005 Express Tools are installed. To continue, remove the SQL Server 2005 Express Tools.

해결방법

다음의 레지스트리 키를 제거하면 계속 진행됩니다 (Remove the following registry Key)

HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\90

카테고리:SQL SERVER

SQLPlus를 사용하여 오라클 전체 Schema 추출

set pagesize 0
set long 90000
set termout off
set feedback off
set echo off

— schema.sql 파일로 DUMP
spool schema.sql

— 임시 테이블 (BIN$…) 과 “PACKAGE BODY”를 제외한 전체 객체 가져오기
SELECT
  dbms_metadata.GET_DDL(u.object_type,u.object_name)
FROM
  user_objects u
WHERE
      object_id IS NOT NULL
  AND object_type != ‘PACKAGE BODY’
  AND object_name NOT LIKE ‘BIN$%==$0′
ORDER BY
  object_type ASC;

— “PACKAGE BODY’ 객체 가져오기
SELECT
  dbms_metadata.GET_DDL(‘PACKAGE’,u.object_name)
FROM
  user_objects u
WHERE
      object_id IS NOT NULL
  AND object_type = ‘PACKAGE BODY’;

spool off

카테고리:Oracle, XE 태그:,

[SP] 기존 정보가 있으면 UPDATE, 없으면 INSERT

CREATE PROCEDURE [dbo].[sp_InfoUpdate]
(
  @FIELD_1   varchar(10),
  @FIELD_2   varchar(10),
  @FIELD_3   varchar(10)
)
AS
BEGIN
 SET NOCOUNT ON
  SET XACT_ABORT ON

  DECLARE @error int, @rowcount int

  BEGIN TRAN
    — 전달된 인자로 UPDATE 를 시도한다
    UPDATE [dbo].[tbl_TABLENAME]
       SET FIELD_2 = @FIELD_2,
           FIELD_3 = @FIELD_3
     WHERE FIELD_1 = @FIELD_1

    SELECT @error=@@ERROR, @rowcount=@@ROWCOUNT

    — 기존에 있는 정보가 UPDATE 되면, 종료
    IF @error <> 0 GOTO Done
    — UPDATE 된 내용이 없으면, 신규 등록
    IF @rowcount = 0
    BEGIN
      INSERT INTO [dbo].[tbl_TABLENAME] (FIELD_1, FIELD_2, FIELD_3)
      VALUES (@FIELD_1, @FIELD_2, @FIELD_3)

      SELECT @error = @@ERROR
      IF @error <> 0 GOTO Done
    END

    COMMIT

  Done:

    IF @error <> 0 ROLLBACK

  RETURN @error
END

카테고리:SQL SERVER

ORA-12516: TNS:리스너가 프로토콜 스택과 일치하는 처리기를 찾을 수 없습니다

Korean: ORA-12516: TNS:리스너가 프로토콜 스택과 일치하는 처리기를 찾을 수 없습니다
English: ORA-12516, TNS:listener could not find available handler with matching protocol stack

다음 파일에서 굵게 표시된 부분으로 수정합니다
c:\oraclexe\app\oracle\product\10.2.0\server\config\scripts

##############################################################################
# Copyright (c) 1991, 2005, Oracle. All rights reserved.
##############################################################################

###########################################
# Cursors and Library Cache
###########################################
open_cursors=300

###########################################
# Database Identification
###########################################
db_name=XE

###########################################
# Diagnostics and Statistics
###########################################
background_dump_dest=c:\oraclexe\app\oracle\admin\XE\bdump
core_dump_dest=c:\oraclexe\app\oracle\admin\XE\cdump
user_dump_dest=c:\oraclexe\app\oracle\admin\XE\udump

###########################################
# File Configuration
###########################################
control_files=(“c:\oraclexe\oradata\XE\control.dbf”)

###########################################
# Job Queues
###########################################
# job_queue_processes=4
job_queue_processes=10

###########################################
# Miscellaneous
###########################################
compatible=10.2.0.1.0

###########################################
# Processes and Sessions
###########################################
sessions=20

###########################################
# SGA Memory
###########################################
sga_target=768M

###########################################
# Security and Auditing
###########################################
audit_file_dest=c:\oraclexe\app\oracle\admin\XE\adump
remote_login_passwordfile=EXCLUSIVE

###########################################
# Shared Server
###########################################
dispatchers=”(PROTOCOL=TCP) (SERVICE=XEXDB)”
shared_servers=4

###########################################
# Sort, Hash Joins, Bitmap Indexes
###########################################
pga_aggregate_target=256M

###########################################
# System Managed Undo and Rollback Segments
###########################################
undo_management=AUTO
undo_tablespace=UNDO

###########################################
# Backup and Recovery
###########################################
DB_RECOVERY_FILE_DEST_SIZE = 10G
DB_RECOVERY_FILE_DEST = c:\oraclexe\app\oracle\flash_recovery_area

os_authent_prefix=””

카테고리:XE

SQL Server – 중복되는 레코드 삭제

다음 코드는 중복되는 레코드를 삭제할 때 유용하다. 반드시 테이블은 identity 컬럼을 가져야 하며 중복되는 레코드를 판단하는 기준이된다. 이 예제에서 IDX는 identity 컬림이며, 중복을 확인할 필드명은 dup_col1, dup_col2, dup_col3 이다.


DELETE FROM MyTABLE
WHERE IDX NOT IN
(
SELECT MAX(IDX)
FROM MyTABLE
GROUP BY dup_col1, dup_col2, dup_col3
)

카테고리:SQL SERVER

Failed to generate a user instance of SQL Server due to a failure in starting the process for the user instance. The connection will be closed.

Visual Studio 2008과 Visual Studio 2008 Express Edition을 사용하고, ASP.NET의 App_Data 에 MDF 파일을 사용하려고 할때 다음과 같은 에러 메시지가 발생하는 경우가 있습니다

“사용자 인스턴스의 프로세스를 시작하지 못했기 때문에 SQL Server의 사용자 인스턴스를 생성하지 못했습니다. 연결이 닫힙니다.”

“Failed to generate a user instance of SQL Server due to a failure in starting the process for the user instance. The connection will be closed.”

web.config 내용

<add name=”ConnectionString” connectionString=”Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\MyDB.mdf;Integrated Security=True;User Instance=True” providerName=”System.Data.SqlClient”/>
 

해결방법
다음 폴더를 삭제합니다. 삭제 후 재시도 하면 폴더가 재생성되고 MDF 파일 및 로그등이 생성됩니다

C:\Documents and Settings\Administrator\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS

카테고리:SQL SERVER 태그:,

Previous releases of Microsoft Visual Studio 2008

Microsoft SQL 2008을 설치할 때 다음과 같이 Visual Studio 2008 SP1 을 요구하는 메시지가 표시됩니다.

규칙 “Microsoft Visual Studio 2008의 이전 릴리스 확인”
이 컴퓨터에 Microsoft Visual Studio 2008의 이전 릴리스가 설치되어 있습니다. SQL Server 2008을 설치하기 전에 Microsoft Visual Studio 2008을 SP1으로 업그레이드하십시오.

Rule “Previous releases of Microsoft Visual Studio 2008″ failed.
A previous release of Microsoft Visual Studio 2008 is installed on this computer. Upgrade Microsoft Visual Studio 2008 to the SP1 before installing SQL Server 2008.

Visual Studio 2008 SP1 이 설치되어 있어야 하나, 다음과 같은 방법으로 설치가 가능합니다.

Setup /ACTION=install /SkipRules=VSShellInstalledRule RebootRequiredCheck

이 방법은 문서화되어 있지는 않지만, VSShellInstalledRule 을 체크하는 부분을 Skip 함으로써 설치가 가능하게 합니다

카테고리:SQL SERVER

SELECT * INTO {TARGET} FROM {SOURCE}

– 새로운 테이블 생성, 전체 컬럼 INSERT
SELECT * INTO {TARGET} FROM {SOURCE}

– 새로운 테이블 생성, 일부 컬럼 INSERT
SELECT * INTO {TARGET}
  FROM (
                  SELECT COLUMN1, COLUMN2 FROM {SOURCE}
                ) AS TMP_TBL

– 기존 테이블 이용, 전체 컬럼 INSERT
INSERT INTO {TARGET} SELECT * FROM {SOURCE}

– 기존 테이블 이용, 일부 컬럼 INSERT
INSERT INTO {TARGET} SELECT COLUMN1, COLUMN2 FROM {SOURCE}

카테고리:SQL SERVER

지정한 기간내의 일자 목록

declare @todate varchar(10)
declare @frdate varchar(10)
declare @cudate varchar(10)
declare @dtdiff int
declare @cnt int

if object_id (‘tempdb..#tempx’) is not null drop table #tempx
create table #tempx (idx int identity (1,1), cudate varchar(10))

set @frdate = ‘2008-12-30’
set @todate = ‘2009-01-02’
set @cnt = 0
set @dtdiff = datediff(day, convert(datetime, @frdate), convert(datetime, @todate))

while @cnt <= @dtdiff
begin
set @cudate = convert(varchar(10), dateadd(day, @cnt, convert(datetime, @frdate)), 120)
insert into #tempx (cudate) values (@cudate)
set @cnt = @cnt + 1
end

select * from #tempx

카테고리:SQL SERVER