Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server no Windows
A partir do SQL Server 2008 (10.0.x), o OLE DB Driver para SQL Server suporta a funcionalidade melhorada FILESTREAM. Para exemplos, veja FILESTREAM e OLE DB.
O FILESTREAM fornece uma forma de armazenar e aceder a grandes valores binários, quer através do SQL Server quer através de acesso direto ao sistema de ficheiros do Windows. Um valor binário grande é um valor superior a 2 gigabytes (GB). Para mais informações sobre suporte melhorado a FILESTREAM, consulte FILESTREAM (SQL Server).
Quando uma ligação à base de dados é aberta, @@TEXTSIZE é definida para -1 (ilimitada), por defeito.
Também é possível aceder e atualizar colunas FILESTREAM usando APIs do sistema de ficheiros do Windows.
Para mais informações, consulte Access FILESTREAM Data with OpenSqlFilestream.
Consulta para Colunas FILESTREAM
Os conjuntos de linhas de esquema no OLE DB não reportam se uma coluna é uma coluna FILESTREAM.
ITableDefinition no OLE, o DB não pode ser usado para criar uma coluna FILESTREAM.
Para criar colunas FILESTREAM ou para detetar quais as colunas existentes que são colunas FILESTREAM, pode usar a is_filestream coluna da vista de catálogo sys.columns .
O seguinte script é um exemplo:
-- Create a table with a FILESTREAM column.
CREATE TABLE Bob_01 (
GuidCol1 UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL UNIQUE DEFAULT NEWID(),
IntCol2 INT,
varbinaryCol3 VARBINARY(MAX) FILESTREAM
);
-- Find FILESTREAM columns.
SELECT name
FROM sys.columns
WHERE is_filestream = 1;
-- Determine whether a column is a FILESTREAM column.
SELECT is_filestream
FROM sys.columns
WHERE name = 'varbinaryCol3'
AND object_id IN (
SELECT object_id
FROM sys.tables
WHERE name = 'Bob_01'
);
Down-Level Compatibilidade
Se o seu cliente foi compilado usando o OLE DB Driver for SQL Server, e a aplicação se liga ao SQL Server 2012 (11.x) e versões posteriores, então o comportamento varbinary(max) é compatível com o comportamento introduzido pelo SQL Server Native Client no SQL Server 2005 (9.x). Ou seja, o tamanho máximo dos dados devolvidos está limitado a 2 GB. Para valores de resultado superiores a 2 GB, ocorre truncamento e é devolvido um aviso de "truncamento à direita dos dados da cadeia".
Quando a compatibilidade entre tipos de dados é definida para 80, o comportamento do cliente é consistente com o comportamento do cliente em níveis inferiores.
Para clientes que utilizam SQLOLEDB ou outros fornecedores lançados antes do SQL Server 2005 (9.x), varbinary(max) é mapeado para image.
Comments
Para enviar e receber valores varbinary(max) superiores a 2 GB, uma aplicação utiliza
DBTYPE_IUNKNOWNligações de parâmetros e resultados. Para os parâmetros, o fornecedor deve chamar IUnknown::QueryInterface para ISequentialStream e para resultados que retornam ISequentialStream.Para OLE DB, a verificação relacionada com os valores ISequentialStream é relaxada. Quando o wType está
DBTYPE_IUNKNOWNnaDBBINDINGestrutura, a verificação de comprimento pode ser desativada omitindoDBPART_LENGTHdo dwPart, ou definindo o comprimento dos dados (no offset obLength no buffer de dados) para~0. Neste caso, o fornecedor não verifica o comprimento do valor e solicita e devolve todos os dados disponíveis através do fluxo. Esta alteração aplica-se a todos os tipos de objetos grandes (LOB) e XML, mas apenas quando ligado a servidores SQL Server 2005 (9.x) (ou posteriores). Isto proporciona maior flexibilidade para os programadores, mantendo a consistência e a compatibilidade retroativa para aplicações existentes e servidores downlevel. Esta alteração afeta todas as interfaces que transferem dados, principalmenteIRowset::GetData,ICommand::Execute, eIRowsetFastLoad::InsertRow.