ODBC 모드 인증 방식 권한 확인
ODBC 백업 모드에는 두 가지 유형의 인증 방법이 있습니다. 신뢰할 수 있는 인증 및 MS SQL 인증. 다음 절차는 다음을 결정하는 데 도움이 될 수 있습니다:
- ODBC 백업 모드에서 MS SQL Server 데이터베이스 백업을 인증하는 데 사용되는 로그인 자격 증명에 올바른 권한이 있는 경우.
- 임시 폴더가 있는 드라이브에 백업 중에 데이터베이스 스풀링을 수용할 수 있는 충분한 공간이 있는지 확인하기 위해 스풀링된 데이터베이스의 크기를 확인합니다..
신뢰할 수 있는 인증
신뢰할 수 있는 인증의 로그인 자격 증명에 백업 작업을 위해 MS SQL Server 데이터베이스에 액세스하고 스풀링할 수 있는 올바른 권한이 있는지 확인하려면 다음 명령을 사용하는 것이 좋습니다:
osql -E -Q "DECLARE @dbname char(64) SET @dbname = 'xxx' BACKUP DATABASE @dbname TO DISK = '%temporary_path%\%database_name.txt' WITH SKIP"
Notes:
- %temporary_path%는 MS SQL Server 백업 세트의 임시 폴더 위치입니다(예: E:\temp).
- 'xxx'는 백업을 위해 선택한 데이터베이스의 이름입니다.
시나리오 예: 충분한 권한이 있는 Windows 사용자 계정을 사용하는 신뢰할 수 있는 인증
- 특정 계정(예: 관리자)을 사용하여 Windows에 로그인합니다.
- 명령 프롬프트를 엽니다.
- 다음 osql 명령을 사용합니다.
Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.
C:\Users\Administrator>osql -E -Q "DECLARE @dbname char(64) SET @dbname = 'adventureworks2016' BACKUP DATABASE @dbname TO DISK ='E:\temp\adventureworks2016.bak' WITH SKIP"
Processed 26240 pages for database 'adventureworks2016', file
'AdventureWorks2016_Data' on file 5.
Processed 2 pages for database 'adventureworks2016', file
'AdventureWorks2016_Log' on file 5.
BACKUP DATABASE successfully processed 26242 pages in 14.397 seconds (14.239 MB/sec).
C:\Users\Administrator>
위의 예에서,
- @dbname = 'adventureworks2016' - ‘adventureworks2016’ 은 백업을 위해 선택한 데이터베이스의 이름입니다.
- @dbname TO DISK ='E:\temp\adventureworks2016.bak' - ‘E:\temp’ 는 MS SQL Server 백업 세트의 임시 폴더입니다.
- 'adventureworks2016' 데이터베이스가 임시 폴더(E:\Temp)에 성공적으로 저장되면 계정에 올바른 권한이 있는 것으로 확인됩니다. 데이터베이스가 성공적으로 생성되었는지 확인하고 임시 드라이브에 백업 중에 데이터베이스 파일의 스풀링을 수용할 수 있는 충분한 공간이 있는지 확인하기 위해 스풀링된 데이터베이스의 크기를 얻으려면 다음 명령을 실행합니다.
C:\Users\Administrator>dir E:\Temp
Volume in drive E has no label.
Volume Serial Number is 16F4-EB51
Directory of E:\Temp
09/07/2020 11:18 AM DIR .
09/07/2020 11:18 AM DIR ..
09/07/2020 12:06 PM 1,075,228,160 adventureworks2016.bak
09/07/2020 11:18 AM 215,046,656 inventory.bak
09/04/2020 06:42 PM 4,024,832 master.bak
3 File(s) 1,429,402,815 bytes
2 Dir(s) 21,348,990,976 bytes free
C:\Users\Administrator>
시나리오 예: 잘못된 권한이 있는 계정을 사용하는 신뢰할 수 있는 인증
MS SQL 데이터베이스에 액세스할 수 있는 올바른 권한이 없는 Windows 로그인 계정을 사용할 때 다음 오류 메시지가 표시됩니다.
C:\Users\backup1>osql -E -Q "DECLARE @dbname char(64) SET @dbname = 'adventureworks2016' BACKUP DATABASE @dbname TO DISK ='E:\temp\adventureworks2016.bak' WITH SKIP"
[ODBC Driver 13 for SQL Server]Named Pipes Provider: Could not open a connection to SQL Server [2].
Login failed for user 'W2K16-MSSQL2K16\backup1'.
[ODBC Driver 13 for SQL Server]A network-related or instance-specific error
has occurred while establishing a connection to SQL Server. Server is not
found or not accessible. Check if instance name is correct and if SQL Server
is configured to allow remote connections. For more information see SQL Server
Books Online.
C:\Users\backup1>
위의 예에서 사용자 'backup1'은 올바른 권한이 없습니다. 따라서 MS SQL Server 연결을 설정할 수 없습니다.
MS SQL 인증
MS SQL 인증을 위한 로그인 자격 증명에 백업 작업을 위해 MS SQL Server 데이터베이스에 액세스하고 스풀링할 수 있는 올바른 권한이 있는지 확인하려면 다음 명령을 사용하는 것이 좋습니다:
osql -U USERNAME -P PASSWORD -Q "DECLARE @dbname char(64) SET @dbname = 'xxx' BACKUP DATABASE @dbname TO DISK = '%temporary_path%\%database_name.txt' WITH SKIP"
Notes:
- %temporary_path%는 MS SQL Server 백업 세트의 임시 폴더 위치입니다(예: E:\temp).
- 'xxx'는 백업을 위해 선택한 데이터베이스의 이름입니다.
- USERNAME은 MS SQL Server 계정의 사용자 이름입니다.
- PASSWORD는 MS SQL Server 계정의 비밀번호입니다.
예제 시나리오: 충분한 권한이 있는 계정을 사용한 MS SQL 인증
- 특정 계정(예: 관리자)을 사용하여 Windows에 로그인합니다.
- 명령 프롬프트를 엽니다.
- 다음 osql 명령을 사용합니다.
Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.
C:\Users\Administrator>osql -U sa -P abc123$% -Q "DECLARE @dbname char(64) SET @dbname = 'master' BACKUP DATABASE @dbname TO DISK = 'E:\temp\master.bak' WITH SKIP"
Processed 480 pages for database 'master', file 'master' on
file 2.
Processed 3 pages for database 'master', file 'mastlog' on
file 2.
BACKUP DATABASE successfully processed 483 pages in 0.785 seconds (4.802 MB/sec).
C:\Users\Administrator>
위의 예에서,
- osql -U sa - 'sa'는 MS SQL Server 계정의 기본 사용자 이름입니다.
- -P abc123$% - ‘abc123$%’ 는 MS SQL Server 계정의 비밀번호입니다.
- @dbname = 'master' - ‘master’ 는 백업을 위해 선택한 데이터베이스의 이름입니다.
- @dbname TO DISK = 'E:\temp\master.bak' - ‘E:\temp’ 는 MS SQL Server 백업 세트의 임시 폴더입니다.
- 'adventureworks2016' 데이터베이스가 임시 폴더(E:\Temp)에 성공적으로 저장되면 계정에 올바른 권한이 있는 것으로 확인됩니다. 데이터베이스가 성공적으로 생성되었는지 확인하고 임시 드라이브에 백업 중에 데이터베이스 파일의 스풀링을 수용할 수 있는 충분한 공간이 있는지 확인하기 위해 스풀링된 데이터베이스의 크기를 얻으려면 다음 명령을 실행합니다..
C:\Users\Administrator>dir E:\Temp
Volume in drive E has no label.
Volume Serial Number is 16F4-EB51
Directory of E:\Temp
09/07/2020 11:18 AM DIR .
09/07/2020 11:18 AM DIR ..
09/07/2020 12:06 PM 1,075,228,160 adventureworks2016.bak
09/07/2020 11:18 AM 215,046,656 inventory.bak
09/04/2020 06:42 PM 4,024,832 master.bak
3 File(s) 1,429,402,815 bytes
2 Dir(s) 21,348,990,976 bytes free
C:\Users\Administrator>
예제 시나리오: 잘못된 권한이 있는 계정을 사용한 MS SQL 인증
MS SQL 데이터베이스에 액세스할 수 있는 올바른 권한이 없는 MS SQL 계정을 사용할 때 다음 오류 메시지가 표시됩니다.
C:\Users\Administrator>osql -U mssql1 -P abc123$% -Q "DECLARE @dbname char(64) SET @dbname = 'master' BACKUP DATABASE @dbname TO DISK = 'E:\temp\master.bak' WITH SKIP"
[ODBC Driver 13 for SQL Server]Named Pipes Provider: Could not open a connection to SQL Server [2].
Login failed for user 'mssql1'.
[ODBC Driver 13 for SQL Server]A network-related or instance-specific error
has occurred while establishing a connection to SQL Server. Server is not
found or not accessible. Check if instance name is correct and if SQL Server
is configured to allow remote connections. For more information see SQL Server
Books Online.
C:\Users\Administrator>
위의 예에서 'mssql1'은 올바른 권한이 없는 MS SQL Server 계정의 사용자 이름입니다. 따라서 MS SQL Server 연결을 설정할 수 없습니다.