본문 바로가기

DB/MS SQL Server

SQL Server 2008

SQL Server에서 80포트 사용

Windows Server 2008 + SQL Server 2008 이 설치된 서버에 아파치 웹서버를 올리려고 하는데 아래와 같이 이상한 메시지가 나온다.

Not Found

HTTP Error 404. The requested resource is not found.

Not_Found.png 

 

어떤 서비스가 80포트를 서비스하는지 아래 명령을 찾아보았지만,

  1. > netstat -noa | find ":80"
  2.   TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       4
      TCP    [::]:80                [::]:0                 LISTENING       4

 PID 4는 System 이었다!

  1. >tasklist /FI "PID eq 4"
  2. 이미지 이름                    PID 세션 이름              세션#  메모리 사용
    ========================= ======== ================ =========== ============
    System                           4 Services                   0        364 K

 

하는 수 없이 Wireshark로 패킷을 보면 Server 명을 찾을 수 있을 것이라고 생각했는데,

Microsoft-HTTPAPI/2.0 였다.

HTTP/1.1 404 Not Found
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
Date: Tue, 29 May 2012 05:06:19 GMT
Connection: close
Content-Length: 315

인터넷 검색을 해보니...

SQL Server Reporting Services(MSSQLSERVER)라는 서비스가 그런 일을 한다고 한다. => Microsoft HTTPAPI/2.0 disabling Apache

서비스 이름은 "ReportServer" 이다.

서비스를 멈추니...

  1. > net stop ReportServer
    SQL Server Reporting Services(MSSQLSERVER) 서비스를 멈춥니다..
    SQL Server Reporting Services(MSSQLSERVER) 서비스를 잘 멈추었습니다.

80 포트로 서비스하는 것이 없어졌다.

서비스의 시작유형을 보니 자동(AUTO_START)로 되어 있었다.

  1. > sc qc ReportServer
    [SC] QueryServiceConfig 성공
  2. SERVICE_NAME: ReportServer
            종류               : 10  WIN32_OWN_PROCESS
            START_TYPE         : 2   AUTO_START
            ERROR_CONTROL      : 1   NORMAL
            BINARY_PATH_NAME   : "D:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportServer\bin\ReportingServicesService.exe"
            LOAD_ORDER_GROUP   :
            태그                : 0
            DISPLAY_NAME       : SQL Server Reporting Services(MSSQLSERVER)
            종속성       :
            SERVICE_START_NAME : .\Administrator

시작유형을 수동으로 변경해주었다. (서버 재부팅시 포트 충돌이 발생할 수 있으므로)

  1. > sc config ReportServer start= demand
    [SC] ChangeServiceConfig 성공

 

백업 및 복원

윈도우를 다시 설치해야 해서 데이터베이스를 풀백업을 했다가 복원을 하는데 아래와 같이 에러가 났다.

System.Data.SqlClient.SqlError: 버전 10.50.1600이(가) 실행되는 서버에서 데이터베이스가 백업되었습니다. 해당 버전은 버전 10.00.1600이(가) 실행되는 이 서버와 호환되지 않습니다. 백업을 지원하는 서버에서 데이터베이스를 복원하거나 이 서버와 호환되는 백업을 사용하십시오. (Microsoft.SqlServer.Smo)

스크린샷_2012-04-11_오후_8.59.26.png

버전정보: http://www.sqlteam.com/article/sql-server-versions

  • 10.00.1600    SQL Server 2008 RTM
  • 10.50.1600.1    SQL Server 2008 R2 RTM

백업은 2008 R2에서 해놓고 2008에서 복원을 하려고 하니깐 발생하는 에러였다.

 

상위 200개 행 편집 열 수정

SQL 2008에서는 행 선택 및 편집을 각각 1000개, 200개로 조건이 생겼다.

아마도 너무 많은 레코드를 동시에 편집을 하게 되면 부담이 되기 때문에 그런게 아닌게 생각 된다.

sql2008_result200popup.png

하지면 [도구]-[옵션]에 들어가면 상위 <n>개 행 선택/편집의 값을 변경을 할 수 있다.

sql2008_result200.png

테이블 SQL Server 인증모드 설정

SQL Server 인증모드 설정

 SQL Server 2008 express를 설치했다.

2005에서와 마찬가지로 다음과 같은 에러 메시지가 뜬다.

제목: 서버에 연결
localhost에 연결할 수 없습니다.
추가 정보:
SQL Server에 연결을 설정하는 중에 네트워크 관련 또는 인스턴스 관련 오류가 발생했습니다. 서버를 찾을 수 없거나 액세스할 수 없습니다. 인스턴스 이름이 올바르고 SQL Server가 원격 연결을 허용하도록 구성되어 있는지 확인하십시오. (provider: 명명된 파이프 공급자, error: 40 - SQL Server에 대한 연결을 열 수 없습니다.) (Microsoft SQL Server, 오류: 2)

 

 sqlConnErrror.png

 

설치할 때 서버 인증 모드를 "SQL Server 및 Windows 인증모드"로 선택을 했기에 SQL Server 인증모드로도 되야 하는데

Windows 인증모드로 밖에 접속이 되지 않는다.

 

해결방법

"SQL Server 구성 관리자 "에 들어가서 클라이언트 프로토콜을 "사용"으로 바꾸어 준다.

 confUse.png

 TCP/IP 속성에 들어가면 알 수 있듯이 TCP/IP를 이용한 SQL Server 접속포트는 1433이다.

 tcpPort.png

 

SQL Server 서비스에 있는 SQL Server (SQLEXPRESS)를 재가동을 해본다.

그래도 접속이 되지 않을 것이다.

 connDiag.png

 

이유중 하나는 "SQL Server 네트워크 구성"이 제대로 되어 있지 않을 가능성이 크다.

 sqlNetworkConf.png

IP All에 TCP 포트가 비어있는데 여기에 1433이라고 적어준다.

sqlNetworkConfPort.png

 SQL Server 서비스에 있는 SQL Server (SQLEXPRESS)를 재가동을 해본다.

 

sa 아이디로 접속이 된다.

connected.png

 

구지 Windows 인증으로도 접속이 되는데 TCP/IP를 이용한 접속이 되어야 한다는 사람도 있을 수 있지만,

데이터베이스라는 단독 클라이언트에서 접속이 되어 데이터를 이용하는 것 보다는

여러 애플리케이션에서 멀티 접속이 되는 경우가 더 많기 때문이다.

 

테이블 수정시

"변경 내용을 저장할 수 없습니다. 변경 내용을 적용하려면 다음 테이블을 삭제하고 다시 만들어야 합니다. 다시 만들 수 없는 테이블을 변경했거나 [테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함] 옵션을 설정했습니다.

테이블을 만들고 난 후에 이후에 수정을 하려고 하니 '테이블을 삭제하고 다시만들라'는 어처구니 없는 메시지를 내뿜는다.

그러면 데이터가 엄청나게 들어가 있는 테이블은 데이터를 내보내기로 백업해두고 테이블을 지우고 새로 만든다음 다시 불러오라는 것인가?

error-table_modify.png

 

그나저나 위의 저 옵션(다시 만들어야 하는 변경 내용 저장 사용 안 함)은 어디에 있는 거야??

인터넷을 찾아보니 해결방안을 잘 알려준다.. 역시 구글 신님이다...

해결방안

 "SQL Server Management Studio"에서 [도구]-[옵션]에서

[디자이너]-[테이블 옵션]에서 "테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함"이 체크되어 있는데

해제를 해주면 된다. 이건 멍미!!!

tools-table_modify.png

 

 

 

이 글은 스프링노트에서 작성되었습니다.