Partilhar via


IRowsetFastLoad::InsertRow (provedor OLE DB do cliente nativo)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure PDW (Sistema de Plataforma de Análise) do Azure Synapse Analytics

Importante

O SQL Server Native Client (geralmente abreviado como SNAC) foi removido do SQL Server 2022 (16.x) e do SSMS (SQL Server Management Studio) 19. O provedor OLE DB do SQL Server Native Client (SQLNCLI ou SQLNCLI11) e o Provedor OLE DB herdado da Microsoft para o SQL Server (SQLOLEDB) não são recomendados para um novo desenvolvimento. Alterne para o novo Driver do Microsoft OLE DB para SQL Server (MSOLEDBSQL) no futuro.

Adiciona uma linha ao conjunto de linhas de cópia em massa. Para obter exemplos, confira Copiar Dados em massa usando IRowsetFastLoad (OLE DB) e Enviar dados de blob para o SQL Server usando IROWSETFASTLOAD e ISEQUENTIALSTREAM (OLE DB).

Sintaxe

  
HRESULT InsertRow(  
      HACCESSOR hAccessor,  
      void* pData);  

Argumentos

hAccessor[in]
O identificador do acessador que define os dados de linha para cópia em massa. O acessador referenciado é um acessador de linha, que associa a memória de propriedade do consumidor contendo valores de dados.

pData[in]
Um ponteiro para a memória de propriedade do consumidor que contém valores de dados. Para obter mais informações, consulte Estruturas DBBINDING.

Valores do código de retorno

S_OK
O método foi bem-sucedido. Todos os valores de status associados para todas as colunas têm o valor DBSTATUS_S_OK ou DBSTATUS_S_NULL.

E_FAIL
Ocorreu um erro. As informações do erro estão disponíveis nas interfaces de erro do conjunto de linhas.

E_INVALIDARG
O argumento pData foi definido como um ponteiro NULL.

E_OUTOFMEMORY
SQLNCLI11 não pôde alocar memória suficiente para concluir a solicitação.

E_UNEXPECTED
O método foi chamado em um conjunto de linhas de cópia em massa invalidado anteriormente pelo método IRowsetFastLoad::Commit.

DB_E_BADACCESSORHANDLE
O argumento hAccessor fornecido pelo consumidor era inválido.

DB_E_BADACCESSORTYPE
O acessador especificado não era um acessador de linha ou não especificou a memória de propriedade do consumidor.

Comentários

Um erro ao converter dados do consumidor no tipo de dados SQL Server para uma coluna causa um retorno E_FAIL do provedor OLE DB do SQL Server Native Client. Os dados podem ser transmitidos para o SQL Server em qualquer método InsertRow ou apenas no método Commit. O aplicativo do consumidor pode chamar o método InsertRow muitas vezes com dados incorretos antes ser avisado de que há um erro de conversão de tipo de dados. Como o método Commit assegura que todos os dados sejam especificados corretamente pelo consumidor, ele pode usar o método Commit apropriadamente para validar os dados, conforme necessário.

Os conjuntos de linhas de cópia em massa do provedor OLE DB do SQL Server Native Client são somente gravação. O provedor OLE DB do SQL Server Native Client não expõe nenhum método que permita a consulta do consumidor do conjunto de linhas. Para encerrar o processamento, o consumidor pode liberar sua referência na interface IRowsetFastLoad sem chamar o método Commit. Não há nenhum recurso para acessar uma linha inserida pelo consumidor no conjunto de linhas e alterar seus valores ou para removê-la individualmente do conjunto de linhas.

As linhas copiadas em massa são formatadas no servidor para o SQL Server. O formato de linha é afetado por todas as opções que possam ter sido definidas para a conexão ou sessão, como ANSI_PADDING. Essa opção é definida por padrão para qualquer conexão feita por meio do provedor OLE DB do SQL Server Native Client.

Confira também

IRowsetFastLoad (OLE DB)