Есть ли инструмент для загрузки файлов в поля varbinary (max)?

StackOverflow https://stackoverflow.com/questions/5364156

  •  27-10-2019
  •  | 
  •  

Вопрос

Я размышлял о создании инструмента для загрузки полей Varbinary (MAX) в базе данных SQL Server 2008 с файлами, выбранными из диалога Open File. Есть ли такой инструмент или эквивалент, который я мог бы использовать? Мой SQL Server находится в размещенной среде, где у меня нет физического доступа к серверу, поэтому загрузка его с помощью TSQL не является вариантом.

Это было полезно?

Решение

Как насчет PowerShell?

# from: http://sev17.com/2010/05/t-sql-tuesday-006-blobs-filestream-and-powershell/
#
$server = "superfly\sqlexpress"
$database = "Yak"
$query = "INSERT dbo.FileStore VALUES (@FileData, @FileName)"
$filepath = "d:\yak.txt"
$FileName = get-childitem $filepath | select -ExpandProperty Name

$connection=new-object System.Data.SqlClient.SQLConnection
$connection.ConnectionString="Server={0};Database={1};Integrated Security=True" -f $server,$database
$command=new-object system.Data.SqlClient.SqlCommand($query,$connection)
$command.CommandTimeout=120
$connection.Open()

$fs = new-object System.IO.FileStream($filePath,[System.IO.FileMode]'Open',[System.IO.FileAccess]'Read')
$buffer = new-object byte[] -ArgumentList $fs.Length
$fs.Read($buffer, 0, $buffer.Length)
$fs.Close()

$command.Parameters.Add("@FileData", [System.Data.SqlDbType]"VarBinary", $buffer.Length)
$command.Parameters["@FileData"].Value = $buffer
$command.Parameters.Add("@FileName", [System.Data.SqlDbType]"NChar", 50)
$command.Parameters["@FileName"].Value = $FileName
$command.ExecuteNonQuery()

$connection.Close()
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top