블로그 이미지
Rootrator
1개를 알면 모르는 10개가 튀어나온다..!

calendar

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

Notice

2012. 10. 15. 11:13 Mssql


MsSql에선 Mdf파일(데이터)과 Ldf파일(로그)로 db를 저장한다.


이 DB에 대한 정보는 시스템DB인 master에 저장되는데 


DB백업을 mdf,ldf로 받았다면 시스템DB에 등록을 해줘야 인식을 한다.


관리가 쉽도록 백업받은 파일들을 sql설치 디렉토리 밑의 data에  위치 시킨다.


use master

exec sp_attach_db @dbname = 'DB명', 

@filename1 = 'MDF파일의 경로',

@filename2 = 'LDF파일의 경로'

go

반응형
posted by Rootrator
2012. 5. 10. 15:48 Mssql

Microsoft OLE DB Provider for SQL Server 오류 '80040e37' 

개체 이름 'XX'이(가) 잘못되었습니다

/어디/무슨.asp, 줄 몇번째


확인해 보니 XX란 테이블은 존재하고 있었다.


테이블이 깨진건지 라는 생각에 쿼리 몇개를 날려보았는데도 정상적으로 작동을 하고 있었다.


이럴경우 해당 테이블의 소유자를 살펴보자.


다른 정상적인 테이블은 소유자가 dbo로 되어 있는데 문제가 있는 테이블만 소유자가 달랐다.


exec sp_changeobjectowner 'owner.XX', 'dbo'


혹은 테이타 내보내기로 하면 dbo소유자로 하나의 테이블이 더 복사하면 된다.


생성후 기존의 테이블을 삭제해 주면 처리 끝

반응형
posted by Rootrator
2012. 3. 6. 12:18 Mssql


sql 쿼리분석기를 열고

USE master
EXEC sp_addextendedproc xp_regread, "xpstar.dll"


후에 쿼리분석기를 닫고 다시 시도하자. 
반응형
posted by Rootrator
2012. 2. 16. 14:48 Mssql
MS-SQL서버를 이전하거나 서버가 바뀐경우 아래와 같은 오류가 뜰수 있다.
 
오류 14274 : MSX 서버에서 온 작업이나 그 단계 또는 일정을 추가, 업데이트 또는 삭제할 수 없습니다. 
작업이 저장되지 않았습니다.

SQL쿼리 분석기로 아래 쿼리를 넣어보자

use msdb
select * from sysjobs;

위 쿼리로 현재 MS-SQL에 예악된 작업을 볼 수 있는데,

여기서  originating_server필드에서 다른 부분을 볼 수 있다.

이부분은 현재 컴퓨터 이름이 들어가게 되는데 다른 서버에서 이전해 온 작업이라면

이 컴퓨터 이름이 달라 작업을 수정하거나 삭제하려면 오류가 발생한다.


update구문을 이용해서 수정해주자.

update msdb.dbo.sysjobs set originating_server = '컴퓨터이름'

이후에 작업을 수정,삭제 할 때 오류가 발생하지 않는다.
 
반응형
posted by Rootrator
2011. 11. 29. 11:26 Mssql

MS-SQL2003가 설치되어 있는 서로 다른 서버로 DB를 이전작업을 진행했다.

백업본을 이용하여 이전하였으나, 논리적이름과 실제 데이타파일명이 달라 복원이 되지 않아

DTS 가져오기/내보내기를 시도했다.

하지만 특정 테이블 복사과정에서 SETUSER 사용권한 거부 오류가 떴다. 

'[Microsoft][ODBC SQL Server Driver][SQL Server]'XXX' 데이터베이스에서 SETUSER 사용권한이 거부되었습니다. '

DTS 가져오기/내보내기를 할때 로그인한 계정에 권한이 없을 수 있으니 sa권한으로 시도하여 해결하였다. 
반응형
posted by Rootrator
2011. 3. 24. 14:38 Mssql
쿼리 분석기에서 아래 쿼리를 때리쟈

select @@version


Microsoft SQL Server  2000 - 8.00.2039 (Intel X86)   May  3 2005 23:18:38   Copyright (c) 1988-2003 Microsoft Corporation  Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

 sqlserver.exe  릴리즈
 2000.8.00.194  RTM
 2000.8.00.384  SP1
 200.8.00.534  SP2
 2000.8.00.760  SP3
 2000.8.00.760  SP3a
 2000.8.00.2039  SP4


 
반응형
posted by Rootrator
2011. 3. 16. 14:33 Mssql

mssql을 이용해서 BAK파일로 백업을 받은 후에

사용자와 DB를 지우고 나서

다시 복원을 해야하는데 DB명과 사용자 명은 똑같이 다시 생성하고 DB복원을 진행했지만

실제 웹상에서는 500에러가 떠버렸다.

분명 복원 후 설정상에 문제는 없었고, 소스상에서도 ID,PW,DB명 모두 일치했다.


허나 간과한게 있었으니...Mssql상에서 유저GUID다..

이것이 syslogins.sid와 다르기 때문이다...염병 ㅠㅠ

sp_change_users_login 'Report'
go

위 쿼리로 붕떠버린 유저가 나오는데 이 유저 ID를 기억하고

sp_change_users_login 'Update_one', '유저ID', '유저ID'
go


이제 로그인이 정상적으로 되면서 페이지가 제대로 열린다..



반응형

'Mssql' 카테고리의 다른 글

DTS 가져오기/내보내기 오류  (0) 2011.11.29
MSSQL-2000 서비스팩 확인  (0) 2011.03.24
Mssql 테이블 소유자 변환  (0) 2011.03.02
Msslq 테이블 복제  (0) 2011.03.02
MSSQL 용량 확인 및 설정  (0) 2011.02.28
posted by Rootrator
2011. 3. 2. 13:20 Mssql

MSSQL db복원을 할때 소유자까지 딸려서 복원이 되는 경우가 있다.

이 소유자는 로그인 정보가 없어도 db소유자로써 db사용자에 등록이 되어 있다.

삭제를 위해선 이 소유자를 해당계정으로 바꿔어 줘야 삭제가 가능하다.

즉 소유하고 있는 테이블 및 프로시저가 없어야 삭제가 가능하다.


Exec sp_changeobjectowner '전소유자.프로시저명(테이블명)', '바뀔 소유자'

 

반응형

'Mssql' 카테고리의 다른 글

DTS 가져오기/내보내기 오류  (0) 2011.11.29
MSSQL-2000 서비스팩 확인  (0) 2011.03.24
mssql DB복원 후 로그인이 되지 않을 때  (0) 2011.03.16
Msslq 테이블 복제  (0) 2011.03.02
MSSQL 용량 확인 및 설정  (0) 2011.02.28
posted by Rootrator
2011. 3. 2. 12:39 Mssql

간혹가다가 테이블만 복원해 달라는 고객이 있었다..

DB전체 복원은 참 쉽지만...

테이블 복원 뭐랄까...참 쌩뚱맞다.

DB하나를 생성해서 이전 백업본으로 복원 후 테이블만 복사하는 식으로 복원할때 썻던 방법이다.

<테이블 구조만 복사>
select * into [백업데이타테이블] from [복원할테이블] where '1' = '2';

<테이블 구조와 값까지 복사>
select * into [db명.소유자.테이블명] from [db명.소유자.테이블명] where '1' = '1';

위의 쿼리는 다른 DB간의 테이블 복사이다. 참고
반응형

'Mssql' 카테고리의 다른 글

DTS 가져오기/내보내기 오류  (0) 2011.11.29
MSSQL-2000 서비스팩 확인  (0) 2011.03.24
mssql DB복원 후 로그인이 되지 않을 때  (0) 2011.03.16
Mssql 테이블 소유자 변환  (0) 2011.03.02
MSSQL 용량 확인 및 설정  (0) 2011.02.28
posted by Rootrator
2011. 2. 28. 14:55 Mssql

엔터프라이즈 매니저에서는 DB전체의 용량사용 확인은 가능하다.

하지만 테이블 마다 용량확인 불가능한데

테이블 용량확인은 SQL쿼리로 조회가 가능하다 

select table_name = convert(varchar(30), min(o.name)),   table_size = str(sum(reserved) * 8192 / 1024.,15,0)
from sysindexes i inner join sysobjects o on (o.id = i.id)
where i.indid in (0, 1, 255) and o.xtype = 'U' group by i.id;


그리고 용량 확보를 위해 데이터를 지웠지만

오히려 데이터가 늘어난 어이없는 상황이 있었다.
 
트렌젝션 로그만 200메가정도...?

이럴 경우는 최종 용량크기를 정할 수 있는 SQL문이 있다.


DBCC SHRINKFILE(데이터베이스명_DATA, 최종 크기)

트렌젝션 로그 파일 용량 설정

BACKUP LOG [데이터베이스명] WITH TRUNCATE_ONLY

로그파일 용량 1MB로 설정

DBCC SHRINKFILE(데이터베이스명_LOG, 1)

반응형

'Mssql' 카테고리의 다른 글

DTS 가져오기/내보내기 오류  (0) 2011.11.29
MSSQL-2000 서비스팩 확인  (0) 2011.03.24
mssql DB복원 후 로그인이 되지 않을 때  (0) 2011.03.16
Mssql 테이블 소유자 변환  (0) 2011.03.02
Msslq 테이블 복제  (0) 2011.03.02
posted by Rootrator
prev 1 2 next