Sdílet prostřednictvím


Podpora řídkých sloupců v nativním klientovi SQL Serveru

platí pro:SQL ServerAzure SQL Databaseazure SQL Managed InstanceAzure Synapse AnalyticsPlatform Platform System (PDW)

Důležitý

SQL Server Native Client (SNAC) není dodáván s:

  • SQL Server 2022 (16.x) a novější verze
  • SQL Server Management Studio 19 a novější verze

Pro vývoj nových aplikací se nedoporučuje nativní klient SQL Serveru (SQLNCLI nebo SQLNCLI11) a starší zprostředkovatel Microsoft OLE DB pro SQL Server (SQLOLEDB).

Pro nové projekty použijte jeden z následujících ovladačů:

Informace o SQLNCLI, které se dodává jako součást databázového stroje SQL Serveru (verze 2012 až 2019), naleznete v tomto support lifecycle exception.

SQL Server Native Client podporuje řídké sloupce. Další informace o řídkých sloupcích v SQL Serveru najdete v tématu Použití řídkých sloupců a Použití sad sloupců.

Další informace o podpoře řídkých sloupců v nativním klientovi SQL Serveru najdete v tématu Podpora řídkých sloupců (ODBC) a podpora řídkých sloupců (OLE DB).

Scénáře uživatelů pro řídké sloupce a nativního klienta SQL Serveru

Následující tabulka shrnuje běžné uživatelské scénáře pro uživatele sql Serveru Native Client se řídkými sloupci:

Scénář Chování
vyberte * z tabulky nebo IOpenRowset::OpenRowset. Vrátí všechny sloupce, které nejsou členy řídké column_set, plus sloupec XML obsahující hodnoty všech sloupců, které nejsou null, které jsou členy řídké column_set.
Odkaz na sloupec podle názvu. Na sloupec se dá odkazovat bez ohledu na jeho stav zhuštěného sloupce nebo column_set členství.
Access column_set členské sloupce prostřednictvím počítaného sloupce XML. Ke sloupcům, které jsou členy řídké column_set, se dostanete tak, že vyberete column_set podle názvu a můžou mít vložené a aktualizované hodnoty aktualizací XML ve sloupci column_set.

Hodnota musí odpovídat schématu pro column_set sloupce.
Načtení metadat pro všechny sloupce v tabulce prostřednictvím sqlColumns se vzorem hledání sloupců NULL nebo%(ODBC); nebo prostřednictvím sady řádků schématu DBSCHEMA_COLUMNS bez omezení sloupců (OLE DB). Vrátí řádek pro všechny sloupce, které nejsou členy column_set. Pokud tabulka obsahuje řídké column_set, vrátí se pro ni řádek.

Všimněte si, že to nevrací metadata pro sloupce, které jsou členy column_set.
Načíst metadata pro všechny sloupce bez ohledu na řídké nebo členství v column_set. To může vrátit velmi velký počet řádků. Nastavte pole popisovače SQL_SOPT_SS_NAME_SCOPE na SQL_SS_NAME_SCOPE_EXTENDED a volejte SQLColumns (ODBC).

Volání IDBSchemaRowset::GetRowset pro sadu řádků schématu DBSCHEMA_COLUMNS_EXTENDED (OLE DB).

Tento scénář není možný z aplikace, která používá nativního klienta SQL Serveru z verze starší než SQL Server 2008 (10.0.x). Taková aplikace ale může dotazovat zobrazení systému přímo.
Načíst metadata pouze pro sloupce, které jsou členy column_set. To může vrátit velmi velký počet řádků. Nastavte pole popisovače SQL_SOPT_SS_NAME_SCOPE na SQL_SS_NAME_SCOPE_SPARSE_COLUMN_SET a volejte sqlColumns (ODBC).

Volání IDBSchemaRowset::GetRowset pro sadu řádků schématu DBSCHEMA_SPARSE_COLUMN_SET (OLE DB).

Tento scénář není možný z aplikace, která používá nativního klienta SQL Serveru z verze starší než SQL Server 2008 (10.0.x). Taková aplikace ale může dotazovat zobrazení systému.
Určete, jestli je sloupec řídký. Projděte si SS_IS_SPARSE sloupec sady výsledků SQLColumns (ODBC).

Projděte si sloupec SS_IS_SPARSE sady řádků schématu DBSCHEMA_COLUMNS (OLE DB).

Tento scénář není možný z aplikace, která používá nativního klienta SQL Serveru z verze starší než SQL Server 2008 (10.0.x). Taková aplikace ale může dotazovat zobrazení systému.
Určete, zda je sloupec column_set. Projděte si sloupec SS_IS_COLUMN_SET sady výsledků SQLColumns. Nebo se podívejte na atribut sloupce specifický pro SQL Server SQL_CA_SS_IS_COLUMN_SET (ODBC).

Projděte si sloupec SS_IS_COLUMN_SET sady řádků schématu DBSCHEMA_COLUMNS. Nebo se podívejte na dwFlags vrácená IColumnsinfo::GetColumnInfo nebo DBCOLUMNFLAGS v sadě řádků vrácených IColumnsRowset::GetColumnsRowset. U sloupců column_set se DBCOLUMNFLAGS_SS_ISCOLUMNSET nastaví (OLE DB).

Tento scénář není možný z aplikace, která používá nativního klienta SQL Serveru z verze starší než SQL Server 2008 (10.0.x). Taková aplikace ale může dotazovat zobrazení systému.
Import a export zhuštěných sloupců podle BCP pro tabulku bez column_set. V předchozích verzích nativního klienta SQL Serveru nedošlo ke změně chování.
Import a export zhuštěných sloupců podle BCP pro tabulku s column_set. column_set se importuje a exportuje stejným způsobem jako XML; to znamená, že varbinary(max), pokud je vázán jako binární typ, nebo jako nvarchar(max), pokud je vázán jako znak nebo wchar typ.

Sloupce, které jsou členy řídké column_set, se neexportují jako samostatné sloupce; jsou exportovány pouze v hodnotě column_set.
chování dotazu pro BCP. V zpracování explicitně pojmenovaných sloupců z předchozích verzí nativního klienta SQL Serveru nedošlo k žádné změně.

Scénáře týkající se importu a exportu mezi tabulkami s různými schématy můžou vyžadovat zvláštní zpracování.

Další informace o BCP naleznete v tématu Podpora hromadného kopírování (BCP) pro řídké sloupce dále v tomto tématu.

Chování klienta Down-Level

Klienti nižší úrovně budou vracet metadata pouze pro sloupce, které nejsou členy řídké column_set pro SQLColumns a DBSCHEMA_COLUMNS. Další sady řádků schématu OLE DB zavedené v SYSTÉMU SQL Server 2008 (10.0.x) Nativní klient nebudou k dispozici, ani změny SQLColumns v rozhraní ODBC prostřednictvím SQL_SOPT_SS_NAME_SCOPE.

Klienti nižší úrovně mají přístup ke sloupcům, které jsou členy řídké column_set podle názvu, a sloupec column_set bude přístupný jako sloupec XML pro klienty SQL Serveru 2005 (9.x).

Podpora hromadného kopírování (BCP) pro řídké sloupce

V rozhraní ODBC nebo OLE DB nejsou žádné změny rozhraní API BCP pro řídké sloupce nebo column_set funkce.

Pokud tabulka obsahuje column_set, řídké sloupce se nezpracují jako odlišné sloupce. Hodnoty všech řídkých sloupců jsou zahrnuty v hodnotě column_set, která se exportuje stejným způsobem jako sloupec XML; to znamená, že varbinary(max), pokud je vázán jako binární typ, nebo jako nvarchar(max), pokud je vázán jako znak nebo wchar typ). Při importu musí hodnota column_set odpovídat schématu column_set.

U operací dotazu neexistuje žádná změna způsobu zpracování explicitně odkazovaných sloupců. column_set sloupce mají stejné chování jako sloupce XML a zhuštěnost nemá žádný vliv na zpracování pojmenovaných řídkých sloupců.

Pokud se však dotazování používá k exportu a odkazujete na řídké sloupce, které jsou členy řídké sady sloupců podle názvu, nemůžete provést přímý import do podobně strukturované tabulky. Důvodem je to, že BCP používá metadata konzistentní s vybrat * operaci importu a nemůže odpovídat column_set členské sloupce s tímto metadatem. Pokud chcete importovat column_set členské sloupce jednotlivě, musíte definovat zobrazení v tabulce, která odkazuje na požadované column_set sloupce, a musíte provést operaci importu pomocí zobrazení.

Viz také

nativního klientského programování SQL Serveru