Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Tip
Microsoft Fabric Data Warehouse to magazyn relacyjny w skali przedsiębiorstwa na podstawie bazy danych data lake z architekturą gotową do użycia w przyszłości, wbudowaną sztuczną inteligencją i nowymi funkcjami. Jeśli dopiero zaczynasz korzystać z magazynowania danych, zacznij od Fabric Data Warehouse. Istniejące obciążenia dedykowanej puli SQL mogą zostać zaktualizowane do Fabric, aby uzyskać dostęp do nowych możliwości w zakresie nauki o danych, analizy w czasie rzeczywistym i raportowania.
W tym artykule znajdziesz zalecenia dotyczące definiowania typów danych tabeli w dedykowanej puli SQL usługi Synapse.
Typy danych
Dedykowana pula usługi Synapse SQL obsługuje najczęściej używane typy danych. Aby uzyskać listę obsługiwanych typów danych, zobacz typy danych w instrukcji CREATE TABLE. W przypadku usługi Synapse SQL Serverless zapoznaj się z artykułem Query storage files with serverless SQL pool in Azure Synapse Analytics oraz Jak używać OPENROWSET z bezserwerową pulą SQL w Azure Synapse Analytics
Minimalizuj długość wiersza
Minimalizacja rozmiaru typów danych skraca długość wiersza, co prowadzi do lepszej wydajności zapytań. Użyj najmniejszego typu danych, który będzie odpowiedni dla Twoich danych.
- Unikaj definiowania kolumn znaków o dużej długości domyślnej. Jeśli na przykład najdłuższa wartość to 25 znaków, zdefiniuj kolumnę jako VARCHAR(25).
- Unikaj używania NVARCHAR, gdy potrzebujesz tylko VARCHAR.
- Jeśli to możliwe, należy użyć NVARCHAR(4000) lub VARCHAR(8000) zamiast NVARCHAR(MAX) lub VARCHAR(MAX).
- Unikaj używania liczb zmiennoprzecinkowych i liczb dziesiętnych o skali 0 (zero). Powinny to być TINYINT, SMALLINT, INT lub BIGINT.
Uwaga
Jeśli do ładowania tabel SQL usługi Synapse używasz tabel zewnętrznych programu PolyBase, zdefiniowana długość wiersza tabeli nie może przekroczyć 1 MB. Jeśli wiersz z danymi o zmiennej długości przekracza 1 MB, można załadować wiersz przy użyciu narzędzia BCP, ale nie narzędzia PolyBase.
Identyfikowanie nieobsługiwanych typów danych
W przypadku migrowania bazy danych z innej bazy danych SQL mogą wystąpić typy danych, które nie są obsługiwane w usłudze Synapse SQL. Użyj tego zapytania, aby odnaleźć nieobsługiwane typy danych w istniejącym schemacie SQL.
SELECT t.[name], c.[name], c.[system_type_id], c.[user_type_id], y.[is_user_defined], y.[name]
FROM sys.tables t
JOIN sys.columns c on t.[object_id] = c.[object_id]
JOIN sys.types y on c.[user_type_id] = y.[user_type_id]
WHERE y.[name] IN ('geography','geometry','hierarchyid','image','text','ntext','sql_variant','xml')
OR y.[is_user_defined] = 1;
Alternatywne rozwiązania dla nieobsługiwanych typów danych
Na poniższej liście przedstawiono typy danych, których usługa Synapse SQL nie obsługuje i udostępnia alternatywy, których można użyć zamiast nieobsługiwanych typów danych.
| Nieobsługiwany typ danych | Rozwiązanie |
|---|---|
| geometria | varbinary |
| geografia | varbinary |
| hierarchyid | nvarchar(4000) |
| obraz | varbinary |
| text | varchar |
| ntext | nvarchar |
| sql_variant | Podziel kolumnę na kilka silnie typiowanych kolumn. |
| table | Przekonwertuj na tabele tymczasowe lub rozważ zapisanie danych za pomocą CETAS. |
| timestamp | Przekształć kod, aby używać `datetime2` i funkcji `CURRENT_TIMESTAMP`. Tylko stałe są obsługiwane jako wartości domyślne, dlatego current_timestamp nie można zdefiniować jako domyślnego ograniczenia. Jeśli musisz przeprowadzić migrację wartości wersji wiersza z kolumny o typie sygnatury czasowej, użyj BINARY(8) lub VARBINARY(8) dla wartości wersji wiersza NOT NULL lub NULL. |
| xml | varchar |
| typ zdefiniowany przez użytkownika | W miarę możliwości przekonwertuj z powrotem na natywny typ danych. |
| wartości domyślne | Wartości domyślne obsługują tylko literały i stałe. |
Powiązana zawartość
Aby uzyskać więcej informacji na temat tworzenia tabel, zobacz omówienie programowania.