ms sql 2012에서 아래와 같은 메시지가 나오는 경우가 있다.
제목: mscorlib
------------------------------
지정한 키가 사전에 없습니다.
------------------------------
해결방법 : SP1 설치
2014년 12월 17일 수요일
2014년 12월 10일 수요일
MSSQL->ORACLE 연결 TNS 에러
제목: Microsoft SQL Server Management Studio
------------------------------
연결된 서버에 대한 연결 테스트에 실패했습니다.
------------------------------
추가 정보:
Transact-SQL 문 또는 일괄 처리를 실행하는 동안 예외가 발생했습니다. (Microsoft.SqlServer.ConnectionInfo)
------------------------------
연결된 서버 "****"에 대한 OLE DB 공급자 "OraOLEDB.Oracle"의 데이터 원본 개체를 초기화할 수 없습니다.
연결된 서버 "****"의 OLE DB 공급자 "OraOLEDB.Oracle"이(가) 메시지 "ORA-12154: TNS:could not resolve the connect identifier specified"을(를) 반환했습니다. (Microsoft SQL Server, 오류: 7303)
도움말을 보려면 다음을 클릭하십시오: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=10.50.1600&EvtSrc=MSSQLServer&EvtID=7303&LinkId=20476
------------------------------
단추:
확인
------------------------------
해결 >>>
tnsnames.ora 파일에 문제가 있다.
MSSQL이 설치된 서버에 오라클 클라이언트 설치 경로
D:\oracle\product\10.2.0\client_1\NETWORK\ADMIN
여기 폴더에 tnsnames.ora 파일을 아래처럼 수정해준다.
연결이름=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=아이피)
(PORT=1521)
)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=오라클SID)
)
)
------------------------------
연결된 서버에 대한 연결 테스트에 실패했습니다.
------------------------------
추가 정보:
Transact-SQL 문 또는 일괄 처리를 실행하는 동안 예외가 발생했습니다. (Microsoft.SqlServer.ConnectionInfo)
------------------------------
연결된 서버 "****"에 대한 OLE DB 공급자 "OraOLEDB.Oracle"의 데이터 원본 개체를 초기화할 수 없습니다.
연결된 서버 "****"의 OLE DB 공급자 "OraOLEDB.Oracle"이(가) 메시지 "ORA-12154: TNS:could not resolve the connect identifier specified"을(를) 반환했습니다. (Microsoft SQL Server, 오류: 7303)
도움말을 보려면 다음을 클릭하십시오: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=10.50.1600&EvtSrc=MSSQLServer&EvtID=7303&LinkId=20476
------------------------------
단추:
확인
------------------------------
해결 >>>
tnsnames.ora 파일에 문제가 있다.
MSSQL이 설치된 서버에 오라클 클라이언트 설치 경로
D:\oracle\product\10.2.0\client_1\NETWORK\ADMIN
여기 폴더에 tnsnames.ora 파일을 아래처럼 수정해준다.
연결이름=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=아이피)
(PORT=1521)
)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=오라클SID)
)
)
2014년 12월 9일 화요일
Count rows for all tables 모든 테이블의 행 수 카운트
-- Count rows for all tables
모든 테이블의 행 수 카운트
SP_MSForEachTable 를 사용하면 간단하게 할 수 있다.
CREATE TABLE #counts
(
table_name varchar(255),
row_count int
)
EXEC sp_MSForEachTable @command1='INSERT #counts (table_name, row_count) SELECT ''?'', COUNT(*) FROM ?'
SELECT table_name, row_count FROM #counts ORDER BY table_name, row_count DESC
DROP TABLE #counts
--Ref from stack overflow.
QUOTED_IDENTIFIER
배치스케줄이 아래의 에러를 뱉으며 동작하지 않는다.
다음 사용자로 실행되었습니다: NT AUTHORITY\SYSTEM. 다음 SET 옵션의 설정이 잘못되어 DELETE이(가) 실패했습니다. 'QUOTED_IDENTIFIER'. SET 옵션을 인덱싱된 뷰 및/또는 계산 열에 대한 인덱스 및/또는 필터링된 인덱스 및/또는 쿼리 알림 및/또는 XML 데이터 형식 메서드 및/또는 공간 인덱스 작업과(와) 함께 사용할 수 있는지 확인하십시오. [SQLSTATE 42000] (오류 1934). 단계가 실패했습니다.
SET QUOTED_IDENTIFIER ON
설정을 넣으면 된다!
Identifier(식별자)를 "큰따옴표" 안에 넣으면 쓸 수 있다는 설정인데, OFF되어있다한들 이게 왜 문제가 된건지??
2014년 12월 8일 월요일
sql delete from nested select
sql delete from nested select
join해서 delete할 대상을 구하기 위해 nested query를 사용할 때 주의해야한다.
declare @t1 table (n int)
insert @t1 values(1)
insert @t1 values(2)
insert @t1 values(3)
declare @t2 table (n int)
insert @t2 values(1)
insert @t2 values(2)
insert @t2 values(3)
--이렇게 하면 의도대로 3만 지워질까?
delete @t1
from (
select *
from @t1
) x
where x.n=3
--이렇게 하면?
delete @t2
from (
select *
from @t2
where n=3
) x
select * from @t1
select * from @t2
--result:Nothing...!
--아무것도없다!
2014년 12월 7일 일요일
sql non overlapping random number
sql non overlapping random number
중복되지 않는 랜덤 값으로 채우기
ex) Fill random number from 0 to 15
declare @t int = 0
declare @tt table (n int)
while( (select count(n) from @tt) < 15)
begin
set @t = floor(rand()*15) --Generate 0~15
if @t not in (select n from @tt)
begin
insert into @tt values(@t)
end
end
select n
from @tt
피드 구독하기:
글 (Atom)