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í.