Y at-il un outil pour charger des fichiers dans les champs de varbinary (max)?
-
27-10-2019 - |
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.
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