Colocar os dados na mesma ordem em que os campos fizeram funcionar (ou parecem funcionar, pelo menos):
INSERT INTO Files(File, Name)
SELECT
* FROM OPENROWSET(BULK 'C:\file.bin', SINGLE_BLOB) AS File
"file.bin" AS Name
GO
Estou tentando carregar um arquivo binário no SQL Servidor , em um campo varbinary. Eu criei esta consulta para fazer isso:
INSERT INTO Files(File, Name)
SELECT
"file.bin" AS Name
* FROM OPENROWSET(BULK 'C:\file.bin', SINGLE_BLOB) AS File
GO
mas estou recebendo este erro:
Implicit conversion from data type varchar to varbinary(max) is not allowed. Use the CONVERT function to run this query.
Se bem entendi, ele está lendo o arquivo como texto (varchar) enquanto é binário e deve ser armazenado como binário no varbinary. Temo que isso possa destruí-lo no processo, vai? e mesmo que não, como eu uso o método CONVERT?
Eu nunca fiz isso sozinho, mas eu encontrei esta página mostrando o mesmo procedimento para inserir um jpg em um varbinaries ... a única diferença é o N antes do nome do caminho e nenhum switch AS
Espero que isso ajude, mas provavelmente esteja faltando alguma coisa relacionada à conversão
Não sei por que isso está retornando uma coluna varchar. Parece o mesmo que o exemplo no msdn .
Eu não sei como você poderia converter essa coluna. Talvez ...
SELECT
convert(varbinary(max), * FROM OPENROWSET(BULK 'C:\file.bin', SINGLE_BLOB)) AS File
Mas, eu estaria mais preocupado em ser um varchar quando você especifica SINGLE_BLOB.
Tags upload sql-server varbinary