Vra

In SQL Server 2005, ons omskryf sommige UDT (Gebruiker-gedefinieerde gegee tik) op in die besonder was SK (vir surrogaat Sleutel). Hierdie is gedefinieer as 32 bietjie int. En gevolglik die grootte was 4 grepe.

In SQL Server 2008, die UDT vir die heelgetal data tipes gebruik 'n ander stoor meganisme, na gelang van die akkuraatheid:

berging      Gee die maksimum grootte stoor vir die UDT. Maksimum stoor groottes wissel, gebaseer op presisie.

Precision (syfers) ..... Storage (grepe)

1-9 ........................ 5

10-19 .................... 9

20 - 28 ................... 13

29 - 38 ................... 17

Een gevolg hiervan is dat UDTs gebaseer op BEIDE int en bigint 9 grepe sal beset! NOTA: moedertaal int en bigint data tipes steeds beset 4 en 8 grepe onderskeidelik

!

9 grepe lyk redelik swaargewig vir 'n surrogaat sleutel UDT!

Kan iemand verduidelik waarom dit so is (in die besonder wat die ontwerp rasionaal hiervoor was)? Hoe kom hierdie teenstrydigheid tussen die UDT en moedertaal gegee tik?

Is daar enige alternatiewe benaderings afgesien van NIE met behulp van UDTs?

Was dit nuttig?

Oplossing

Verskoon my, maar dit lyk vir my jy dit verkeerd het. Onthou, "SELECT is nie gebreek" en Microsoft sal so 'n kritieke stukkie van hul motor nie verander sonder sterk adverteer dit as gevolg van die sukses probleme.

die tafel wat jy vermelding kom van desimale en numeriese stoor in MSDN , wat basies meer as int

is

As jy 'n streng alias, Gebruik spesiale gegee tik sterk sinspeel dat 'n int -gebaseerde tipe neem vier grepe en nie meer nie. As jy 'n CLR tipe, daar jakkalse, of meer oorhoofse.

In elk geval, kan jy die voetspoor van jou data tipes te verifieer deur te kyk na sys. tipes

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top