MSSQL 복원(Restore) 시 데이터베이스가 사용 중이어서 배타적으로 액세스 할 수 없습니다

MSSQL 복원(Restore) 시 데이터베이스가 사용 중이어서 배타적으로 액세스 할 수 없습니다



MSSQL DB 복원 시 아래와 같은 오류가 발생했을 경우 조치방법입니다.

Exclusive access could not be obtained because the database is in use.



서버 XXX에 대한 복원이(가) 실패했습니다. (Microsoft.SqlServer.SmoExtended)

추가정보 :

Transact-SQL 문 또는 일괄 처리를 실행하는 동안 예외가 발생했습니다.

(Microsoft.SqlServer.ConnectionInfo)

데이터베이스가 사용 중이어서 배타적으로 액세스 할 수 없습니다. RESTORE DATABASE이(가) 비정상적으로 종료됩니다. (Microsoft SQL Server, 오류: 3101)


이 오류가 발생하는 원인은 DB 복원(Restore) 시 아직 해당 DB에 접속되어 있는 세션이 남아있기 때문입니다. 아무도 접근하지 못하도록 DB 접근을 제한하여 복원 작업을 진행할 수 있습니다.
복원이 완료되면 자동으로 접근제한 설정도 해제됩니다.
아래의 과정을 순서대로 따라하시면 DB접근을 제한하여 DB복원을 마무리할 수 있습니다.


1. 복원(Restore) 하려는 DB를 마우스 오른쪽 클릭하여 속성을 클릭합니다.







2. 좌측 카테고리 중 옵션 메뉴를 선택 후 액세스 제한 항목의 MULTI_USER, SINGLE_USER, RESTRICTED_USER 중 RESTRICTED_USER(제한된 사용자)로 선택 후 확인 버튼을 클릭합니다.





3. 데이터베이스 속성을 변경하려면 SQL Server에서 데이터베이스에 대한 다른 모든 연결을 닫아야합니다. 다른 모든 연결을 닫고 속성을 변경하시겠습니까? 라는 물음이 나오면 예 버튼을 클릭합니다.







4. 변경된 속성이 적용되면 DB명 옆에 제한된 사용자 라고 표시되어 있는 것을 확인할 수 있습니다.







5. 이제 복원을 위한 준비가 되었으니 복원 작업을 진행하시면 아래와 같이 데이터베이스의 복원이 완료되었습니다. 라는 완료 메시지를 확인할 수 있습니다.






출처:
http://h5bak.tistory.com/283 [이준빈은 호박머리]
C# UTF-8 문자열 Base64 인코딩/디코딩

C# UTF-8 문자열 Base64 인코딩/디코딩


C#에서는 System 네임스페이스의 Convert 클래스에서 기본적으로 Base64 문자열로 강제변환하는 메소드를 제공한다.
이는 다만 byte형식의 데이터만을 변환 가능하므로 문자열을 Base64로 변환하려면 문자열을 byte배열로 변환해서 사용해야 한다.
한글 문자열일 경우 텍스트인코딩 형식에 따라 깨짐현상이 발생할 수 있으므로 텍스트인코딩을 요즘 대부분 사용하는 UTF-8 형식으로 이러한 일련의 과정들을 사용하기 편리하도록 메소드로 구현 하였다.

using System;

namespace MyProject
{
    public class SecurityUtil
    {
        #region Base64
        public static string Base64Encode(string data)
        {
            try
            {
                byte[] encData_byte = new byte[data.Length];
                encData_byte = System.Text.Encoding.UTF8.GetBytes(data);
                string encodedData = Convert.ToBase64String(encData_byte);
                return encodedData;
            }
            catch (Exception e)
            {
                throw new Exception("Error in Base64Encode: " + e.Message);
            }
        }

        public static string Base64Decode(string data)
        {
            try
            {
                System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding();
                System.Text.Decoder utf8Decode = encoder.GetDecoder();

                byte[] todecode_byte = Convert.FromBase64String(data);
                int charCount = utf8Decode.GetCharCount(todecode_byte, 0, todecode_byte.Length);
                char[] decoded_char = new char[charCount];
                utf8Decode.GetChars(todecode_byte, 0, todecode_byte.Length, decoded_char, 0);
                string result = new String(decoded_char);
                return result;
            }
            catch (Exception e)
            {
                throw new Exception("Error in Base64Decode: " + e.Message);
            }
        }
        #endregion

        public static void Main(string[] args)
        {
            string testingStr = "가나다라마바사아자차카타파하";
            string encodedStr = SecurityUtil.Base64Encode(testingStr);
            string decodedStr = SecurityUtil.Base64Encode(encodedStr);
            Console.WriteLine(encodedStr);
            Console.WriteLine(decodedStr);
        }
    }
}

출처 :
https://m.blog.naver.com/PostView.nhn?blogId=csaiur&logNo=220224658525&proxyReferer=https%3A%2F%2Fwww.google.co.jp%2F
IIS 목록 기본 설정 및 바인딩 백업 및 복원(Appcmd.exe 이용)

IIS 목록 기본 설정 및 바인딩 백업 및 복원(Appcmd.exe 이용)

IIS 목록 기본 설정 및 바인딩 백업 및 복원(Appcmd.exe 이용)

1. 백업

Cd C:\Windows\System32\inetsrv
위 경로에서
./appcmd.exe add backup "My Backup Name"

1. 복원
Cd C:\Windows\System32\inetsrv
위 경로에서
./appcmd.exe restore backup "My Backup Name"

1. 백업삭제
Cd C:\Windows\System32\inetsrv
위 경로에서
./appcmd.exe delete backup "My Backup Name"



주의 사항 IIS 설정이 백업 되는 것이지 웹페이지 파일 및 FTP 파일이 백업 및 복원 되는것은 아님.

출처 : 
https://m.blog.naver.com/PostView.nhn?blogId=dodobob27&logNo=80202329212&proxyReferer=https%3A%2F%2Fwww.google.co.jp%2F
원하는 자리수만 가져오기

원하는 자리수만 가져오기

collection.Skip(Math.Max(0, collection.Count() - N));

public static class MiscExtensions
{
    // Ex: collection.TakeLast(5);
    public static IEnumerable<T> TakeLast<T>(this IEnumerable<T> source, int N)
    {
        return source.Skip(Math.Max(0, source.Count() - N));
    }
}