Konfigurace převodu
Poznámka:
Toto rozšíření bude vyřazeno 15. prosince 2024. Tento nástroj přestaneme podporovat pro všechny problémy, které nastanou, a nebudeme vydávat žádné opravy chyb ani další aktualizace.
Cílem Sada nástrojů pro převod schématu databáze (Oracle do Microsoft SQL) je poskytnout řešení pro migrace schémat databáze. I když je výchozí převod poměrně rozumný, existují případy, kdy uživatelé mohou chtít upravit některá nastavení převodu tak, aby lépe vyhovovala jejich potřebám.
Uživatelské rozhraní konfigurace
Při převodu schématu databáze prostřednictvím uživatelského rozhraní průvodce převodem Sada nástrojů pro převod schématu databáze umožní krok nastavení převodu upravit základní nastavení převodu.
V složitějších scénářích je možné zadat vlastní konfigurační soubor JSON s rozšířenými možnostmi, jak je vysvětleno v další části.
Pokročilá konfigurace převodu
Existuje několik nastavení převodu, která nejsou aktuálně zpřístupněna prostřednictvím uživatelského rozhraní. Tato nastavení je možné upravit prostřednictvím konfiguračního souboru JSON.
Základní struktura konfiguračního souboru vypadá takto:
{
"options" : <simple-conversion-options>,
"dataTypeMappings": [
<data-type-mapping>,
...
],
"nameMappings": [
<object-name-mapping>,
...
]
}
V následujících částech najdete další podrobnosti o jednotlivých oblastech konfigurace.
Jednoduché možnosti převodu
Oblast options
konfigurace má následující schéma:
{
"msSqlDialect":
"AzureSqlDatabase"
| "AzureSqlManagedInstance"
| "SqlServer2017"
| "SqlServer2019"
| "SqlServer2022",
"quoteIdentifiers": true | false,
"isMsSqlCaseSensitive": true | false,
}
Následující tabulka popisuje všechny možné možnosti konfigurace v této oblasti:
Název možnosti | Popis |
---|---|
msSqlDialect |
Určuje, který dialekt platformy Microsoft SQL se má použít při převodu definic zdrojového objektu. Tato možnost bude odvozena z cílového projektu služby SQL Database a neměli byste ji explicitně nastavovat. |
quoteIdentifiers |
Určuje, zda mají být všechny identifikátory citovány v převedených skriptech SQL. Výchozí hodnota je true . Doporučujeme ho nastavit na true hodnotu , protože při použití speciálních znaků v názvech identifikátorů může být vyžadována uvozovka. |
isMsSqlCaseSensitive |
Určuje, zda se během převodu provede kontrola citlivosti písmen u názvů objektů a bude vytvořena zpráva o převodu DSCT01000 . Tato možnost bude odvozena z výchozí kolace cílového projektu služby SQL Database a neměli byste ji explicitně nastavovat. |
AddRowIdColumnWhenNeededByTrigger |
Určuje, zda dsCT má přidat sloupec ROWID typu uniqueidentifier do tabulky, na které je aktivační událost definována. Tento sloupec pomáhá emulaci operace dml při převodu triggerů Oracle Před na místo triggerů v SQL Serveru. Výchozí hodnota je Ano, která přidá sloupec ROWID. |
ConvertSubstringFunctionToCustomFunction |
Určuje, zda DSCT převede funkci SUBSTR ORACLE na funkci SUBSTR SERVERU MSSQLSERVER nebo vlastní implementaci DSCT. Výchozí hodnota je Ne, která používá funkci SUBSTRING MSSQLSERVER. |
EmulateNullOrderByBehavior |
Označuje, zda DSCT emuluje zpracování hodnot Oracle null v klauzulích ORDER BY nebo používá výchozí hodnoty Microsoft SQL. Výchozí hodnota je Ne, která používá výchozí hodnoty Microsoft SQL. |
Mapování datového typu
Oblast dataTypeMappings
konfigurace se skládá z více záznamů mapování datových typů. Každý záznam mapování datového typu má následující schéma:
{
"source": {
"type": "<oracle-data-type-name>",
"arguments": [
<argument-value-matching-expression>,
...
]
},
"target": {
"type": "<ms-sql-data-type-name>",
"arguments": [
<argument-value-expression>,
...
]
}
}
Oddíl source
definuje zdrojový datový typ, který se mapuje, a skládá se ze dvou částí:
type
je název datového typu Oracle, který se má mapovat;arguments
je kolekce odpovídajících výrazů, které budou dále filtrovat datový typ na základě hodnot argumentů.
Zdrojová arguments
kolekce definuje odpovídající výrazy pro argumenty datového typu na základě jejich pozice. Kolekce by měla obsahovat jeden řetězcový výraz pro každý argument datového typu. Podporované výrazy jsou:
Výraz | Význam |
---|---|
"<number>" |
Odpovídá přesné hodnotě argumentu. |
"*" |
Odpovídá hodnotě speciálního * argumentu. Například první argument v definici datového NUMBER(*, 5) typu. |
"X..Y" |
Odpovídá hodnotě argumentu [X, Y] v oblasti, kde X může Y být buď <number> nebo * . Výraz * oblasti znamená nevázaný. Chcete-li se shodovat s libovolnou hodnotou argumentu, lze použít výraz rozsahu "*..*" . |
Některé datové typy můžou mít zadané argumenty v názvu typu, například INTERVAL DAY (2) TO SECOND (6)
. V takových případech by název typu byl INTERVAL DAY TO SECOND
, zatímco 2
a 6
jsou považovány za první a druhý argument v uvedeném pořadí.
Část target
záznamu mapování datového typu definuje datový typ Microsoft SQL, který se má použít v cílové databázi a který se skládá ze dvou částí:
type
je název datového typu Microsoft SQL, na který se má mapovat;arguments
je kolekce výrazů, které definují hodnoty pro argumenty cílového datového typu.
Kolekce arguments
definuje výrazy hodnot argumentů datového typu na základě pozice argumentů. Kolekce by měla obsahovat jeden řetězcový výraz pro každý argument datového typu. Podporované výrazy jsou:
Výraz | Význam |
---|---|
"<number>" |
Určuje přesnou hodnotu argumentu. |
"$<number>" |
Určuje, že se má použít hodnota zdrojového argumentu <number> . Index je založený na 1. Například $2 se nahradí hodnotou druhého argumentu odpovídajícího zdrojového datového typu. |
Následující příklad ukazuje, jak mapovat VARCHAR2
datový typ Oracle, který obsahuje 4000 znaků nebo méně, na NVARCHAR
datový typ Microsoft SQL se stejnou délkou jako zdrojový datový typ:
{
"source": {
"type": "VARCHAR2",
"arguments": [
"*..4000"
]
},
"target": {
"type": "NVARCHAR",
"arguments": [
"$1"
]
}
}
Důležité
Mapování datových typů by mělo být definováno od nejmenšího konkrétního po konkrétnější, protože se použijí v obráceném pořadí. Jinými slovy, všechna následná přepsání mapování datových typů (zcela nebo zčásti) dříve definovaných mapování.
Poznámka:
Sada nástrojů pro převod schématu databáze se dodává s integrovanými mapováními datových typů, která pokrývají běžné scénáře, a proto se ve většině případů nevyžadují vlastní mapování datových typů.
Mapování názvů objektů
Oblast nameMappings
konfigurace se skládá z více záznamů mapování názvů. Každý záznam mapování názvů má následující schéma:
{
"source": [
{
"type":
"constraint"
| "index"
| "materializedview"
| "sequence"
| "synonym"
| "table"
| "tablecolumn"
| "tabletrigger"
| "user"
| "view",
"name": "<source-object-name>"
},
...
],
"target": "<target-object-name>"
}
Kolekce source
definuje části názvu zdrojového identifikátoru, který se mapuje. Chcete-li například definovat cílový název zdrojového schématu, můžete použít následující zdrojovou kolekci:
[
{ "type" : "user", "name": "MySchema" }
]
Pokud chcete definovat cílový název pro zdrojovou tabulku, měli byste v kolekci zadat název identifikátoru source
se dvěma částmi následujícím způsobem:
[
{ "type" : "user", "name": "MySchema" },
{ "type" : "table", "name": "MyTable" }
]
Bude se shodovat s tabulkou s názvem "MySchema"."MyTable"
více částí . Většina databázových objektů bude vyžadovat zadání názvů více částí v kolekci source
.
Následující tabulka popisuje podporované typy zdrojových objektů:
Typ | Popis |
---|---|
constraint |
Název objektu omezení |
index |
Název objektu indexu |
materializedview |
Název materializovaného objektu zobrazení |
sequence |
Název objektu sekvence |
synonym |
Název objektu synonyma |
table |
Název objektu tabulky |
tablecolumn |
Název sloupce tabulky |
tabletrigger |
Název objektu triggeru tabulky |
user |
Název schématu databáze |
view |
Název objektu zobrazení |
Vlastnost target
je vždy jednoduchý řetězec, který definuje nový název zdrojového objektu, který odpovídá source
identifikátoru více částí.
Poznámka:
Schéma pro jeden objekt není možné změnit. Vlastnost target
určuje pouze název jedné části pro odpovídající zdrojový objekt, nikoli název více částí.
Příklady
Následující příklad ukazuje celý konfigurační soubor, který mapuje VARCHAR2
datový typ Oracle, který obsahuje 4 000 znaků nebo méně, na NVARCHAR
datový typ Microsoft SQL se stejnou délkou jako zdrojový datový typ a zároveň nahrazuje HR
schéma dbo
Oracle v cílové databázi:
{
"dataTypeMappings": [
{
"source": {
"type": "VARCHAR2",
"arguments": [
"*..4000"
]
},
"target": {
"type": "NVARCHAR",
"arguments": [
"$1"
]
}
}
],
"nameMappings": [
{
"source": [
{ "type": "user", "name": "HR" }
],
"target": "dbo"
}
]
}
Při použití této konfigurace budou všechny převedené objekty ze HR
schématu definovány v rámci dbo
schématu a všechny odpovídající odkazy na VARCHAR2
datový typ budou nahrazeny znakem NVARCHAR
.