MS 4

MSSQL 백업/복구 정리

데이터베이스를 생성하면 mdf 파일과 ldf 파일이 생성이 된다. mdf 파일은 데이터파일이고, ldf 파일은 로그파일인데, mdf에는 실제 데이터가 저장이 된다. 그리고, ldf 파일은 직전 로그백업 이후의 변경 사항에 대해 저장이 된다. 데이터베이스는 어떤 백업을 할지에 따라 복구모델을 지정해줘야 한다. ​ ​ 데이터베이스 복구모델 ​ 전체 복구모델(Full Recovery Model) 로그백업을 할 수 있게 해준다. 최종 상태 뿐만 아니라 원하는 시점 까지만 복구하는것도 가능하다. ​ 대량로그 복구모델 (Bulked-Log Recovery Model) 로그백업을 할 수 있는 것은 “전체 복구모델”과 같으나, 특정 시점 복구는 지원하지 않는다. 단, 그만큼 속도 면에서 “전체 복구모델”보다 유리하다...

MS 2024.01.04

USB 파일 복사시 Lastwritetimeutc 에 차이가 나는 생기는 원인

파일에서 마우스 우클릭해서 속성에 들어가면 파일이 언제 만들어졌는지, 언제 마지막으로 수정되었는지에 대한 정보를 볼 수 있다. 그런데, 꼭같은 파일이어도 디스크의 포맷방식에 따라 저장되는 시간이 달라질 수 있으므로, 프로그래밍시 이 시간정보를 이용할 경우 조심해야 될 내용으로 생각이 된다. ​ 구글 드라이브로 소스파일들을 동기화하여 회사와 집에서 작업을 주로 하는데, 어느날 집에서 작업한 파일이 동기화가 되어 있지 않음을 우연히 확인하고 실제 작업경로를 동기화 폴더로 사용하기에는 위험부담이 있다는 것을 느꼈다. ​ 그래서, 간단한 폴더 백업툴을 만들어 D드라이브와 USB에 동시에 백업하는 프로그램을 만들었다. 복잡한 로직을 사용한 것은 아니고, 그냥 파일이 없어졌으면 백업본에서 지우고, 파일이 새로 생긴..

MS 2024.01.04

C# 텔레그램 메시지 보내기(No 라이브러리)

Nuget에 있는 Telegram.Bot 은 닷넷 4.6 이상 지원이 된다. 그래서, 닷넷4 에서는 사용할수 없다. 그래서 좀 불편하지만, 텔레그램 URL을 직접 호출해주는 식으로 구현을 한 소스를 남겨둔다. ​ 필요하신분 테스트해보시길.. using System.Web; // HttpUtility using System.Net; // WebClient string apikey_발신로봇 = "~~~~"; // 발신로봇의 api-key string chatid_수신자 = "~~~~"; // 수신자의 chat-id string message = HttpUtility.UrlEncode(msg.Replace("\r\n", "\n").Replace("\\n", "\n")); string url = $"https:..

MS 2024.01.04

system32폴더와 syswow64폴더

64비트 윈도우즈에서 GetSystemDirectory 함수를 호출하면 어떤 결과가 나올까. 만약 32비트 프로세스에서 실행을 한다면 c:\windows\system32 가 나오게 된다. 그리고, 64비트 프로세스에서도 마찬가지로 c:\windows\system32 가 나오게 된다. 하지만 이건 같은것이 아니다. 32비트 프로세스에서 c:\windows\system32 폴더에 뭔가를 쓰게 되면 실질적으로는 c:\windows\syswow64 폴더에 써지게 된다. 즉, 내부적으로 저렇게 리다이렉트가 되는 것이다. 경로를 코드상에 c:\windows\system32 로 하드코딩한 경우도 있을 것이고 GetSystemDirectory 같은 거로 구했을 수도 있을 것이다. 두 경우 다 보이기에는 c:\windo..

MS 2024.01.04