다음을 통해 공유


SQL로 데이터 내보내기

적용 대상: ✅Microsoft Fabric✅Azure Data Explorer

SQL로 데이터를 내보내면 쿼리를 실행하고 Azure SQL Database 서비스에서 호스트하는 SQL 데이터베이스와 같은 SQL 데이터베이스의 테이블로 결과를 보낼 수 있습니다.

사용 권한

이 명령을 실행하려면 테이블 관리자 이상의 권한이 있어야 합니다.

구문

.export[async] tosqlsqlTableNamesqlConnectionString [with(propertyName= propertyValue [, ...]] )<|쿼리

구문 규칙에 대해 자세히 알아봅니다.

매개 변수

이름 Type 필수 설명
async string 지정된 경우 명령은 비동기적으로 실행됩니다.
SqlTableName string ✔️ 데이터를 삽입할 SQL 데이터베이스 테이블의 이름입니다. 삽입 공격으로부터 보호하기 위해 이 이름은 제한됩니다.
SqlConnectionString string ✔️ SQL 엔드포인트 및 데이터베이스에 대한 연결 문자열. 문자열은 연결 문자열 형식을 ADO.NET 따라야 합니다. 보안상의 이유로 연결 문자열 제한됩니다.
PropertyName, PropertyValue string 선택적 속성 목록입니다.

지원되는 속성

이름 설명
firetriggers true 또는 false 이면 trueSQL 테이블에 정의된 INSERT 트리거를 실행하도록 대상 시스템에 지시합니다. 기본값은 false입니다. 자세한 내용은 BULK INSERTSystem.Data.SqlClient.SqlBulkCopy를 참조하세요.
createifnotexists true 또는 false 대상 SQL 테이블이 아직 없는 true 경우 만들어지는 경우 primarykey기본 키인 결과 열을 나타내려면 이 경우 속성을 제공해야 합니다. 기본값은 false입니다.
primarykey createifnotexists true경우 이 속성은 이 명령으로 만든 경우 SQL 테이블의 기본 키로 사용되는 결과의 열 이름을 나타냅니다.
persistDetails bool 명령이 결과를 유지해야 임을 나타냅니다(플래그 참조 async ). 기본값은 true 비동기 실행이지만 호출자에게 결과가 필요하지 않은 경우 해제할 수 있습니다. 기본값은 false 동기 실행이지만 켤 수 있습니다.
token string Kusto가 인증을 위해 SQL 엔드포인트로 전달하는 Microsoft Entra 액세스 토큰입니다. 설정하면 SQL 연결 문자열 인증 정보(예: Authentication또는 User IDPassword.)를 포함하면 안 됩니다.

인증 및 권한 부여

인증 방법은 제공된 연결 문자열 기반으로 하며, SQL 데이터베이스에 액세스하는 데 필요한 권한은 인증 방법에 따라 달라집니다.

SQL 로 데이터를 내보내는 데 지원되는 인증 방법은 Microsoft Entra 통합(가장) 인증사용자 이름/암호 인증입니다. 가장 인증의 경우 보안 주체가 데이터베이스에 대해 다음과 같은 권한을 가지고 있는지 확인합니다.

  • 기존 테이블: 테이블 UPDATE 및 INSERT
  • 새 테이블: CREATE, UPDATE 및 INSERT

참고 항목

가능한 경우 기본 인증 방법은 Microsoft Entra 통합(가장) 인증입니다.

제한 사항

SQL 데이터베이스로 데이터를 내보낼 때 몇 가지 제한 사항이 있습니다.

  1. Kusto는 클라우드 서비스이므로 연결 문자열 클라우드에서 액세스할 수 있는 데이터베이스를 가리킵니다. (특히 퍼블릭 클라우드에서 액세스할 수 없으므로 온-프레미스 데이터베이스로 내보낼 수 없습니다.)

  2. Kusto는 호출 주체가 Microsoft Entra 보안 주체(aaduser= 또는 aadapp=)인 경우 Active Directory 통합 인증을 지원합니다. 또는 Kusto는 연결 문자열 일부로 SQL 데이터베이스에 대한 자격 증명 제공도 지원합니다. 다른 인증 방법은 지원되지 않습니다. SQL 데이터베이스에 표시되는 ID는 항상 Kusto 서비스 ID 자체가 아닌 명령 호출자에서 발산됩니다.

  3. SQL 데이터베이스의 대상 테이블이 있는 경우 쿼리 결과 스키마와 일치해야 합니다. Azure SQL Database와 같은 경우에 테이블에 ID 열로 표시된 열이 하나 있음을 의미합니다.

  4. 대량의 데이터를 내보내는 데 시간이 오래 걸릴 수 있습니다. 대량 가져오기 중에 최소 로깅을 위해 대상 SQL 테이블을 설정하는 것이 좋습니다. SQL Server 데이터베이스 엔진 > 참조... > 데이터베이스 기능 > 대량 데이터 가져오기 및 내보내기.

  5. 데이터 내보내기는 SQL 대량 복사를 사용하여 수행되며 대상 SQL 데이터베이스에 대한 트랜잭션 보장을 제공하지 않습니다. 트랜잭션 및 대량 복사 작업을 참조 하세요.

  6. SQL 테이블 이름은 문자, 숫자, 공백, 밑줄(), 점(_) 및 하이픈(.-)으로 구성된 이름으로 제한됩니다.

  7. SQL 연결 문자열 다음과 같이 제한됩니다. Persist Security Info 명시적으로 설정false되고, Encrypt 로 설정true되고Trust Server Certificate, 로 설정false됩니다.

  8. 새 SQL 테이블을 만들 때 열의 기본 키 속성을 지정할 수 있습니다. 열이 형식 string인 경우 SQL은 기본 키 열의 다른 제한 사항으로 인해 테이블 만들기를 거부할 수 있습니다. 해결 방법은 데이터를 내보내기 전에 SQL에서 테이블을 수동으로 만드는 것입니다. SQL의 기본 키 열 크기는 무제한일 수 없지만 Kusto 테이블 열에는 선언된 크기 제한이 없으므로 이 제한이 있습니다.

Azure 데이터베이스 Microsoft Entra 통합 인증 설명서

예제

SQL 테이블로 비동기 내보내기

다음 예제에서 Kusto는 쿼리를 실행한 다음 쿼리에서 생성된 첫 번째 레코드 집합을 서버 myserverMyDatabase 데이터베이스의 MySqlTable 테이블로 내보냅니다.

.export async to sql MySqlTable
    h@"Server=tcp:myserver.database.windows.net,1433;Authentication=Active Directory Integrated;Initial Catalog=MyDatabase;Connection Timeout=30;"
    <| print Id="d3b68d12-cbd3-428b-807f-2c740f561989", Name="YSO4", DateOfBirth=datetime(2017-10-15)

SQL 테이블이 없는 경우 SQL 테이블로 내보내기

다음 예제에서 Kusto는 쿼리를 실행한 다음 쿼리에서 생성된 첫 번째 레코드 집합을 서버 myserverMyDatabase 데이터베이스의 MySqlTable 테이블로 내보냅니다. 대상 테이블이 대상 데이터베이스에 없는 경우 만들어집니다.

.export async to sql ['dbo.MySqlTable']
    h@"Server=tcp:myserver.database.windows.net,1433;Authentication=Active Directory Integrated;Initial Catalog=MyDatabase;Connection Timeout=30;"
    with (createifnotexists="true", primarykey="Id")
    <| print Message = "Hello World!", Timestamp = now(), Id=12345678