2

배경 :
데이터베이스로 SQL Server 2005가 설치된 ASP.NET에 사이트가 있습니다. 이 사이트는 내 고객 서버 룸에있는 Windows Server 2003 상자의 유일한 사이트입니다. 클라이언트는 지역 교육구이므로 데이터 보안상의 이유로 원격 데스크톱 액세스 및 원격 SQL Server 연결이 없으므로 데이터베이스 서비스가 필요하면 터미널에 있어야합니다. ASP 코드를 업데이트하기 위해 FTP 액세스 권한이 있습니다.이상한 SQL Server 2005 동작

문제점 :
어제 시스템 관련 문제에 대해 연락을 받았습니다. 내가 그것을 들여다 보면 거의 1 년 전에 풀어 낸 버그가 돌아온 것 같습니다. int를 매개 변수로 사용하는 저장 프로 시저가 있지만 1 년 전 시스템의 구조가 변경되고 nvarchar (10)를 사용하도록 저장 프로 시저가 업데이트되었습니다. 저장 프로 시저가 어떻게 든 nvarchar 대신 int로 변경되었습니다.

주기적으로 데이터를 복사하고 장애 발생시 서버를 복원 할 수있는 외부 하드 드라이브가 서버에 연결되어 있습니다. 어떻게 든 이전 버전의 데이터베이스가 복원되었다고 가정했지만, 알 수있는 데이터는 버그가 발생하기까지 7 일 및 1 일 전에 삽입되었습니다.

질문 : SQL Server 2005 데이터베이스의 구조가 실제 데이터를 건드리지 않고 이전 버전으로 되돌 리거나 이전 버전으로 복원 할 수 있습니까? 어느 누구도 서버에 액세스 할 수 없으므로 나는이 일이 어떻게 일어 났는지 파악하려고 조금 미친 듯이 간다.

아이디어가 있으십니까?

답변

0

데이터 변환 서비스 (DTS)를 통해? 또는 데이터베이스를 설정하는 스크립트를 사용할 수있는 곳이라면 ...

+0

Gaby - 저는 처음에 서버에 직접 데이터베이스를 생성하고 모든 업데이트를 직접 작성했습니다. 필자는 스크립트를 사용하여 백업을 복사 해 오피스로 가져 와서 프로덕션 환경을 최신으로 유지했습니다. –

2

SQL Server의 기본 제공 백업 및 복원 메커니즘을 사용하면 복원 할 특정 개체 만 선택할 수있는 방법이 없습니다. 트랜잭션 로그 백업을 사용하면 특정 트랜잭션 또는 ALTER 문이 작성되기 전에 특정 시점으로 복원 할 수 있지만 가장 근접한 시점입니다. 데이터베이스를 복사본으로 복원하고 원하는 개체를 복사하거나 백업을 직접 읽고 해당 개체를 복사하여 작업 할 수 있도록 특정 개체를 선택할 수있는 도구가 있습니다. 다른 말로하면 이것은 실수로 내장 도구를 사용하여 발생할 수있는 일이 아닙니다. 내 생각 엔 누군가가 우연히 그것을 되 돌린 저장된 proc (들)의 오래된 스크립트를 돌렸다.

+0

"... 누군가 우연히 오래된 스크립트를 실행했습니다 ..."내 추측이 될 것입니다. 하지만 그 시스템에 강력한 보안이있는 것 같은데 ...? –

+0

@Philip Kelley - 복원 일지라도 권한이있는 계정으로 실행해야했습니다. 어떤 의미에서 누군가 액세스해야한다는 의미입니다. ALTER 권한을 가진 계정 수가 제한되어있는 경우 변경 소스를 쉽게 좁힐 수 있어야합니다. – Thomas

+0

ASP가 연결하는 계정은 매우 제한되어 있습니다. 저장 프로 시저와 같은 모든 종류의 변경 권한이있는 유일한 계정은 로컬 관리자 계정입니다. –

2

데이터 나 다른 저장 프로 시저를 건드리지 않고 저장 프로 시저를 변경하는 것은 간단합니다. 왜 누가 누가 그랬는지, 그게 문제 야.

한 가지 제안,

select * from sys.procedures 

를 실행하고 문제를 절차 및 데이터베이스에있는 다른 모든 절차 모두에 대한 create_date 및 modify_date 열을 확인합니다.

+0

아이디어를 제공해 주셔서 감사합니다. 그 명령은 터미널에서 실행할 수 있기 때문에 다음에 사무실에서 나올 때까지 기다려야합니다. –

1

하나의 클라이언트 위치에 설치 한 앱과 비슷한 일이 발생했습니다. 가끔씩 s'procs는 이전 버전으로 되돌아갑니다.

그것은 단지 하나의 클라이언트이며,이 앱은이 문제가 한번도 없었던 여러 다른 앱에 설치되어 있으며, 학구이기도합니다. 약 3 개월에 한 번 정도 발생하며 아무도 그 컴퓨터를 만져서는 안됩니다. 나는 그들이 회사 관리자를 여는 방법을 알고있는 집안에 누군가가 있다고 확신하지 못합니다.

이상하게도 클라이언트가 사용하는 백업 소프트웨어는 무엇입니까?절차의 생성/수정 날짜를 확인한 후 그 시간대에 서버 재부팅이 발생 했습니까?

내가 묻는 이유는 내 클라이언트가 서버에서 정말 이상한 일을하는 백업 소프트웨어를 가지고 있기 때문입니다. 예를 들어 재부팅 할 때 마지막으로 성공한 백업 이후 파일 조작을 포함하여 변경 사항을 "재생"해야합니다. 또한 VM에 설치되어 있습니까?

+0

덧붙여 말하자면, 나는 이것을 알아 내려고 포기하고 현재 상황이 언제 다시 적용될 수 있는지에 대한 스크립트를 보관합니다. 그러나 나는 그들이 어떤 백업 솔루션을 가지고 있는지 궁금해하고있다. 네가 이걸 가져 왔을 때 내 마음이 바뀌었다. – NotMe