Megosztás a következőn keresztül:


sp_tableoption (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Opcióértékeket állít be a felhasználó által definiált táblákhoz. sp_tableoption Használható a táblák soron belüli viselkedésének vezérlésére varchar(max), nvarchar(max),varbinary(max),xml, text, ntext, image, vagy nagy felhasználó által definiált típusú oszlopok esetén.

Fontos

A szöveg sorban funkciót eltávolítják az SQL Server jövőbeli verziójában. Nagy értékű adatok tárolásához javasoljuk, hogy használd a varchar(max), nvarchar(max) és varbinary(max) adattípusokat.

Transact-SQL szintaxis konvenciók

Szemantika

sp_tableoption
    [ @TableNamePattern = ] N'TableNamePattern'
    , [ @OptionName = ] 'OptionName'
    , [ @OptionValue = ] 'OptionValue'
[ ; ]

Arguments

[ @TableNamePattern = ] N'TableNamePattern'

A felhasználó által definiált adatbázis-tábla minősített vagy nem minősített neve. @TableNamePatternnvarchar(776), alapértelmezett nélkül. Ha egy teljesen minősített táblanév, beleértve az adatbázis nevét is, az adatbázis nevének az aktuális adatbázis neve kell legyen. Több asztal táblázatbeállításai nem állíthatók be egyszerre.

[ @OptionName = ] 'OptionName'

Egy táblázat opció név. @OptionName a varchar(35), és lehet az alábbi értékek egyike.

Érték Description
table lock on bulk load Ha kitiltják (az alapértelmezett), a felhasználó által definiált táblákon a tömeges terhelés során sorzárolásokat kap. Ha engedélyezve, a felhasználó által definiált táblákon lévő tömeges terhelési folyamatok tömeges frissítési zárolást kapnak.
insert row lock A továbbiakban nem támogatott.

Ez az opció nem befolyásolja az SQL Server zárolási viselkedését, és csak a meglévő szkriptek és eljárások kompatibilitása érdekében van beépítve.
text in row Amikor OFF vagy 0 (ki van kapcsolva, az alapértelmezett mód), nem változtat a jelenlegi viselkedésen, és nincs BLOB a sorban.

Amikor megadják és @OptionValue engedélyezett ON (engedélyezve), vagy egy egész érték az 24 át, 7000az új szöveg, ntext vagy kép stringek közvetlenül az adatsorban tárolódnak. Minden meglévő BLOB (bináris nagy objektum: szöveg, ntext vagy kép) adat sorformátumú szövegre változik, amikor a BLOB értéket frissítik. További információ: Megjegyzések.
large value types out of row 1 = varchar(max), nvarchar(max),varbinary(max),xml és nagy felhasználó által definiált típusú (UDT) oszlopok a táblázatban soron kívül vannak tárolva, 16 bájtos mutatóval a gyökérhez.

0 = varchar(max), nvarchar(max), varbinary(max), xml és nagy UDT értékek közvetlenül az adatsorban vannak tárolva, legfeljebb 8 000 bájtos határon, amíg az érték elfér a rekordba. Ha az érték nem fér be a rekordba, egy mutatót sorban tárolnak, a többi pedig a soron kívül a LOB tárolóhelyen. 0 az alapértelmezett érték.

A nagy felhasználó-definiált típus (UDT) az SQL Server 2008 (10.0.x) és újabb verziókra vonatkozik.

Használja a TEXTIMAGE_ONCREATE TABLE opciót, hogy megadj egy helyet a nagy adattípusok tárolására.
vardecimal storage format Az: SQL Server 2008 (10.0.x) és újabb verziókra vonatkozik.

Amikor TRUE, ON, vagy 1, a kijelölt tábla engedélyezett a vardecimális tárolási formátumhoz. Amikor FALSE, OFF, vagy 0, a tábla nincs engedélyezve vardecimális tárolási formátumban. A vardecimal tárolási formátum csak akkor engedélyezhető, ha az adatbázis vardetsimalis tárolási formátumra van engedélyezve sp_db_vardecimal_storage_format használatával. Az SQL Server 2008 (10.0.x) és későbbi verziókban a vardecimal tárolási formátum elavult. Használj ROW inkább kompressziót. További információ: Adattömörítés. 0 az alapértelmezett érték.

[ @OptionValue = ] 'OptionValue'

Megadja, hogy a @OptionName engedélyezett-e (TRUE, ON, vagy 1) vagy letiltott (FALSE, OFF, vagy 0). @OptionValuea varchar(12), alapértelmezett nélkül. @OptionValue az önderítésérzékeny.

A szöveg sorban opció esetén érvényes opcióértékek 0, ON, OFF, vagy egy egész szám a .247000 Ha @OptionValue , ONa korlát alapértelmezetten 256 bájt.

Kódértékek visszaadása

0 (siker) vagy hibaszám (hiba).

Megjegyzések

sp_tableoption csak a felhasználó által definiált táblák opcióértékeinek beállítására használható. A táblatulajdonságok megjelenítéséhez használd az OBJECTPROPERTY vagy query sys.tables-t .

A szöveg sorban opció sp_tableoption csak olyan táblázatokon engedélyezhető vagy kitiltható, amelyek szövegoszlopokat tartalmaznak. Ha a táblának nincs szöveges oszlopa, az SQL Server hibát ad.

Amikor a szöveg a sorban opció engedélyezett, a @OptionValue paraméter lehetővé teszi a felhasználók számára, hogy meghatározzák a BLOB maximális méretét, amelyet egy sorban tárolhatnak. Az alapértelmezett érték 256 bájt, de az értékek 24 és 7000 bájt között lehetnek.

Szöveg, ntext vagy képi láncsorok tárolódnak az adatsorban, ha a következő feltételek érvényesek:

  • A sorban lévő szöveg engedélyezve van.
  • A húr hossza rövidebb, mint a @OptionValue-ben meghatározott határ.
  • Elég hely van az adatsorban.

Amikor a BLOB stringek az adatsorban vannak tárolva, a szöveg, ntext vagy kép stringek olvasása és írása olyan gyorsan megy, mint a karakter- és bináris stringek olvasása vagy írása. Az SQL Servernek nem kell külön oldalakhoz hozzáférnie a BLOB string olvasásához vagy írásához.

Ha egy szöveg, ntext vagy képlánc nagyobb, mint a megadott korlát vagy a sorban elérhető hely, akkor a mutatókat a sorban tárolják. A BLOB sorozatok sorban való tárolásának feltételei azonban érvényesek: Elég helynek kell lennie az adatsorban, hogy elrejtsék az mutatókat.

A táblázat sorában tárolt BLOB láncokat és mutatókat hasonlóan kezelik, mint a változó hosszúságú stringeket. Az SQL Server csak annyi bájtszámot használ, amennyi a string vagy a mutató tárolásához szükséges.

A meglévő BLOB stringek nem konvertálódnak azonnal, amikor először engedélyezik a sorban lévő szöveget. A stringeket csak akkor konvertálják, ha frissítik őket. Hasonlóképpen, ha a szöveg sorban lévő opció korlátja megnő, a már meglévő szöveg-,ntext- vagy képsorok nem konvertálódnak az új korláthoz egészen a frissítésükig.

Megjegyzés:

A szöveg sorban opció letiltása vagy a lehetőség korlátjának csökkentése minden BLOB átalakítását igényli; ezért a folyamat hosszú lehet, attól függően, hány BLOB húrt kell átalakítani. Az asztal a konvertálás során zárva van.

Egy táblaváltozó, beleértve egy olyan függvényt is, amely egy táblázatváltozót ad, automatikusan engedélyezi a szöveg sorban opciót, alapértelmezett 256-os inline limittel. Ezt az opciót nem lehet megváltoztatni.

A szöveg sorban opció támogatja a TEXTPTR, WRITETEXT, UPDATETEXT és READTEXT funkciókat. A felhasználók a SUBSTRING() funkcióval olvashatnak egy BLOB egyes részeit, de szem előtt kell tartaniuk, hogy a sorbeli szövegmutatók eltérő időtartam- és számkorlátokkal rendelkeznek, mint más szövegmutatók.

Ahhoz, hogy egy tábla a vardecimal tárolási formátumból visszaváltoztassa a normál tizedes tárolási formátumra, az adatbázisnak SIMPLE helyreállítási modellben kell lennie. A helyreállítási modell megváltoztatása megszakítja a napló láncot a biztonsági mentés céljából, ezért teljes adatbázis-mentést kell létrehoznod, miután eltávolítod a vardecimális tárolóformátumot egy táblából.

Ha egy meglévő LOB adattípus oszlopot (szöveg, ntext vagy képet) kicsi-közepes nagy értékű típusokra (varchar(max), nvarchar(max) vagy varbinary(max)) alakítasz át, és a legtöbb állítás nem hivatkozik a környezeted nagy értékű oszlopaira, fontold meg large_value_types_out_of_row1 módosítását az optimális teljesítmény érdekében. Amikor a large_value_types_out_of_row opció értékét megváltoztatják, a meglévő varchar(max), nvarchar(max), varbinary(max) és xml értékek nem kerülnek azonnal átalakulni. A húrok tárolása később változik, ahogy frissülnek. Az új értékek, amelyeket egy táblázatba helyeznek, a jelenlegi táblázat opció szerint tárolódnak. Az azonnali eredményekhez vagy készíts másolatot az adatokból, majd újratöltsd a táblát a large_value_types_out_of_row beállítás megváltoztatása után, vagy frissítsd az egyes kis- és közepes nagy értékű típusok oszlopot önmagára, hogy a karakterláncok tárolása a tábla opcióval változzon. Fontold meg, hogy a frissítés vagy újranépesítés után újraépítik az indexeket, hogy tömörítsék a táblázatot.

Permissions

A végrehajtáshoz sp_tableoptionALTER engedély szükséges az asztalon.

Példák

A. XML adatokat tárolj a soron kívül

A következő példa azt jelzi, hogy a táblázatban szereplő xml adatokat HumanResources.JobCandidate soron kívül tárolják.

USE AdventureWorks2022;
GO

EXECUTE sp_tableoption 'HumanResources.JobCandidate', 'large value types out of row', 1;

B. Enable vardecimal storage format a table

A következő példa módosítja a Production.WorkOrderRouting táblát, hogy a tizedes adattípust vardecimális tárolóformátumban tárolja.

USE master;
GO

-- The database must be enabled for vardecimal storage format
-- before a table can be enabled for vardecimal storage format
EXECUTE sp_db_vardecimal_storage_format 'AdventureWorks2022', 'ON';
GO

USE AdventureWorks2022;
GO

EXECUTE sp_tableoption 'Production.WorkOrderRouting', 'vardecimal storage format', 'ON';