SQL Server 사용 피드백 모음에 대한 로컬 감사Local Audit for SQL Server Usage Feedback Collection

이 항목 적용 대상: 예SQL Server없습니다Azure SQL 데이터베이스없습니다Azure SQL 데이터 웨어하우스 없습니다 병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

소개Introduction

Microsoft SQL Server에는 컴퓨터 또는 장치에 대한 정보("표준 컴퓨터 정보")를 수집하여 Microsoft에 보낼 수 있는 인터넷 사용 기능이 포함되어 있습니다.Microsoft SQL Server contains Internet-enabled features that can collect and send information about your computer or device ("standard computer information") to Microsoft. SQL Server Usage Feedback collection (SQL Server 사용 피드백 모음)의 로컬 감사 구성 요소는 서비스에서 수집한 데이터를 지정된 폴더에 기록하여 Microsoft로 보내는 데이터(로그)를 나타냅니다.The Local Audit component of SQL Server Usage Feedback collection writes data collected by the service to a designated folder, representing the data (logs) that will be sent to Microsoft. 로컬 감사의 목적은 고객들이 규정 준수 또는 개인 정보 유효성 검사의 이유로 이 기능을 사용하여 Microsoft에서 수집하는 모든 데이터를 확인하기 위함입니다.The purpose of the Local Audit is to allow customers to see all data Microsoft collects with this feature, for compliance, regulatory or privacy validation reasons.

SQL Server 2016 CU2부터 로컬 감사는 SQL Server 데이터베이스 엔진 및 Analysis Services(SSAS)에 대한 인스턴스 수준에서 구성할 수 있습니다.As of SQL Server 2016 CU2, Local Audit is configurable at instance level for SQL Server Database Engine and Analysis Services (SSAS). SQL Server 2016 CU4 및 SQL Server 2016 SP1에서 로컬 감사는 SSIS(SQL Server Integration Services)에 대해서도 사용할 수 있습니다.In SQL Server 2016 CU4 and SQL Server 2016 SP1, Local Audit is also enabled for SQL Server Integration Services (SSIS). 설정 중 설치된SQL Server 구성 요소와 설정 이후 다운로드하거나 설치한 SQL Server 도구에는 사용 피드백 모음에 대한 로컬 감사 기능이 없습니다.Other SQL Server components that get installed during Setup and SQL Server Tools that are downloaded or installed after Setup do not have Local Audit capability for usage feedback collection.

필수 구성 요소Prerequisites

다음은 각 SQL Server 인스턴스에서 로컬 감사를 사용 하도록 설정하는 데 필요한 필수 구성 요소입니다.The following are prerequisites to enable Local Audit on each SQL Server instance:

  1. 인스턴스는 SQL Server 2016 RTM CU2 이상으로 패치됩니다.The instance is patched to SQL Server 2016 RTM CU2 or above.

  2. 사용자는 레지스트리 키 추가 및 수정, 폴더 만들기, 폴더 보안 관리 및 Windows 서비스를 중지/시작이 가능한 액세스 권한이 부여된 시스템 관리자 또는 역할이어야 합니다.User must be a System Administrator or a role with access to add and modify Registry Key, create folders, manage folder security and stop/start a Windows Service.

로컬 감사를 켜기 전 사전 구성 단계Pre-configuration Steps Prior To Turning On Local Audit

로컬 감사를 켜기 전에 시스템 관리자는 다음을 수행해야 합니다.Before turning on Local Audit, a system administrator needs to:

  1. SQL Server 인스턴스 이름 및 SQL Server CEIP 원격 분석 서비스 로그온 계정을 파악합니다.Know the SQL Server instance name and the SQL Server CEIP Telemetry service logon account.

  2. 로컬 감사 파일에 대한 새 폴더를 구성합니다.Configure a new folder for the Local Audit files.

  3. SQL Server CIEP 원격 분석 서비스 로그온 계정에 권한을 부여합니다.Grant permissions to the SQL Server CIEP Telemetry service logon account.

  4. 레지스트리 키 설정을 만들어 로컬 감사 대상 디렉터리를 구성합니다.Create a registry key setting to configure Local Audit target directory.

    데이터베이스 엔진 및 Integration Services의 경우 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL14.<INSTANCENAME>\CPE에 키를 만듭니다.For Database Engine and Integration Services create the key at HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL14.<INSTANCENAME>\CPE.

    Analysis Services의 경우 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSAS14.<INSTANCENAME>\CPE에 키를 만듭니다.For Analysis Services create the key at HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSAS14.<INSTANCENAME>\CPE.

SQL Server CEIP 서비스 로그온 계정 가져오기Get the SQL Server CEIP Service Logon Account

SQL Server에 대한 CEIP 원격 분석 서비스 로그온 계정을 얻으려면 다음 단계를 수행합니다.Do the following steps to get the SQL Server CEIP Telemetry service logon account

  1. 서비스 를 시작하고 Windows 단추를 클릭한 다음 services.msc를 입력합니다.Launch Services - click on the Windows button and type services.msc.

  2. 적절한 서비스로 이동합니다.Navigate to the appropriate service. 예를 들어 데이터베이스 엔진의 경우 SQL Server CEIP 서비스 <인스턴스 이름>에서 키를 만듭니다.For example, for the database engine locate SQL Server CEIP service <instance name>. Analysis Services의 경우 SQL Server Analysis Services CEIP <인스턴스 이름>을 찾습니다.For Analysis Services locate SQL Server Analysis Services CEIP <instance name>. Integration Services의 경우 SQL Server Integration Services CEIP 서비스 13을 찾습니다.For Integration Services locate SQL Server Integration Services CEIP service 13.

  3. 서비스를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.Right-click on the service and choose Properties.

  4. 로그온 탭을 클릭합니다. 로그온 계정은 이 계정에 나열되어 있습니다.Click on the Log On tab. The Logon account is in listed in This Account.

로컬 감사 파일에 대한 새 폴더를 구성합니다.Configure a new folder for the Local Audit files.

로컬 감사에서 로그를 작성할 새 폴더(로컬 감사 디렉터리)를 만듭니다.Create a new folder (Local Audit Directory) where the Local Audit will write the logs. 예를 들어 데이터베이스 엔진의 기본 인스턴스에 대한 로컬 감사 디렉터리의 전체 경로는 C:\SQLCEIPAudit\MSSQLSERVER\DB\가 됩니다.For example, the complete path to the Local Audit Directory for a default instance of the database engine would be: C:\SQLCEIPAudit\MSSQLSERVER\DB\.

참고: 감사 기능과 패치를 허용하여 SQL Server의 잠재적인 문제를 방지하려면 SQL Server 설치 경로 외부에 로컬 감사 디렉터리 경로를 구성하세요.Note: Configure the directory path for Local Audit outside the SQL Server installation path to avoid allowing auditing functionality and patching to cause potential problems with SQL Server.

디자인 결정Design Decision 권장Recommendation
확인란Checkbox 공간 가용성Space availability 약 10개의 데이터베이스를 사용하는 보통의 작업에서 인스턴스당 하루 약 2MB의 디스크 공간을 계획합니다.On moderate workload with about 10 databases, plan on about 2 MB of disk space per day per instance.
확인란Checkbox 개별 디렉터리Separate directories 각 인스턴스에 대한 디렉터리를 만듭니다.Create a directory for each instance. 예를 들어 MSSQLSERVER의 SQL Server 인스턴스의 경우 c:\SQLCEIPAudit\MSSQLSERVER\DB\를 사용합니다.For example, use C:\SQLCEIPAudit\MSSQLSERVER\DB\ for a SQL Server instance named MSSQLSERVER. 이렇게 하면 파일 관리가 간소화됩니다.This simplifies file management.
확인란Checkbox 개별 폴더Separate folders 각 서비스에 대해 특정 폴더를 사용합니다.Use a specific folder for each service. 예를 들어 지정된 인스턴스 이름에 대해 데이터베이스 엔진에 하나의 폴더를 설정합니다.For example for a given instance name, have one folder for the database engine. SSAS 인스턴스에서 동일한 인스턴스 이름을 사용할 경우 SSAS에 별도 폴더를 만듭니다.If an instance of SSAS uses the same instance name, create a separate folder for SSAS. 데이터베이스 엔진 및 Analysis Services를 모두 같은 폴더에 구성하면 모든 로컬 감사에서 두 인스턴스 모두 동일한 로그 파일에 기록하게 됩니다.Having both Database Engine and Analysis Services instances configured to the same folder will cause all the Local Audit to write to the same log file from both instances.
확인란Checkbox SQL Server CIEP 원격 분석 서비스 로그온 계정에 권한 부여Grant permissions to the SQL Server CIEP Telemetry service logon account SQL Server CEIP 원격 분석 서비스 로그온 계정에 대한 폴더 내용 보기, 읽기쓰기 액세스를 사용하도록 설정Enable List folder contents, Read and Write access to the SQL Server CEIP Telemetry service logon account

SQL Server CIEP 원격 분석 서비스 로그온 계정에 권한 부여Grant permissions to the SQL Server CIEP Telemetry service logon account

  1. 파일 탐색기에서 새 폴더가 있는 위치로 이동합니다.In File Explorer, navigate to the location where the new folder is located.

  2. 새 폴더를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.Right-click the new folder and choose Properties.

  3. 보안 탭에서 편집 관리 권한을 클릭합니다.On the Security tab, click Edit manage Permission.

  4. 추가 를 클릭하고 SQL Server CEIP 원격 분석 서비스의 자격 증명을 입력합니다(예: NT Service\SQLTELEMETRY).Click Add and type the credential of the SQL Server CEIP Telemetry Service, for example NT Service\SQLTELEMETRY.

  5. 이름 확인 을 클릭하여 제공한 이름의 유효성을 검사 하고 확인을 클릭합니다.Click on Check Names to validate the name you provided, then click OK.

  6. 사용 권한 대화 상자에서 SQL Server CEIP 원격 분석 서비스 로그온 계정을 선택하고 폴더 내용 보기, 읽기쓰기를 클릭합니다.On the Permission dialog box, choose the Log On account to SQL Server CEIP Telemetry service and click on List folder contents, Read and Write.

  7. 확인 을 클릭하여 권한 변경 내용을 즉시 적용합니다.Click OK to apply the permission changes immediately.

레지스트리 키 설정을 만들어 로컬 감사 대상 디렉터리를 구성합니다.Create a registry key setting to configure Local Audit target directory.

  1. regedit를 실행합니다.Launch regedit.

  2. 적절한 CPE 경로로 이동합니다.Navigate to the appropriate CPE path.

    데이터베이스 엔진 및 Integration Services의 경우 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL14.<INSTANCENAME>\CPE를 사용합니다.For Database Engine and Integration Services use HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL14.<INSTANCENAME>\CPE.

    Analysis Services의 경우 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSAS14.<INSTANCENAME>\CPE를 사용합니다.For Analysis Services use HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSAS14.<INSTANCENAME>\CPE.

  3. CPE 경로를 마우스 오른쪽 단추로 클릭하고 새로 만들기를 선택합니다.Right-click on the CPE path and choose New. 문자열 값을 클릭합니다.Click String Value.

  4. 새 레지스트리 키의 이름을 UserRequestedLocalAuditDirectory로 지정합니다.Name the new registry key UserRequestedLocalAuditDirectory.

로컬 감사를 설정 또는 해제Turning Local Audit on or off

사전 구성 단계를 완료한 후에 로컬 감사를 켤 수 있습니다.After you have completed the preconfiguration steps you can turn Local Audit on. 이를 위해 레지스트리 키를 수정할 수 있는 액세스 권한이 있는 시스템 관리자 계정 또는 비슷한 역할을 사용하여 다음 단계에 따라 로컬 감사를 켜거나 끕니다.To do this, use a System Administrator account or a similar role with access to modifying Registry Keys to turn Local Audit on or off by following the steps below.

  1. regedit를 실행합니다.Launch regedit.

  2. 적절한 CPE 경로로 이동합니다.Navigate to the appropriate CPE path.

    데이터베이스 엔진 및 Integration Services의 경우 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL14.<INSTANCENAME>\CPE를 사용합니다.For Database Engine and Integration Services use HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL14.<INSTANCENAME>\CPE.

    Analysis Services의 경우 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSAS14.<INSTANCENAME>\CPE를 사용합니다.For Analysis Services use HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSAS14.<INSTANCENAME>\CPE.

  3. UserRequestedLocalAuditDirectory 를 마우스 오른쪽 단추로 클릭하고 수정을 클릭합니다.Right-click on UserRequestedLocalAuditDirectory and click Modify.

  4. 로컬 감사를 켜려면 로컬 감사 경로를 입력합니다(예: c:\SQLCEIPAudit\MSSQLSERVER\DB\).To turn Local Audit on, type the Local Audit path, for example C:\SQLCEIPAudit\MSSQLSERVER\DB\.

    로컬 감사를 끄려면 UserRequestedLocalAuditDirectory 값을 비워 둡니다.To turn Local Audit off, empty the value in UserRequestedLocalAuditDirectory.

  5. regedit를 닫습니다.Close regedit.

서비스가 이미 실행 중인 경우 SQL Server CEIP에서는 로컬 감사 설정을 즉시 인식해야 합니다.SQL Server CEIP should recognize the Local Audit setting immediately if the service is already running. SQL Server CEIP 서비스를 시작하기 위해 Windows 서비스 시작 또는 중지에 대한 액세스 권한이 있는 시스템 관리자 또는 사용자는 다음 단계를 수행할 수 있습니다.To start the SQL Server CEIP Service, System Administrator or someone who has access to start or stop Windows Services can follow the steps below:

  1. Windows 단추를 클릭하고 Services를 입력하여 서비스 응용 프로그램을 시작합니다.Launch Services application, by clicking on the Windows button and type Services.

  2. 적절한 서비스로 이동합니다.Navigate to the appropriate service.

    데이터베이스 엔진의 경우 SQL Server CEIP service (<INSTANCENAME>)를 사용합니다.For Database Engine, use SQL Server CEIP service (<INSTANCENAME>).

    Analysis Services의 경우 SQL Server Analysis Services CEIP (<INSTANCENAME>)를 사용합니다.For Analysis Services, use SQL Server Analysis Services CEIP (<INSTANCENAME>).

  3. 서비스를 마우스 오른쪽 단추로 클릭하고 다시 시작을 선택합니다.Right-click on the service and choose Restart.

  4. 서비스의 상태가 실행 중인지 확인합니다.Verfiy that the status of the service is Running.

로컬 감사는 하루에 하나의 로그 파일을 생성합니다.Local Audit will produce one log file per day. 로그 파일 형식은 <YYYY-MM-DD>.json입니다.The log files will be in a form of <YYYY-MM-DD>.json. 예를 들면 2016-07-12.json입니다.For example, 2016-07-12.json. 지정된 디렉터리에 해당 요일에 대한 기존 파일이 있으면 로컬 감사는 여기에 추가합니다.If there is an existing file for the day in the designated directory, Local Audit will append to it. 그렇지 않으면 하루에 대해 새 파일이 만들어집니다.Otherwise, it will create a new file for the day.

참고: 로컬 감사를 사용하도록 설정한 후 처음으로 로그 파일에서 기록할 때 최대 5분까지 걸릴 수 있습니다.Note: After enabling Local Audit it may take up to 5 minutes for the log file to be written for the first time.

유지 관리Maintenance

  1. 로컬 감사에서 기록된 파일별로 디스크 공간 사용을 제한하려면 정책이나 일반 작업을 설정하여 오래 되어 불필요한 파일을 제거하도록 로컬 감사 디렉터리를 정리하세요.To limit disk space usage by the files written by Local Audit, setup a policy or a regular job to clean up the Local Audit Directory to remove older, unneeded files.

  2. 적절한 사람만 액세스할 수 있도록 로컬 감사 디렉터리 경로를 보호합니다.Secure the Local Audit Directory path so that it is only accessible by the appropriate people. How to configure SQL Server 2016 to send feedback to Microsoft(Microsoft에 피드백을 보내도록 SQL Server 2016를 구성하는 방법)에 설명된 대로 로그 파일에 정보가 포함되어 있습니다.Please note that the log files contain information as outlined in How to configure SQL Server 2016 to send feedback to Microsoft. 이 파일에 대한 액세스 권한은 대부분의 조직 멤버는 읽을 수 없습니다.Access to this file should prevent most members of your organization from reading it.

로컬 감사 출력 데이터 구조의 데이터 사전Data Dictionary of Local Audit Output Data Structure

  • 감사 로그 파일은 JSON 형식으로 emitTime에 Microsoft로 전송되는 데이터 요소를 나타내는 개체(행) 집합이 포함되어 있습니다.Local Audit log files are in JSON, containing a set of objects (rows) representing data points that are sent back to Microsoft at emitTime.

  • 각 행 앞에는 schemaVersion에서 식별한 특정 스키마가 붙습니다.Each row follows a specific schema identified by schemaVersion.

  • 각 행은 sessionID로 식별하는 SQLCEIP 서비스 세션의 출력입니다.Each row is an output of a SQLCEIP service session identified as sessionID.

  • 행은 순서대로 생략되며 시퀀스에서 식별됩니다.Rows are emitted in sequence, identified by sequence.

  • 각 데이터 요소 행에는 traceName 로 식별되어 T-SQL 쿼리, XE 세션 또는 추적 형식과 관련된 메시지일 수 있는 queryIdentifier출력이 포함되어 있습니다.Each data point row contains the output of a queryIdentifier which can be a T-SQL query, an XE session or a message related to a type of trace, identified as traceName.

  • queryIdentifiersquerySetVersion과 함께 그룹화되어 버전이 지정됩니다.queryIdentifiers are grouped and versioned together with querySetVersion.

  • data 에는 queryTimeInTicks를 수행한 해당 쿼리 실행의 출력이 포함됩니다.data contains the output of the corresponding query execution which took queryTimeInTicks.

  • T-SQL 쿼리에 대한queryIdentifiers 에는 쿼리에서 저장된 T-SQL 쿼리 정의가 있습니다.queryIdentifiers for T-SQL queries have the T-SQL query definition stored in query.

논리 로컬 감사 정보 계층 구조Logical Local Audit information hierarchy 관련 열Related columns
머리글Header emitTime, schemaVersionemitTime, schemaVersion
컴퓨터Machine hostname, domainHash, sqmID, operatingSystemhostname, domainHash, sqmID, operatingSystem
인스턴스Instance instanceName, correlationID, clientVersioninstanceName, correlationID, clientVersion
SessionSession sessionID, traceNamesessionID, traceName
QueryQuery sequence, querySetVersion, queryIdentifier, query, queryTimeInTickssequence, querySetVersion, queryIdentifier, query, queryTimeInTicks
dataData datadata

이름/값 쌍 정의 및 예제Name/Value Pairs Definition and Examples

아래 나열된 열은 로컬 감사 파일 출력 순서를 나타냅니다.The columns listed below represents the order of the Local Audit file output. SHA 256을 사용하는 단방향 해시를 통해 아래의 다양한 열이 익명 값으로 처리됩니다.One-way hash with SHA 256 is used to anonymized values for a number of the columns below.

이름Name DescriptionDescription 예제 값Example values
hostnamehostname SQL Server를 설치하는 익명 처리된 컴퓨터 이름Anonymized machine name where SQL Server is installed de3b3769a63970b63981ab7a956401388962c986bfd39d371f5870d800627d11de3b3769a63970b63981ab7a956401388962c986bfd39d371f5870d800627d11
domainHashdomainHash SQL Server 인스턴스를 호스트하는 컴퓨터의 익명 처리된 도메인 해시Anonymized domain hash of the machine hosting SQL Server instance de3b3769a63970b63981ab7a956401388962c986bfd39d371f5870d800627d11de3b3769a63970b63981ab7a956401388962c986bfd39d371f5870d800627d11
sqmIdsqmId SQL Server를 설치한 컴퓨터를 나타내는 식별자Identifier representing the machine where SQL Server is installed 02AF58F5-753A-429C-96CD-3900E90DB99002AF58F5-753A-429C-96CD-3900E90DB990
INSTANCENAMEinstanceName 익명으로 처리되는 SQL Server 인스턴스 이름Anonymized SQL Server instance name e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
schemaVersionSchemaVersion SQLCEIP의 스키마 버전Schema version of SQLCEIP 33
emitTimeemitTime 데이터 요소를 내보내는 시간(UTC)Data point emit time in UTC 2016-09-08T17:20:22.1124269Z2016-09-08T17:20:22.1124269Z
sessionIDsessionId SQLCEIP 서비스를 제공하는 세션 식별자Session identifier to service SQLCEIP service 89decf9a-ad11-485c-94a7-fefb3a02ed8689decf9a-ad11-485c-94a7-fefb3a02ed86
correlationIdcorrelationId 추가 식별자에 대한 자리 표시자Place holder for an additional identifier 00
시퀀스sequence 전송 세션 내에서 데이터 요소의 시퀀스 번호Sequence number of the data points sent within the session 1515
clientVersionclientVersion SQL Server 인스턴스 버전SQL Server instance version 13.0.2161.3 ((SQL16_RTM_QFE-CU).160907 1223)13.0.2161.3 ((SQL16_RTM_QFE-CU).160907-1223)
operatingSystemoperatingSystem SQL Server 인스턴스가 설치되어 있는 OS 버전The OS version where SQL Server instance is installed Microsoft Windows Server 2012 R2 DatacenterMicrosoft Windows Server 2012 R2 Datacenter
querySetVersionquerySetVersion 쿼리 정의의 그룹 버전Version of a group of query definitions 1.0.0.01.0.0.0
queryIdentifiertraceName 추적 범주: (SQLServerXeQueries, SQLServerPeriodicQueries, SQLServerOneSettingsException)Categories of traces: (SQLServerXeQueries, SQLServerPeriodicQueries, SQLServerOneSettingsException) SQLServerPeriodicQueriesSQLServerPeriodicQueries
traceNamequeryIdentifier 쿼리 식별자An identifier of the query SQLServerProperties.002SQLServerProperties.002
datadata T-SQL 쿼리, XE 세션 또는 응용 프로그램의 출력으로 queryIdentifier에서 수집된 정보 출력The output of the information collected on queryIdentifier as an output of T-SQL query, XE session or the application [{"Collation": "SQL_Latin1_General_CP1_CI_AS","SqlFTinstalled": "0" "SqlIntSec": "1","IsSingleUser": "0","SqlFilestreamMode": "0","SqlPbInstalled": "0","SqlPbNodeRole": "","SqlVersionMajor": "13","SqlVersionMinor": "0","SqlVersionBuild": "2161","ProductBuildType": "","ProductLevel": "RTM","ProductUpdateLevel": "CU2","ProductUpdateReference": "KB3182270","ProductRevision": "3","SQLEditionId": "-1534726760","IsClustered": "0","IsHadrEnabled": "0","SqlAdvAInstalled": "0","PacketReceived": "1210","Version": "Microsoft SQL Server 2016 (RTM-CU2) (KB3182270) - 13.0.2161.3 (X64) \n\tSep 7 2016 14:24:16 \n\tCopyright (c) Microsoft Corporation\n\tStandard Edition (64-bit) on Windows Server 2012 R2 Datacenter 6.3 \u003cX64\u003e (Build 9600: ) (Hypervisor)\n"}],[{"Collation": "SQL_Latin1_General_CP1_CI_AS","SqlFTinstalled": "0" "SqlIntSec": "1","IsSingleUser": "0","SqlFilestreamMode": "0","SqlPbInstalled": "0","SqlPbNodeRole": "","SqlVersionMajor": "13","SqlVersionMinor": "0","SqlVersionBuild": "2161","ProductBuildType": "","ProductLevel": "RTM","ProductUpdateLevel": "CU2","ProductUpdateReference": "KB3182270","ProductRevision": "3","SQLEditionId": "-1534726760","IsClustered": "0","IsHadrEnabled": "0","SqlAdvAInstalled": "0","PacketReceived": "1210","Version": "Microsoft SQL Server 2016 (RTM-CU2) (KB3182270) - 13.0.2161.3 (X64) \n\tSep 7 2016 14:24:16 \n\tCopyright (c) Microsoft Corporation\n\tStandard Edition (64-bit) on Windows Server 2012 R2 Datacenter 6.3 \u003cX64\u003e (Build 9600: ) (Hypervisor)\n"}],
Queryquery 해당하는 경우 데이터를 생성하는 queryIdentifier와 관련된 T-SQL 쿼리 정의.If applicable, the T-SQL query definition related to the queryIdentifier that produces data. 이 구성 요소는 SQL Server CEIP 서비스에서 업로드되지 않습니다.This component does not get uploaded by SQL Server CEIP service. 고객에 대한 참조로만 로컬 감사에 포함됩니다.It is included in Local Audit as a reference to customers only. SELECT\n SERVERPROPERTY(\u0027Collation\u0027) AS [Collation],\n SERVERPROPERTY(\u0027IsFullTextInstalled\u0027) AS [SqlFTinstalled],\n SERVERPROPERTY(\u0027IsIntegratedSecurityOnly\u0027) AS [SqlIntSec],\n SERVERPROPERTY(\u0027IsSingleUser\u0027) AS [IsSingleUser],\n SERVERPROPERTY (\u0027FileStreamEffectiveLevel\u0027) AS [SqlFilestreamMode],\n SERVERPROPERTY(\u0027IsPolybaseInstalled\u0027) AS [SqlPbInstalled],\n SERVERPROPERTY(\u0027PolybaseRole\u0027) AS [SqlPbNodeRole],\n SERVERPROPERTY(\u0027ProductMajorVersion\u0027) AS [SqlVersionMajor],\n SERVERPROPERTY(\u0027ProductMinorVersion\u0027) AS [SqlVersionMinor],\n SERVERPROPERTY(\u0027ProductBuild\u0027) AS [SqlVersionBuild],\n SERVERPROPERTY(\u0027ProductBuildType\u0027) AS ProductBuildType,\n SERVERPROPERTY(\u0027ProductLevel\u0027) AS ProductLevel,\n SERVERPROPERTY(\u0027ProductUpdateLevel\u0027) AS ProductUpdateLevel,\n SERVERPROPERTY(\u0027ProductUpdateReference\u0027) AS ProductUpdateReference,\n RIGHT(CAST(SERVERPROPERTY(\u0027ProductVersion\u0027) AS NVARCHAR(30)),CHARINDEX(\u0027.\u0027, REVERSE(CAST(SERVERPROPERTY(\u0027ProductVersion\u0027) AS NVARCHAR(30)))) - 1) AS ProductRevision,\n SERVERPROPERTY(\u0027EditionID\u0027) AS SQLEditionId,\n SERVERPROPERTY(\u0027IsClustered\u0027) AS IsClustered,\n SERVERPROPERTY(\u0027IsHadrEnabled\u0027) AS IsHadrEnabled,\n SERVERPROPERTY(\u0027IsAdvancedAnalyticsInstalled\u0027) AS [SqlAdvAInstalled],\n @@PACK_RECEIVED AS PacketReceived,\n @@VERSION AS VersionSELECT\n SERVERPROPERTY(\u0027Collation\u0027) AS [Collation],\n SERVERPROPERTY(\u0027IsFullTextInstalled\u0027) AS [SqlFTinstalled],\n SERVERPROPERTY(\u0027IsIntegratedSecurityOnly\u0027) AS [SqlIntSec],\n SERVERPROPERTY(\u0027IsSingleUser\u0027) AS [IsSingleUser],\n SERVERPROPERTY (\u0027FileStreamEffectiveLevel\u0027) AS [SqlFilestreamMode],\n SERVERPROPERTY(\u0027IsPolybaseInstalled\u0027) AS [SqlPbInstalled],\n SERVERPROPERTY(\u0027PolybaseRole\u0027) AS [SqlPbNodeRole],\n SERVERPROPERTY(\u0027ProductMajorVersion\u0027) AS [SqlVersionMajor],\n SERVERPROPERTY(\u0027ProductMinorVersion\u0027) AS [SqlVersionMinor],\n SERVERPROPERTY(\u0027ProductBuild\u0027) AS [SqlVersionBuild],\n SERVERPROPERTY(\u0027ProductBuildType\u0027) AS ProductBuildType,\n SERVERPROPERTY(\u0027ProductLevel\u0027) AS ProductLevel,\n SERVERPROPERTY(\u0027ProductUpdateLevel\u0027) AS ProductUpdateLevel,\n SERVERPROPERTY(\u0027ProductUpdateReference\u0027) AS ProductUpdateReference,\n RIGHT(CAST(SERVERPROPERTY(\u0027ProductVersion\u0027) AS NVARCHAR(30)),CHARINDEX(\u0027.\u0027, REVERSE(CAST(SERVERPROPERTY(\u0027ProductVersion\u0027) AS NVARCHAR(30)))) - 1) AS ProductRevision,\n SERVERPROPERTY(\u0027EditionID\u0027) AS SQLEditionId,\n SERVERPROPERTY(\u0027IsClustered\u0027) AS IsClustered,\n SERVERPROPERTY(\u0027IsHadrEnabled\u0027) AS IsHadrEnabled,\n SERVERPROPERTY(\u0027IsAdvancedAnalyticsInstalled\u0027) AS [SqlAdvAInstalled],\n @@PACK_RECEIVED AS PacketReceived,\n @@VERSION AS Version
queryTimeInTicksqueryTimeInTicks 다음 추적 범주가 포함된 쿼리를 실행하는 데 소요되는 기간: (SQLServerXeQueries, SQLServerPeriodicQueries)The duration it takes for the query with the following trace category to execute: (SQLServerXeQueries, SQLServerPeriodicQueries) 00

추적 범주Trace Categories

현재 다음 추적 범주를 수집합니다.Currently we collect the following trace categories:

  • SQLServerXeQueries: 확장 이벤트 세션을 통해 수집된 데이터 요소를 포함합니다.SQLServerXeQueries: contains data points collected through Extended Event session.

  • SQLServerPeriodicQueries: SQL Server 인스턴스에서 실행되는 주기적인 쿼리를 통해 수집된 데이터 요소를 포함합니다.SQLServerPeriodicQueries: contains data points collected through periodic queries executed in a SQL Server instance.

  • SQLServerPerDBPeriodicQueries: SQL Server 인스턴스에서 최대 30개의 데이터베이스를 실행하는 정기 쿼리를 통해 수집된 데이터 요소를 포함합니다.SQLServerPerDBPeriodicQueries: contains data points collected through periodic queries executed to up to 30 databases in a SQL Server instance.

  • SQLServerOneSettingsException: 스키마 및/또는 쿼리 집합 업데이트와 관련된 예외 메시지를 포함합니다.SQLServerOneSettingsException: contains exception messages related to updating schema and/or query set.

  • DigitalProductID: SQL Server 인스턴스의 익명 처리되어 해시된 디지털 제품 ID(SHA-256)를 집계하는 데 사용되는 데이터 요소를 포함합니다.DigitalProductID: contains data points for aggregating anonymized (SHA-256) hashed digital product ID of SQL Server instances.

로컬 감사 파일 예제Local Audit File Examples

다음은 로컬 감사의 JSON 파일 출력의 일부입니다.Below is an excerpt of a JSON file output of Local Audit.

{
    "hostName": "de3b3769a63970b63981ab7a956401388962c986bfd39d371f5870d800627d11",
    "domainHash": "de3b3769a63970b63981ab7a956401388962c986bfd39d371f5870d800627d11",
    "sqmId": "02AF58F5-753A-429C-96CD-3900E90DB990",
    "instanceName": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
    "schemaVersion": "3",
    "emitTime": "2016-09-08T17:20:22.1124269Z",
    "sessionId": "89decf9a-ad11-485c-94a7-fefb3a02ed86",
    "correlationId": 0,
    "sequence": 15,
    "clientVersion": "13.0.2161.3 ((SQL16_RTM_QFE-CU).160907-1223)",
    "operatingSystem": "Microsoft Windows Server 2012 R2 Datacenter",
    "querySetVersion": "1.0.0.0",
    "traceName": "SQLServerPeriodicQueries",
    "queryIdentifier": "SQLServerProperties.002",
    "data": [
      {
        "Collation": "SQL_Latin1_General_CP1_CI_AS",
        "SqlFTinstalled": "0",
        "SqlIntSec": "1",
        "IsSingleUser": "0",
        "SqlFilestreamMode": "0",
        "SqlPbInstalled": "0",
        "SqlPbNodeRole": "",
        "SqlVersionMajor": "13",
        "SqlVersionMinor": "0",
        "SqlVersionBuild": "2161",
        "ProductBuildType": "",
        "ProductLevel": "RTM",
        "ProductUpdateLevel": "CU2",
        "ProductUpdateReference": "KB3182270",
        "ProductRevision": "3",
        "SQLEditionId": "-1534726760",
        "IsClustered": "0",
        "IsHadrEnabled": "0",
        "SqlAdvAInstalled": "0",
        "PacketReceived": "1210",
        "Version": "Microsoft SQL Server 2016 (RTM-CU2) (KB3182270) - 13.0.2161.3 (X64) \n\tSep  7 2016 14:24:16 \n\tCopyright (c) Microsoft Corporation\n\tStandard Edition (64-bit) on Windows Server 2012 R2 Datacenter 6.3 \u003cX64\u003e (Build 9600: ) (Hypervisor)\n"
      }
    ],
    "query": "SELECT\n      SERVERPROPERTY(\u0027Collation\u0027) AS [Collation],\n      SERVERPROPERTY(\u0027IsFullTextInstalled\u0027) AS [SqlFTinstalled],\n      SERVERPROPERTY(\u0027IsIntegratedSecurityOnly\u0027) AS [SqlIntSec],\n      SERVERPROPERTY(\u0027IsSingleUser\u0027) AS [IsSingleUser],\n      SERVERPROPERTY (\u0027FileStreamEffectiveLevel\u0027) AS [SqlFilestreamMode],\n      SERVERPROPERTY(\u0027IsPolybaseInstalled\u0027) AS [SqlPbInstalled],\n      SERVERPROPERTY(\u0027PolybaseRole\u0027) AS [SqlPbNodeRole],\n      SERVERPROPERTY(\u0027ProductMajorVersion\u0027) AS [SqlVersionMajor],\n      SERVERPROPERTY(\u0027ProductMinorVersion\u0027) AS [SqlVersionMinor],\n      SERVERPROPERTY(\u0027ProductBuild\u0027) AS [SqlVersionBuild],\n      SERVERPROPERTY(\u0027ProductBuildType\u0027) AS ProductBuildType,\n      SERVERPROPERTY(\u0027ProductLevel\u0027) AS ProductLevel,\n      SERVERPROPERTY(\u0027ProductUpdateLevel\u0027) AS ProductUpdateLevel,\n      SERVERPROPERTY(\u0027ProductUpdateReference\u0027) AS ProductUpdateReference,\n      RIGHT(CAST(SERVERPROPERTY(\u0027ProductVersion\u0027) AS NVARCHAR(30)),CHARINDEX(\u0027.\u0027, REVERSE(CAST(SERVERPROPERTY(\u0027ProductVersion\u0027) AS NVARCHAR(30)))) - 1) AS ProductRevision,\n      SERVERPROPERTY(\u0027EditionID\u0027) AS SQLEditionId,\n      SERVERPROPERTY(\u0027IsClustered\u0027) AS IsClustered,\n      SERVERPROPERTY(\u0027IsHadrEnabled\u0027) AS IsHadrEnabled,\n      SERVERPROPERTY(\u0027IsAdvancedAnalyticsInstalled\u0027) AS [SqlAdvAInstalled],\n      @@PACK_RECEIVED AS PacketReceived,\n      @@VERSION AS Version",
    "queryTimeInTicks": 0
  } ,
  {
    "hostName": "de3b3769a63970b63981ab7a956401388962c986bfd39d371f5870d800627d11",
    "domainHash": "de3b3769a63970b63981ab7a956401388962c986bfd39d371f5870d800627d11",
    "sqmId": "02AF58F5-753A-429C-96CD-3900E90DB990",
    "instanceName": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
    "schemaVersion": "3",
    "emitTime": "2016-09-08T17:20:24.9819144Z",
    "sessionId": "89decf9a-ad11-485c-94a7-fefb3a02ed86",
    "correlationId": 0,
    "sequence": 61,
    "clientVersion": "13.0.2161.3 ((SQL16_RTM_QFE-CU).160907-1223)",
    "operatingSystem": "Microsoft Windows Server 2012 R2 Datacenter",
    "querySetVersion": "1.0.0.0",
    "traceName": "SQLServerPeriodicQueries",
    "queryIdentifier": "ExternalScriptStats.001",
    "data": [
      {
        "counter_name": "Total Executions                                                                                                                ",
        "cntr_value": "0"
      },
      {
        "counter_name": "Parallel Executions                                                                                                             ",
        "cntr_value": "0"
      },
      {
        "counter_name": "Streaming Executions                                                                                                            ",
        "cntr_value": "0"
      },
      {
        "counter_name": "SQL CC Executions                                                                                                               ",
        "cntr_value": "0"
      },
      {
        "counter_name": "Implied Auth. Logins                                                                                                            ",
        "cntr_value": "0"
      },
      {
        "counter_name": "Total Execution Time (ms)                                                                                                       ",
        "cntr_value": "0"
      },
      {
        "counter_name": "Execution Errors                                                                                                                ",
        "cntr_value": "0"
      }
    ],  
    "query": "select counter_name, cntr_value from sys.dm_os_performance_counters where object_name like \u0027%External Scripts%\u0027",
    "queryTimeInTicks": 155834
  } 

질문과 대답Frequently Asked Questions

DBA는 로컬 감사 로그 파일을 어떻게 읽나요?How do DBAs read the Local Audit log files? 이러한 로그 파일은 JSON 형식으로 기록됩니다.These log files are written in JSON format. 각 줄은 Microsoft에 업로드하는 원격 분석의 부분을 나타내는 JSON 개체가 됩니다.Each line will be a JSON object representing a piece of telemetry uploaded to Microsoft. 필드 이름은 자체로 설명 가능해야 합니다.The fields names should be self-explanatory.

DBA는 사용 현황 피드백 수집을 사용하지 않도록 설정하면 어떻게 되나요?What happens if the DBA disables Usage Feedback Collection? 로컬 감사 파일이 기록되지 않습니다.No Local Audit file will be written.

인터넷에 연결되지 않았거나 컴퓨터가 방화벽으로 보호되는 경우에는 어떻게 되나요?What happens if there is not internet connectivity/machine is behind the firewall? SQL Server 2016 사용 피드백을 Microsoft로 보내지 않습니다.SQL Server 2016 usage feedback will not be sent to Microsoft. 올바르게 구성된 경우에는 계속해서 로컬 감사 로그를 작성하려고 시도합니다.It will still try to write the local audit logs if configured correctly.

DBA는 로컬 감사를 사용하지 않도록 설정하려면 어떻게 하나요?How do DBAs disable Local Audit? UserRequestedLocalAuditDirectory 레지스트리 키 항목을 제거합니다.Remove the UserRequestedLocalAuditDirectory registry key entry.

로컬 감사 로그 파일을 읽을 수 있는 사람은 누구인가요?Who can read the Local Audit log files? 조직에 있는 사람이라면 누구나 로컬 감사 디렉터리에 액세스할 수 있습니다.Anyone in your organization that has access to the Local Audit Directory.

DBA가 지정된 디렉터리에 기록된 로그 파일을 관리하려면 어떻게 하나요?How do DBAs manage the log files written to the designated directory? DBA는 디스크 공간을 너무 많이 사용하지 않도록 디렉터리에서 파일의 정리를 스스로 관리해야 합니다.DBAs will need to self-manage the clean-up of the files in the directory to avoid consuming too much disk space.

이 JSON 출력을 읽는 데 사용하는 클라이언트 또는 도구가 있나요?Is there a client or tool that I can use to read this JSON output? 메모장, Visual Studio 또는 어떤 JSON 판독기든지 사용자가 선택하여 출력을 읽을 수 있습니다.The output can be read with Notepad, Visual Studio or any JSON reader of your choice. 또는 JSON 파일을 읽고 아래와 같이 SQL Server 2016 인스턴스에서 데이터를 분석할 수 있습니다.Alternatively, you can read the JSON file and analyze the data in an SQL Server 2016 instance as illustrated below. SQL Server에서 JSON 파일을 읽는 방법에 대한 자세한 내용은 Importing JSON files into SQL Server using OPENROWSET (BULK) and OPENJSON (Transact-SQL)(OPENROWSET(BULK) 및 OPENJSON(TRANSACT-SQL)를 사용하여 SQL Server로 JSON 파일 가져오기)을 참조하세요.More details on how to read JSON file in SQL Server, please visit Importing JSON files into SQL Server using OPENROWSET (BULK) and OPENJSON (Transact-SQL).

DECLARE @JSONFile AS VARCHAR(MAX)

-- Read the JSON file into variable 
SELECT @JSONFile = BulkColumn 
FROM OPENROWSET (BULK 'C:\SQLCEIPAudit\MSSQLSERVER\2016-09-08.json', SINGLE_CLOB) MyFile 

-- Check if the JSON file has been read properly and if it's in a JSON format
SELECT 
    @JSONFile LocalAuditOutput, 
    ISJSON(@JSONFile) IsFileInJSONFormat

-- Get the query identifier, query and the data (output of the query)   
SELECT 
    sequence,
    queryIdentifier,
    query,
    data
FROM OPENJSON(@JSONFile) 
    WITH (sessionId VARCHAR(64)
         ,sequence INT
         ,queryIdentifier VARCHAR(128)
         ,query VARCHAR(MAX)
         ,data NVARCHAR(MAX) AS JSON)
-- Get specific details about the output of "DatabaseProperties.001" query  
SELECT 
    QueryIdentifier,
    DatabaseID,
    CompatibilityLevel,
    IsQueryStoreOn
FROM OPENJSON(@JSONFile) 
    WITH (sessionId VARCHAR(64)
         ,sequence INT
         ,queryIdentifier VARCHAR(128)
         ,query VARCHAR(MAX)
         ,data NVARCHAR(MAX) AS JSON) 
    CROSS APPLY OPENJSON(data) 
        WITH (   DatabaseID varchar(128) '$.database_id'
                ,CompatibilityLevel varchar(128) '$.compatibility_level'
                ,IsQueryStoreOn varchar(128) '$.QS'
             )
WHERE queryIdentifier = 'DatabaseProperties.001'

관련 항목:See Also

SSMS 사용 피드백 수집에 대한 로컬 감사Local Audit for SSMS Usage Feedback Collection