반응형

SQL서버에서 .NET 으로 만든 사용자 함수를 실행 시키려고 하는데 다음과 같은 오류가 발생하면

 

  .NET Framework에서 사용자 코드를 실행할 수 없습니다. "clr enabled" 구성 옵션을 설정하십시오.

 

 

먼저 아래와 같이 CLR 을 활성화 시켜 줘야 한다.

 

EXEC sp_configure 'clr enabled', 1

RECONFIGURE

반응형
반응형


일반적으로 ROW_NUMBER()의 OVER 절에 다음과 같이 그룹화 시킬 컬럼을 넣어서 사용하게 된다.

SELECT 
 (ROW_NUMBER() OVER (PARTITION BY dept_code ORDER BY user_id)) as ord, * 
FROM 
 UserTable
ORDER BY 
 dept_code


그런데 만약 특정 컬럼에 대한 일련번호가 아닌 전체 row 에 대하여 처음부터 일련번호를 부여 하고자 하면 다음과 같이 

PARTITION BY 없이 ORDER BY 만 사용 하면 된다. 이때 ORDER BY 에 사용하는 컬럼값이 데이터에 중복되어 있어도 관계없다. 

ROW_NUMBER() 함수의 특성상 동일값 이라도 차례대로 일련번호를 부여하기 때문 이다.

SELECT 
 (ROW_NUMBER() OVER (ORDER BY user_id)) as ord, * 
FROM 
 UserTable
ORDER BY 
 ord


반응형
반응형
SQL서버에서 Linked Server로 연결된 Oracle서버에 곧바로 DML 을 던지면 오류가 발생 한다.

 


다음과 같이 해야 오류가 발생 하지 않는다.

INSERT openquery(linked1, 'select num, names from Temp_1') VALUES (100, '박찬호')

마찬가지로 UPDATE, DELETE도 다음과 같이 할 수 있다.

UPDATE openquery(linked1, 'select num from Temp_1 where num = 100')  SET num = 200

DELETE FROM openquery(linked1, 'select num from Temp_1 where num = 200')
반응형
반응형

다음 예에서는 원격 Oracle 서버에서 몇 가지 SELECT 문을 실행합니다. 먼저 Oracle 서버를 연결된 서버로 추가한 다음 연결된 서버 로그인을 만듭니다.

-- Setup the linked server.
EXEC sp_addlinkedserver  
        @server='ORACLE',
        @srvproduct='Oracle',
        @provider='OraOLEDB.Oracle', 
        @datasrc='ORACLE10';

EXEC sp_addlinkedsrvlogin 
    @rmtsrvname='ORACLE',
    @useself='false', 
    @locallogin=null, 
    @rmtuser='scott', 
    @rmtpassword='tiger';
 
EXEC sp_serveroption 'ORACLE', 'rpc out', true;
GO
 
-- Execute several statements on the linked Oracle server.
EXEC ( 'SELECT * FROM scott.emp') AT ORACLE;
GO
EXEC ( 'SELECT * FROM scott.emp WHERE MGR = ?', 7902) AT ORACLE;
GO
DECLARE @v INT; 
SET @v = 7902;
EXEC ( 'SELECT * FROM scott.emp WHERE MGR = ?', @v) AT ORACLE;
GO
반응형

+ Recent posts