Partilhar via


Blobs e objetos OLE

O provedor OLE DB do SQL Server Native Client expõe a interface ISequentialStream para dar suporte ao acesso do consumidor aos tipos de dados SQL Server ntext, text, image, varchar(max), nvarchar(max), varbinary(max) e xml como blobs (objetos binários grandes). O método Read no ISequentialStream permite que o consumidor recupere muitos dados em partes gerenciáveis.

Para obter um exemplo que demonstre esse recurso, consulte Definir Dados Grandes (OLE DB).

O provedor OLE DB do SQL Server Native Client pode usar uma interface IStorage implementada pelo consumidor quando o consumidor fornece o ponteiro de interface em um acessador associado à modificação de dados.

Para tipos de dados de valor grande, o provedor OLE DB do SQL Server Native Client verifica se há suposições de tamanho de tipo em interfaces IRowset e DDL. Colunas com tipos de dados varchar, nvarchar e varbinary com tamanho máximo definido como ilimitado serão representadas como ISLONG por meio dos conjuntos de linhas de esquema e interfaces que retornam tipos de dados de coluna.

O provedor OLE DB do SQL Server Native Client expõe os tipos varchar(max), varbinary(max) e nvarchar(max) como DBTYPE_STR, DBTYPE_BYTES e DBTYPE_WSTR respectivamente.

Para trabalhar com esses tipos, um aplicativo tem as seguintes opções:

  • Associar como o tipo (DBTYPE_STR, DBTYPE_BYTES, DBTYPE_WSTR). Se o buffer não for grande o suficiente, ocorrerá exatamente como para esses tipos em versões anteriores (embora valores maiores agora estejam disponíveis).

  • Associe como o tipo e especifique DBTYPE_BYREF.

  • Associar como DBTYPE_IUNKNOWN e usar streaming.

Se associado a DBTYPE_IUNKNOWN, a funcionalidade de fluxo ISequentialStream será usada. O provedor OLE DB do SQL Server Native Client dá suporte a parâmetros de saída de associação como DBTYPE_IUNKNOWN para tipos de dados de valor grande para facilitar cenários em que um procedimento armazenado retorna esses tipos de dados como valores retornados que serão expostos como DBTYPE_IUNKNOWN ao cliente.

Limitações do objeto de armazenamento

  • O provedor OLE DB do SQL Server Native Client pode dar suporte apenas a um único objeto de armazenamento aberto. Tentativas de abrir mais de um objeto de armazenamento (para obter uma referência em mais de um ponteiro de interface ISequentialStream ) retornam DBSTATUS_E_CANTCREATE.

  • No provedor OLE DB do SQL Server Native Client, o valor padrão da propriedade DBPROP_BLOCKINGSTORAGEOBJECTS somente leitura é VARIANT_TRUE. Isso indica que, se um objeto de armazenamento estiver ativo, alguns métodos (diferentes daqueles nos objetos de armazenamento) falharão com E_UNEXPECTED.

  • O comprimento dos dados apresentados por um objeto de armazenamento implementado pelo consumidor deve ser conhecido para o provedor OLE DB do SQL Server Native Client quando o acessador de linha que faz referência ao objeto de armazenamento é criado. O consumidor deve associar um indicador de comprimento na estrutura DBBINDING usada para a criação do acessador.

  • Se uma linha contiver mais de um único valor de dados grande e DBPROP_ACCESSORDER não for DBPROPVAL_AO_RANDOM, o consumidor deverá usar um conjunto de linhas com suporte de cursor do provedor OLE DB do SQL Server Native Client para recuperar dados de linha ou processar todos os valores de dados grandes antes de recuperar outros valores de linha. Se DBPROP_ACCESSORDER for DBPROPVAL_AO_RANDOM, o provedor OLE DB do SQL Server Native Client armazenará em cache todos os tipos de dados xml como BLOBs (objetos binários grandes) para que possam ser acessados em qualquer ordem.

Nesta seção

Consulte Também

SQL Server Native Client (OLE DB)
Usando tipos de valor grande