Megosztás a következőn keresztül:


Adatok exportálása SQL-be

Az adatok SQL-be való exportálásával lekérdezést futtathat, és az eredmények elküldhetők egy SQL-adatbázisban lévő táblába, például a Azure SQL Database szolgáltatás által üzemeltetett SQL-adatbázisba.

Engedélyek

A parancs futtatásához legalább Table Rendszergazda engedéllyel kell rendelkeznie.

Syntax

.export [async] tosqlsqlTableNamesqlConnectionString [with(propertyName=propertyValue [, ...])] <|Lekérdezés

További információ a szintaxis konvenciókról.

Paraméterek

Név Típus Kötelező Leírás
async string Ha meg van adva, a parancs aszinkron módon fut.
SqlTableName string ✔️ Annak az SQL-adatbázistáblának a neve, amelybe be szeretné szúrni az adatokat. Az injektálási támadások elleni védelem érdekében ez a név korlátozott.
SqlConnectionString string ✔️ Az SQL-végpont és az adatbázis kapcsolati karakterlánc. A sztringnek a ADO.NET kapcsolati karakterlánc formátumot kell követnie. Biztonsági okokból a kapcsolati karakterlánc korlátozva van.
PropertyName, PropertyValue string A választható tulajdonságok listája.

Támogatott tulajdonságok

Name Értékek Leírás
firetriggers true vagy false Ha truea parancs arra utasítja a célrendszert, hogy aktiválja az SQL-táblában definiált INSERT-eseményindítókat. A mező alapértelmezett értéke: false. További információ: BULK INSERT és System.Data.SqlClient.SqlBulkCopy.
createifnotexists true vagy false Ha truea , akkor a cél SQL-tábla akkor jön létre, ha még nem létezik; ebben az esetben meg kell adni a primarykey tulajdonságot az elsődleges kulcs eredményoszlopának jelzéséhez. A mező alapértelmezett értéke: false.
primarykey Ha createifnotexists igen true, ez a tulajdonság az eredményben szereplő oszlop nevét jelzi, amelyet az SQL-tábla elsődleges kulcsaként fog használni, ha ezt a parancsot hozza létre.
persistDetails bool Azt jelzi, hogy a parancsnak meg kell őriznie az eredményeit (lásd a jelzőt async ). true Alapértelmezés szerint az aszinkron futtatás, de kikapcsolható, ha a hívónak nincs szüksége az eredményekre. false Alapértelmezés szerint szinkron végrehajtásban van, de be lehet kapcsolni.
token string A Microsoft Entra hozzáférési jogkivonat, amelyet a Kusto továbbít az SQL-végpontnak hitelesítés céljából. Ha be van állítva, az SQL-kapcsolati karakterlánc nem tartalmazhatnak olyan hitelesítési adatokat, mint a Authentication, User IDvagy Password.

Hitelesítés és engedélyezés

A hitelesítési módszer a megadott kapcsolati karakterlánc alapul, és az SQL-adatbázis eléréséhez szükséges engedélyek a hitelesítési módszertől függően változnak.

Az adatok SQL-be való exportálásának támogatott hitelesítési módszerei Microsoft Entra integrált (megszemélyesítési) hitelesítés, valamint felhasználónév-/jelszó-hitelesítés. A megszemélyesítés hitelesítéséhez győződjön meg arról, hogy a rendszerbiztonsági tag rendelkezik a következő engedélyekkel az adatbázishoz:

  • Meglévő tábla: table UPDATE és INSERT
  • Új tábla: CREATE, UPDATE és INSERT

Korlátozások és megkötések

Bizonyos korlátozások és korlátozások vonatkoznak az adatok SQL-adatbázisba való exportálására:

  1. A Kusto egy felhőszolgáltatás, ezért a kapcsolati karakterlánc a felhőből elérhető adatbázisra kell mutatnia. (Különösen nem lehet exportálni egy helyszíni adatbázisba, mert az nem érhető el a nyilvános felhőből.)

  2. A Kusto támogatja az Active Directory integrált hitelesítését, ha a hívónév egy Microsoft Entra egyszerű (aaduser= vagy aadapp=). Másik lehetőségként a Kusto támogatja az SQL-adatbázis hitelesítő adatainak megadását is a kapcsolati karakterlánc részeként. Más hitelesítési módszerek nem támogatottak. Az SQL-adatbázis számára megjelenített identitás mindig a parancshívótól származik, nem magát a Kusto-szolgáltatás identitását.

  3. Ha az SQL-adatbázisban található céltábla létezik, annak meg kell egyeznie a lekérdezés eredménysémával. Vegye figyelembe, hogy bizonyos esetekben (például Azure SQL Adatbázis) ez azt jelenti, hogy a tábla egy oszlopot identitásoszlopként jelöl meg.

  4. A nagy mennyiségű adat exportálása hosszú időt vehet igénybe. Javasoljuk, hogy a cél SQL-tábla minimális naplózásra legyen beállítva a tömeges importálás során. Lásd: SQL Server adatbázismotor > ... > Adatbázis-funkciók > – Adatok tömeges importálása és exportálása.

  5. Az adatexportálás tömeges SQL-másolással történik, és nem biztosít tranzakciós garanciát a cél SQL-adatbázisban. Lásd: Tranzakciós és tömeges másolási műveletek.

  6. Az SQL-tábla neve betűkből, számjegyekből, szóközökből, aláhúzásokból (), pontból (_.) és kötőjelekből (-) álló névre korlátozódik.

  7. Az SQL-kapcsolati karakterlánc a következőképpen van korlátozva: Persist Security Info explicit módon a false, Encrypt értékre truevan állítva, és Trust Server Certificate a értékre falsevan állítva.

  8. Új SQL-tábla létrehozásakor meg lehet adni az oszlop elsődleges kulcstulajdonságát. Ha az oszlop típusa string, akkor előfordulhat, hogy az SQL megtagadja a tábla létrehozását az elsődleges kulcs oszlopának egyéb korlátozásai miatt. A megkerülő megoldás az, hogy manuálisan hozza létre a táblát az SQL-ben az adatok exportálása előtt. Ennek a korlátozásnak az az oka, hogy az SQL elsődleges kulcsoszlopai nem lehetnek korlátlan méretűek, de a Kusto-táblaoszlopok nem rendelkeznek deklarált méretkorlátozásokkal.

Az Azure DB Microsoft Entra integrált hitelesítés dokumentációja

Példák

Ebben a példában a Kusto futtatja a lekérdezést, majd exportálja a lekérdezés által létrehozott első rekordhalmazt a MySqlTable kiszolgáló myserveradatbázisának MyDatabase táblájára.

.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)

Ebben a példában a Kusto futtatja a lekérdezést, majd exportálja a lekérdezés által létrehozott első rekordhalmazt a MySqlTable kiszolgáló myserveradatbázisának MyDatabase táblájára. Ha a céltábla nem létezik a céladatbázisban, akkor létrejön.

.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