Vra

Is die gebruiker gedefinieerde Data tipes in SQL Server iets wat 'n intermediêre SQL gebruiker behoort te weet en te gebruik?

Wat is voor- en nadele van die gebruik van UDTs?

Was dit nuttig?

Oplossing

Moet nooit hulle is my advies. Jy is in 'n wêreld van seer as jy ooit na die definisie verander. Miskien is dit verbeter het sedert SQL Server 2000 en iemand met meer kennis van die nuwer weergawes kan jou vertel of dit nou veilig in die water te kry, maar totdat ek het bevestiging van hierdie en het dit bewys nie myself met 'n toets, wouldn ek 't sit dit op my produksie stelsel.

Check uit hierdie vraag vir meer inligting: Hoe om die basis tipe verander van 'n UDT in SQL Server 2005?

Ander wenke

Ek doen nie gebruik-wetboek saamgestel gegrond UDTs want ek dink nie dat die ekstra kompleksiteit regverdig die voordele. I doen gebruik T-SQL UDTs want daar is baie min ekstra kompleksiteit sodat die voordele is die moeite werd. (Baie dankie aan Marc_s vir daarop te wys dat my oorspronklike post onvolledig was!)

Met betrekking tot-wetboek saamgestel gegrond UDTs

Dink aan dit so: indien jou projek het 'n beheer kode komponent (jou app) en 'n databasis komponent (SQL Server) wat die werklike voordeel kry jy uit die definisie van beheer kode in die databasis? In my ervaring? Geen.

Ontplooiing is moeiliker omdat jy sal moet gemeentes toe te voeg tot jou DB ontplooiing en hierdie gemeentes verander, lêers byvoeg, ens binne SQL Server. Jy sal ook moet draai op die CLR in SQL Server (nie 'n groot deal, maar niemand se bewys vir my dat dit nie sal 'n prestasie / geheue straf). Op die ou end, sal jy presies wat jy sou gehad het as jy net dit in die kode van jou aansoek ontwerp het. Daar kan 'n paar verbetering van prestasie, maar dit lyk my regtig as 'n geval van voortydige optimalisering - veral omdat ek weet nie of die algehele prestasie ly as gevolg van wat die CLR op versus af

.

Let wel: Ek neem aan dat jy sou gebruik CLR SQL Server se om jou soorte definieer. HLGEM praat oor SQL Server 2000, maar ek is nie vertroud is met 2000 en het gedink dit was net UDFs en nie UDTs in ekstern gedefinieerde dlls (maar nie vir my nie aanhaal ... ek regtig is nie vertroud is met dit!).

Met betrekking tot T-SQL UDTs

T_SQL UDTs kan alleen word gedefinieer in SQL (gaan na "Programmeerbaar | Tipe | Gebruiker-gedefinieerde Data tipes" in SQL Server Management Studio). Vir standaard UDTs I sal in werklikheid beveel aan dat jy hulle bemeester. Hulle is baie maklik en kan jou DDL meer self-dokumentering maak en kan integriteit beperkings af te dwing. Byvoorbeeld, ek definieer 'n "GenderType" (char (1), nie waarvoor geen nul mag, hou "M" of "F") wat verseker dat slegs geskikte data in die veld geslag is toegelaat.

UDTs is redelik maklik algehele maar hierdie artikel gee 'n goeie voorbeeld van hoe om dit te neem na die volgende vlak deur die definisie van 'n reël om die data toegelaat in jou UDT dwing.

Toe ek oorspronklik hierdie vraag wat ek is vasgestel op die idee van komplekse,-kode gedefinieerde tipes antwoord ( getuig palm om voorkop ). So ... dankie Marc.

Ek kan nie regtig beveel die gebruik van enige SQL-implementering spesifieke eienskappe wat dit moeiliker maak wanneer jy groei uit MSSQL en migreer na 'n ander DBMS. Vir ons DWH DBS ons begin op MSSQL, migreer na Oracle en het sedert verlede jaar gegradueer aan HP vertica.

scroll top