bbong blog : 위치로그 : 태그 : 방명록 : 관리자 : 새글쓰기
bbong blog 블로그에 오신것을 환영해요^^
방명록에 글 남기기!!
57
108
159248
'Windows/MSSQL'에 해당되는 글 12건
SQL Server 2008 버전을 설치하고보니 외부접속이 막혀있었다.

외부 접속을 허용하는 방법은

'시작-모든 프로그램-Microsoft SQL Server 2008-구성 도구-SQL Server 구성 관리자'의
구성 관리자(Sql Server Configuration Manager)를 실행하면

'SQL Server 구성 관리자(로컬)->SQL Server 네트워크 구성->(인스턴트명)에 대한 프로토콜'
이라는 항목이 있다.

여기서 TCP/IP와 명명된 파이프를 사용하도록 설정하면 된다.
TCP/IP는 등록정보를 보면 IP주소 탭에 IPALL의 TCP 포트에 '1433'을 넣고 IP1의 사용도 '예'로 체크되어있는지 확인해야 한다.

출처 : whiteblank.tistory.com

위로
asp에서 ADODB.Recordset 객체로 delete 메소드를 이용하여 특정 레코드를 삭제하려고 하였다.
처음에는 커서타입등의 설정이 잘못되어서 그런가 보다 싶어서 이리저리 바꿔음에도 불구하고
삭제가 되질 않았다. 메세지가 레코드가 없다니 sys.servers 가 어쩌니 저쩌니 하는 메세지가 나온다.
select sys.servers 로 보니 이전 호스트명으로 된 인스턴스가 나왔다. 그순간 알수가 있었다.
문제의 원인은 컴퓨터명이 바뀌어 mssql 인스턴스를 제대로 인식을 못해서였다.
구글 검색을 통해 인스턴스 바꾸는걸 알고 아래와 같이 처리하였다.

현재 mssql 서버 인스턴스을 확인
select @@servername

인스턴스 삭제
sp_dropserver '결과값으로나온 sql서버명'

인스턴스 추가
sp_addserver '현재컴퓨터명', 'local'

그런데 이상한건 왜 insert update select 등을 모두 ADODB.Recordset 으로 처리했을때는
오류가 없었는데 delete 만 문제가 되는가이다.
이문제에 관한건 아직도 모르겠다. 혹시 아시는 분은 코멘트라도.. ^^

내 인생은 인생 자체가 삽질인가 보다.

위로
실행 -> regsvr32 sqlmmc.dll

위로

PAE옵션은 x86버전에서 4GB의 메모리를 사용할 수 있는 메모리 어드레스 확장 기술입니다.

2003에서는 Boot.ini에서 /PAE옵션을 사용하였으나 2008에서는 Boot.ini파일 대신 BCDEDIT를 사용합니다.

2008에서 PAE 모드를 사용하려면 BCD 파일의 부팅 항목에 PAE 추가해야 합니다.

 

1. Windows Server 2008 에서 PAE 모드를 사용하려면 BCD 파일의 부팅 항목에 PAE를 추가해야 합니다.
이렇게 하려면 권한이 상승된 명령 프롬프트를 열고 다음과 같이 입력합니다.
BCDEDIT /SET PAE ForceEnable

 

2. Windows Server 2008에서 User영역을 3GB를 사용하려면,(/3GB) 다음과 같이 명령을 실행합니다.
BCDEDIT /Set IncreaseUserVa 3072

(참고, 만약 초기 설정인 User영역인 2GB으로 되돌리려면 BCDEDIT /Set IncreaseUserVa 2048을 다시 실행합니다.)

 

 

[기술자료]
Windows Vista 또는 Windows Server 2003에서 예상보다 작은 메모리를 보고할 수 있다
<
http://support.microsoft.com/kb/929580/ko>


Physical Address Extension
<http://msdn.microsoft.com/en-us/library/aa366796(VS.85).aspx>


BCDEdit /set
<http://msdn.microsoft.com/en-us/library/aa906211.aspx>


<http://blogs.technet.com/brad_rutkowski/archive/2006/10/03/Hey-where-did-_2F00_3GB-go-in-Longhorn-and-Vista_3F00_.aspx>


위로

max memory = 2147483647

32비트운영체제에서 MSSQL 2005은 메모리가 기본적으로 2기가만 지원을 하게 됩니다.

이것을 4기가까지 확장 할 수 있도록 하는 방법을 알려드립니다.


 작업환경

OS : Windows Server 2003 Standard Edition 32Bit

SQL : MSSQL 2005 Server Standard Edition

RAM : 4GB


1. 컴퓨터의 실제 메모리는 아래 보시는것처럼 4기가의 메모리를 가지고 있습니다.

사용자 삽입 이미지
























2. 하지만 MSSQL2005은 2기가까지만 메모리가 설정되어 있어서 그 이상은 사용을 하지 않는것을 볼 수 있습니다.

사용자 삽입 이미지


























아깝지 않습니까? 이 풍부한 하드웨어에서 반밖에 능력을 사용 못하고 있네요.

사용자 삽입 이미지


























Lock Pages in Memory

3. MSSQL이 AWE를 사용하려면 Lock Rages in Memory 옵션이 지정된 윈도우 계정으로 MSSQL 엔진을 실행해야 합니다.

32비트 운영체제의 경우 SQL Server에 맞게 AWE를 구성하기 전에 Lock pages in memory권한을 얻어야 합니다.


4. 우선 MSSQL이 어떤 계정으로 구동이 되는지 알아야 합니다.

시작-> 프로그램 -> 관리 도구 -> 서비스 누른다음에 아래의 항목을 찾으면 됩니다.

'db_go' 혹은 'sql_starter'일것이다.


5. Lock Pages in Memory 옵션을 설정해야 합니다.

시작 -> 실행에서 gpedit.msc를 실행합니다.


6. 그룹 정책 개체 편집기가 나오면..

컴퓨터 구성 -> Windows 설정 -> 보안설정 -> 로컬 정책 -> 사용자 권한 할당 -> 메모리의 페이지 잠그기

더블클릭을 합니다.


7. 아까 확인한 'db_go' 사용자를 추가를 해줍니다.


awe enabled 옵션

8. 본격적으로 메모리를 늘리는 방법을 진행하도록 하겠습니다.

AWE(Address WindowingExtionsions)를 사용하여 가상 메모리에 설정된 한계봐 더 큰 실제 메모리를 액세스 할 수 있도록 설정 하도록 하겠습니다.


'awe enabled'는 고급옵션입니다. 'sp_configure' 시스템 저장 프로시저를 사용하여 설정을 변경하려면 'show advanced options'를 1로 설정해야만 'awe enabled'를 변경할 수 있습니다.

-------------------------------------------

sp_Configure 'show advanced options',1
RECONFIGURE
go
sp_Configure 'awe enabled',1
RECONFIGURE
go

-------------------------------------------


9. MSSQL을 다시 시작해야 합니다.

   MSSQL을 다시 시작 한 후 메모리를 설정하겠습니다.


  총 4기가중 3.5기가만 사용하도록 설정하겠습니다. 1024*3  = 3584

-------------------------------------------

sp_Configure 'max server memory',3584
RECONFIGURE
go

-------------------------------------------


네트워크 응용 프로그램을 위해 데이터 처리량 최대화

10. 네트워크연결에서 '파일 공유를 위해 데이터 처리량 최대화' 옵션을 선택하면 운영체제에서 파일 시스템 캐시에 I/O페이지를 캐시하여 버퍼링된 I/O작업을 수행하는 응용 프로그램에 우선 순위를 부여합니다. 이 옵션은 정상적인 작업을 수행하는 동안 SQL Server에서 사용가능한 메모리를 제한할 수 있습니다.


제어판 -> 네트워크 연결 -> 로컬 영역 연결 -> 일반 탭 -> Microsoft 네트워크용파일 및 프린터 공유 -> 속성

'네트워크 응용 프로그램을 취해 데이터 처리량 최대화'를 선택하고 확인을 누릅니다.





확인하기

여기까지 준비가 완료되었습니다.


메모리가 3.5기가까지 올라가나 확인하기 위해 무식한 쿼리를 날려보았습니다.


무하하...저 가파르게 올라가는 메모리양을 보십시오!!

성공했습니다.



위로

1. ~~~binn\sqlservr.exe -m (단일 사용자 모드로 시작한다)
 내꺼 경로는 이렇다
ex)C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn

(창을 그대로 두고 다른 cmd창을 연다)


2. sqlcmd 실행 (이거 참 좋은 툴이다)


3. master 복구

1) use tempdb

2) restore database master from disk='c:\master.bak' with replace, recovery

3) GO

master가 복구되었단다..이제 한숨 돌린다


4. SQL Server 인스턴스 정상 실행

* 단일 사용자 모드는 한 번에 하나의 사용자만 데이터베이스에 액세스할 수 있도록 지정하며 일반적으로 유지 관리 동작에 사용됩니다 *


위로

지우기

USE master
GO
IF OBJECT_ID('[dbo],[xp_cmdshell]') IS NOT NULL BEGIN
EXEC sp_dropextendedproc 'xp_cmdshell'
END
GO

살리기

EXEC sp_addextendedproc 'xp_cmdshell','xplog70.dll'
GO


위로
sql master 복구
Windows/MSSQL, (2007/06/30 01:57)

sql 종료

-> net stop mssqlserver

sql 단인 모드 시작

-> net start mssqlserver /m


위로
sql 버전별 패치
Windows/MSSQL, (2007/04/10 16:03)
--패치 확인
select serverproperty('productlevel')

--버전 확인
select @@version

위로

데이터베이스를 관리하다보면 분리되거나 또는 다른데서 가져온 *.mdf 및 *.ldf 파일을 연결해야 하는 경우가 있습니다. 이러한 작업에 대하여 살펴보도록 하겠습니다.

데이터베이스를 SQL 서버에 연결한다는 것은 예전에 분리된 또는 여타의 상황 발생으로 인하여 SQL 서버와 무관하게 존재하는 데이터베이스 파일(*.mdf, *.ldf)을 SQL 서버의 데이터베이스로서 작동을 하도록 연결하는 것을 의미합니다. 예를 들어 SQL 서버가 심각한 증상을 보여 더이사 작동을 하지 않을 경우 다시 SQL 서버를 설치 한 후 예전에 사용하던 *.mdf, *.ldf 파일을 연결해야 하는 경우가 있을수 있으며, 다른 서버에서 사용하던 *.mdf, *.ldf 파일을 가져와 연결해서 사용하고자 하는 경우가 있을 수 있습니다.

SQL 서버는 이러한 작업을 쉽게 할 수 있는 방법은 제공하고 있습니다. 더욱이 좋은 것은 SQL 서버 7.0에서 사용하던 *.mdf, *.ldf 파일을 SQL 서버 2000에 별 무리 없이 연결 할 수 있기 때문에 업그레이드의 한가지 방법이 될 수 있습니다. 하지만 SQL 서버 2000에서 사용하던 *.mdf, *.ldf 파일은 SQL 서버 7.0에 연결을 할 수 없음을 숙지하시기 바랍니다.

데이터베이스 분리작업과 마찬가지로 SQL 서버에서는 데이터베이스 파일을 SQL 서버에 연결하는 방법은 다음과 같이 두가지가 있습니다.

o EM(Enterprise Manager)를 이용한 데이터베이스 연결
o sp_attach_db 또는 sp_attach_single_file_db 시스템 저장프로시져를 이용한 데이터베이스 연결

위 두가지 방법을 차례대로 살펴보도록 하겠습니다.

1) EM(Enterprise Manager)를 이용한 데이터베이스 연결

이 방법을 이용하면 특별한 기술없이 데이터베이스 파일을 SQL 서버에 연결 할 수 있습니다.

① 우선 연결할 대상이 되는 *.mdf, *.ldf 파일을 특정한 디렉토리에 위치를 시킵니다. 연결 과정을 보여드리기 위해서 저는 sqlworld.mdf, sqlworld_log.ldf 파일을 E:\Data 폴더에 위치 시킨 상태입니다.

② 다음의 [화면1]과 같이 을 보시면 "데이터베이스" 위에서 마우스 오른쪽 버튼을 눌러 단축메뉴를 표시하면 [모든작업(K)] - [ 데이터베이스 연결(A)]을 선택할 수 있습니다.


[화면1]

③ 그러면 아래 [화면2] 처럼 데이터베이스 연결을 위한 대화창이 표시됩니다.


[화면2]

④ 아래의 아래 [화면3] 처럼 찾기 버튼 [...] 을 누르면 연결할 데이터베이스 파일의 위치를 쉽게 찾을 수 있는 탐색창이 뜹니다. 이 화면에서 연결하고자 하는 데이터베이스 파일 *.mdf 을 선택하면 됩니다.


[화면3]

⑤ 아래 [화면4]는 데이터베이스 파일을 선택한 후의 화면입니다. 원하는 경우 "다음 이름으로 연결(A)" 부분에 다른 이름을 주어 기존의 데이터베이스와는 다른 이름을 갖는 데이터베이스로 연결을 할 수 있습니다.


[화면4]

⑥ 위 [화면4]에서 [확인] 버튼을 누르면 데이터베이스 연결이 완료됩니다.

2) sp_attach_db 또는 sp_attach_single_file_db 시스템 저장프로시져를 이용한 데이터베이스 연결

sp_attach_db의 경우는 데이터베이스 파일이 여러개인 경우(한개의 *.mdf 파일과 여러개의 *.ndf 파일들)에 사용을 하게 되며, sp_attach_single_file_db의데이터베이스 파일이 한개(한개의 *.mdf 파일)인 경우 사용하면 됩니다. 데이터베이스 파일이 한개인 경우는 두가지 방법중 아무거나 사용하시면 됩니다. 그리고 sp_attach_db의 경우는 16개의 데이터베이스 파일까지 한번에 지정이 가능합니다.

만일 위에서 연결했던 sqlworld.mdf 파일을 sp_attach_db를 이용해서 연결한다면 다음과 같이 하시면 됩니다.


USE master
GO

EXEC sp_attach_db 'sqlworld', 'E:\Data\sqlworld.mdf', 'E:\Data\sqlworld_log.ldf'

위 연결 방법은 정확히 한다면 다음과 같은 문법에 따라 사용하셔야 합니다. 하지만 변수명 생략이 가능하기 때문에 위와 같이 사용한 것입니다.


USE master
GO

EXEC sp_attach_db @dbname = 'sqlworld', @filename1 = 'E:\Data\sqlworld.mdf', @filename2 = 'E:\Data\sqlworld_log.ldf'

sqlworld.mdf 파일을 sp_attach_single_file_db를 이용해서 연결한다면 다음과 같이 하시면 됩니다.


USE master
GO

EXEC sp_attach_single_file_db 'sqlworld', 'E:\Data\sqlworld.mdf'

-- 또는

EXEC sp_attach_single_file_db @dbname = 'sqlworld',
@physname = 'E:\Data\sqlworld.mdf'

3) 정리

*.mdf, *.ldf 파일을 가지고 어떻게 연결을 해야 하는지에 대한 질문이 상당히 많이 올라와 이에 대한 설명을 간단하게나마 준비해 보았습니다. 추가적인 설명이 필요하시면 온라인 설명서(Books Online)을 참고하시기 바랍니다.

참고 : http://blog.naver.com/locusty?redirect= ··· 14505061


위로