Question

Je contemplait la création d'un outil à charge varbinary champs (max) dans une base de données SQL Server 2008 avec les fichiers comme sélectionnés à partir d'une boîte de dialogue de fichier ouvert. Y at-il un tel outil ou équivalent que je pourrais utiliser? Mon serveur SQL est dans un environnement hébergé où je n'ai pas accès physique au serveur afin de le charger avec TSQL est pas une option.

Était-ce utile?

La solution

Qu'en est-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()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top