Sql server 2008 是否有将文件加载到varbinary(max)字段的工具?

Sql server 2008 是否有将文件加载到varbinary(max)字段的工具?,sql-server-2008,varbinarymax,Sql Server 2008,Varbinarymax,我正在考虑创建一个工具,在SQLServer2008数据库中加载varbinary(max)字段,其中包含从打开的文件对话框中选择的文件。我是否可以使用任何此类工具或等效工具?我的SQL server所在的托管环境中,我没有对服务器的物理访问权限,因此无法使用TSQL加载它。powershell怎么样 # from: http://sev17.com/2010/05/t-sql-tuesday-006-blobs-filestream-and-powershell/ # $server = "s

我正在考虑创建一个工具,在SQLServer2008数据库中加载varbinary(max)字段,其中包含从打开的文件对话框中选择的文件。我是否可以使用任何此类工具或等效工具?我的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()

文件是否在服务器本身上?如果是这样,我通常使用TSQL来完成<代码>从OPENROWSET中选择BulkColumn(BULK N'c:\somefile.txt',SINGLE_BLOB),因为我否,我的服务器处于托管环境中(使用此信息更新帖子)。啊,对了。我不知道有什么工具可以做到这一点。我知道
bcp
可以导出二进制数据-我从未调查过是否可以使用它来导入。如果工具不能使用TSQL,它将如何与SQL Server通信?TSQL不能使用,因为它只知道本地SQL Server,我无法将客户端PC上存在的文件加载到服务器。这很好,但我更喜欢windows窗体/WPF解决方案。如果我看不到其他答案,我会接受这个。