问题描述
我正在尝试将 zip 文件插入 sql server 数据库(文件流处于活动状态)。 没问题,当 zip 文件
- 无法将参数“0”转换为“2504870328”,将“Int64[]”转换为“system.int32”:“无法将值“2504870328”转换为“system.int32”。错误:“值”要么太大要么太大 对于 Int32 来说很小。""
- 使用“0”个参数调用“ExecuteNonQuery”的异常:“无法访问关闭的文件。”
我的代码看起来像这样:
Function Upload-ZIPFile
{
[CmdletBinding()]
param(
[Parameter(Mandatory)]
[double]$ScriptVersion,[Parameter(Mandatory)]
[validateset('PS','AdminDB','sqlBinary')]
[string]$ScriptType,[Parameter(Mandatory)]
[string]$ZIPFile,[Parameter(Mandatory)]
[string]$Build
)
$checkSum = Get-filehash $ZIPFile
## here was the orignal code,works with all files less than 2 GB
## [byte[]]$file = [System.IO.File]::ReadAllBytes($ZIPFile)
$file = New-Object System.IO.Filestream($ZIPFile,[System.IO.FileMode]'Open',[System.IO.FileAccess]'Read')
$buffer = New-Object long[] -ArgumentList $file.length
$conn = New-Object System.Data.sqlClient.sqlConnection
$file.Read($buffer,$buffer.Length)
$file.Close()
$conn.ConnectionString = "Server=MyServer\Instance;Database=sql_TEAM;Integrated Security=True"
$conn.open() | out-null
$cmd = new-Object System.Data.sqlClient.sqlCommand
$cmd.Connection = $conn
$cmd.CommandText = "Insert deployment.softwarerepository(fileID,version_nr,file_typ,datafile,checksum,build) values (NEWID(),$ScriptVersion,'$ScriptType',@insert,@hash,'$Build')"
$cmd.Parameters.AddWithValue("@insert",$file)
$cmd.Parameters.AddWithValue("@hash",$checkSum.Hash)
#
#exek
$cmd.ExecuteNonQuery()
$conn.Close()
$conn.dispose()
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)