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.
W tym artykule przedstawiono zalecenia dotyczące definiowania typów danych tabeli w dedykowanej puli SQL.
Obsługiwane typy danych
Dedykowana pula SQL (dawniej SQL DW) obsługuje najczęściej używane typy danych. Aby uzyskać listę obsługiwanych typów danych, zobacz typy danych w instrukcji CREATE TABLE.
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).
Jeśli używasz tabel zewnętrznych polyBase do ładowania tabel, 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
Jeśli migrujesz bazę danych z innej bazy danych SQL, możesz znaleźć typy danych, które nie są obsługiwane w dedykowanej puli SQL. Użyj następującego 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')
AND y.[is_user_defined] = 1;
Alternatywne rozwiązania dla nieobsługiwanych typów danych
Na poniższej liście przedstawiono typy danych, które dedykowana pula SQL (dawniej SQL DW) nie obsługuje i udostępnia przydatne alternatywy dla nieobsługiwanych typów danych.
| Nieobsługiwany typ danych | Rozwiązanie |
|---|---|
| geometria | varbinary |
| geografia | varbinary |
| hierarchyid | nvarchar(4000) |
| obraz | varbinary |
| tekst | varchar |
| ntext | nvarchar |
| sql_variant | Podziel kolumnę na kilka silnie typiowanych kolumn. |
| tabela | Przekonwertuj na tabele tymczasowe. |
| Znacznik czasu | Przekształć kod, aby używać `datetime2` i funkcji `CURRENT_TIMESTAMP`. Tylko stałe są obsługiwane jako wartości domyślne, więc current_timestamp nie można zdefiniować jako domyślnego ograniczenia. Jeśli musisz przeprowadzić migrację wartości w wersji wierszy z kolumny typu sygnatura czasowa, użyj BINARY(8) lub VARBINARY(8) dla wartości wersji typu 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. |
Następne kroki
Aby uzyskać więcej informacji na temat tworzenia tabel, zobacz Omówienie tabel.