SQL로 데이터 내보내기
적용 대상: ✅Microsoft Fabric✅Azure Data Explorer
SQL로 데이터를 내보내면 쿼리를 실행하고 Azure SQL Database 서비스에서 호스트하는 SQL 데이터베이스와 같은 SQL 데이터베이스의 테이블로 결과를 보낼 수 있습니다.
사용 권한
이 명령을 실행하려면 테이블 관리자 이상의 권한이 있어야 합니다.
구문
.export
[async
] to
sql
sqlTableNamesqlConnectionString [with
(
propertyName=
propertyValue [,
...]] )
<|
쿼리
구문 규칙에 대해 자세히 알아봅니다.
매개 변수
이름 | Type | 필수 | 설명 |
---|---|---|---|
async |
string |
지정된 경우 명령은 비동기적으로 실행됩니다. | |
SqlTableName | string |
✔️ | 데이터를 삽입할 SQL 데이터베이스 테이블의 이름입니다. 삽입 공격으로부터 보호하기 위해 이 이름은 제한됩니다. |
SqlConnectionString | string |
✔️ | SQL 엔드포인트 및 데이터베이스에 대한 연결 문자열. 문자열은 연결 문자열 형식을 ADO.NET 따라야 합니다. 보안상의 이유로 연결 문자열 제한됩니다. |
PropertyName, PropertyValue | string |
선택적 속성 목록입니다. |
지원되는 속성
이름 | 값 | 설명 |
---|---|---|
firetriggers |
true 또는 false |
이면 true SQL 테이블에 정의된 INSERT 트리거를 실행하도록 대상 시스템에 지시합니다. 기본값은 false 입니다. 자세한 내용은 BULK INSERT 및 System.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 ID Password .)를 포함하면 안 됩니다. |
인증 및 권한 부여
인증 방법은 제공된 연결 문자열 기반으로 하며, SQL 데이터베이스에 액세스하는 데 필요한 권한은 인증 방법에 따라 달라집니다.
SQL 로 데이터를 내보내는 데 지원되는 인증 방법은 Microsoft Entra 통합(가장) 인증 및 사용자 이름/암호 인증입니다. 가장 인증의 경우 보안 주체가 데이터베이스에 대해 다음과 같은 권한을 가지고 있는지 확인합니다.
- 기존 테이블: 테이블 UPDATE 및 INSERT
- 새 테이블: CREATE, UPDATE 및 INSERT
참고 항목
가능한 경우 기본 인증 방법은 Microsoft Entra 통합(가장) 인증입니다.
제한 사항
SQL 데이터베이스로 데이터를 내보낼 때 몇 가지 제한 사항이 있습니다.
Kusto는 클라우드 서비스이므로 연결 문자열 클라우드에서 액세스할 수 있는 데이터베이스를 가리킵니다. (특히 퍼블릭 클라우드에서 액세스할 수 없으므로 온-프레미스 데이터베이스로 내보낼 수 없습니다.)
Kusto는 호출 주체가 Microsoft Entra 보안 주체(
aaduser=
또는aadapp=
)인 경우 Active Directory 통합 인증을 지원합니다. 또는 Kusto는 연결 문자열 일부로 SQL 데이터베이스에 대한 자격 증명 제공도 지원합니다. 다른 인증 방법은 지원되지 않습니다. SQL 데이터베이스에 표시되는 ID는 항상 Kusto 서비스 ID 자체가 아닌 명령 호출자에서 발산됩니다.SQL 데이터베이스의 대상 테이블이 있는 경우 쿼리 결과 스키마와 일치해야 합니다. Azure SQL Database와 같은 경우에 테이블에 ID 열로 표시된 열이 하나 있음을 의미합니다.
대량의 데이터를 내보내는 데 시간이 오래 걸릴 수 있습니다. 대량 가져오기 중에 최소 로깅을 위해 대상 SQL 테이블을 설정하는 것이 좋습니다. SQL Server 데이터베이스 엔진 > 참조... > 데이터베이스 기능 > 대량 데이터 가져오기 및 내보내기.
데이터 내보내기는 SQL 대량 복사를 사용하여 수행되며 대상 SQL 데이터베이스에 대한 트랜잭션 보장을 제공하지 않습니다. 트랜잭션 및 대량 복사 작업을 참조 하세요.
SQL 테이블 이름은 문자, 숫자, 공백, 밑줄(), 점(
_
) 및 하이픈(.
-
)으로 구성된 이름으로 제한됩니다.SQL 연결 문자열 다음과 같이 제한됩니다.
Persist Security Info
명시적으로 설정false
되고,Encrypt
로 설정true
되고Trust Server Certificate
, 로 설정false
됩니다.새 SQL 테이블을 만들 때 열의 기본 키 속성을 지정할 수 있습니다. 열이 형식
string
인 경우 SQL은 기본 키 열의 다른 제한 사항으로 인해 테이블 만들기를 거부할 수 있습니다. 해결 방법은 데이터를 내보내기 전에 SQL에서 테이블을 수동으로 만드는 것입니다. SQL의 기본 키 열 크기는 무제한일 수 없지만 Kusto 테이블 열에는 선언된 크기 제한이 없으므로 이 제한이 있습니다.
Azure 데이터베이스 Microsoft Entra 통합 인증 설명서
예제
SQL 테이블로 비동기 내보내기
다음 예제에서 Kusto는 쿼리를 실행한 다음 쿼리에서 생성된 첫 번째 레코드 집합을 서버 myserver
MyDatabase
데이터베이스의 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는 쿼리를 실행한 다음 쿼리에서 생성된 첫 번째 레코드 집합을 서버 myserver
MyDatabase
데이터베이스의 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
관련 콘텐츠
- 쿼리
수집 - 관리 명령 개요
- 외부 테이블로 내보내기
- 클라우드 스토리지 데이터 내보내기
- Azure SQL 외부 테이블 만들기 및 변경