标签: varbinary

如何使用图像字段提高SQL Server表的性能?

我在工作中遇到了非常特殊的性能问题!

在我们使用的系统中,有一个表格,其中包含有关当前工作流程的信息.其中一个字段包含一个电子表格,其中包含有关该过程的元数据(不要问我为什么!!我不能改变它!)

问题是此电子表格存储在SQL Server 2005的IMAGE字段中(在具有SQL 2000兼容性的数据库集中).

这个表目前有22K +行甚至是这样的简单查询:

SELECT TOP 100 *
  FROM OFFENDING_TABLE
Run Code Online (Sandbox Code Playgroud)

在查询分析器中检索数据需要30秒.

我正在考虑更新与SQL 2005的兼容性(一旦我被告知应用程序可以处理它).

我想的第二件事是将列的数据类型更改为varbinary(max)但我不知道这样做是否会影响应用程序.

我正在考虑的另一件事是使用sp_tableoption设置large value types out of row1,因为它是目前0的,但我没有任何信息,如果这样做将提高性能.

有谁知道在这种情况下如何提高性能?


编辑澄清

我的问题是,我无法控制应用程序向SQL Server提出的问题,我对它做了一些反思(该应用程序是一个.NET 1.1网站),并且它使用了违规字段来处理一些我不知道的内部内容这是什么.

我需要提高这个表的整体性能.

sql-server varbinary imagefield

6
推荐指数
1
解决办法
1万
查看次数

SQL将unicode编码的varbinary转换为字符串

好的,我必须导出REG_BINARY值并将它们存储在SQL中,稍后我需要将这些值转换为字符串..

是)我有的:

在c#中我将REG_BINARY读取为Byte []数据类型,如:

RegistryKey rk = Registry.CurrentUser.OpenSubKey ...

byte [] value = rk.GetValue("TheKey")

然后我使用以下方法将它存储到SQL VarBinary字段:

        private void SqlStorePstFileInfo(List<PersonalFolderObject> listOfPstObjects, int? userComputerId)
    {
        using (var sqlConnection = new SqlConnection(GetConnectionString()))
        {
            sqlConnection.Open();
            foreach (PersonalFolderObject pfo in listOfPstObjects)
            {
                string s = "INSERT INTO [InvPstFile] (UserComputerId, Name, Path, Size, OldRegBinary) VALUES(@UserComputerId, @Name, @Path, @Size, @OldRegBinary)";
                using (SqlCommand sqlCmd = new SqlCommand(s, sqlConnection))
                {
                    SqlParameter pUserComputerId = sqlCmd.Parameters.Add("@UserComputerId", SqlDbType.Int);
                    pUserComputerId.Value = userComputerId;
                    SqlParameter pName = sqlCmd.Parameters.Add("@Name", SqlDbType.NVarChar);
                    pName.Value = pfo.Name;
                    SqlParameter pPath  = …
Run Code Online (Sandbox Code Playgroud)

c# sql encoding varbinary

6
推荐指数
1
解决办法
8073
查看次数

将varbinary转换回.txt文件

我有一个数据库(SQL 2008),我存储文件.这些保存为varbinary(max)类型.

现在我需要再次获取.txt文件,这样我就可以遍历文件的内容,就像我以前使用StreamReader一样.

while ((line = file.ReadLine()) != null)
{
string code = line.Substring(line.Length - 12);
}
Run Code Online (Sandbox Code Playgroud)

但是如何将varbinary byte []转换回普通的.txt文件,这样我就可以逐行浏览内容.

我发现了一些内存流或文件流的想法,但无法让它们工作.

提前致谢!

c# asp.net file varbinary

5
推荐指数
2
解决办法
9381
查看次数

将 VARBINARY 传递给存储过程

我有一些格式为 ASCII 十六进制的源数据。我需要将其放入 SQL 数据库的 VARBINARY 字段中。我已将问题减少到最低限度以说明我想做的事情。我有一个存储过程:

CREATE PROCEDURE BinaryDemo
    @BinaryData varbinary(max)
AS
BEGIN
    PRINT @BinaryData;
END
Run Code Online (Sandbox Code Playgroud)

我知道它“有效”,因为我可以这样做:

DECLARE @tmp varbinary(max);
SET @tmp = CONVERT(varbinary, '1234567890abcdef', 2);
EXEC BinaryDemo @BinaryData=@tmp;
Run Code Online (Sandbox Code Playgroud)

我想做的是跳过中间步骤并调用如下过程:

EXEC BinaryDemo @BinaryData=CONVERT(varbinary, '1234567890abcdef', 2);
Run Code Online (Sandbox Code Playgroud)

不幸的是,SQL 抱怨语法:关键字“CONVERT”附近的语法不正确。

我知道 CONVERT 是正确的,因为我可以:

PRINT CONVERT(varbinary, '1234567890abcdef', 2);
Run Code Online (Sandbox Code Playgroud)

我看到的正是我所期望的。由于源数据的性质和数量,第一个示例(声明/设置/执行)确实是一个糟糕的选择。

parameters stored-procedures varbinary sql-server-2008-r2

5
推荐指数
1
解决办法
1万
查看次数

SQL 查询将文本数据存储在 Varbinary(max) 中

有没有办法让 varbinary 在 SQL Server 中接受文本数据?

这是我的情况。我有相当大量的 XML,我计划以“压缩”格式存储它们。(这意味着 Varbinary。)

但是,当我进行调试时,我希望能够翻转配置开关并以纯文本形式存储,以便我可以从数据库进行故障排除(即不需要客户端应用程序来解压缩)。

是否可以将普通文本插入到 varbinary(max) 中?

.net t-sql sql-server text varbinary

5
推荐指数
1
解决办法
1万
查看次数

NHibernate : 存储 VARBINARY 到 MAX

我正在使用以下映射将 Serializable 对象存储到 SQL Server 2008:

<class name="EMSApplication.Data.Domain.Configuration, EMSApplication.Data" table="ems_Configurations" proxy="EMSApplication.Data.Domain.IConfiguration, EMSApplication.Data" lazy="true">
  <id name="Id" type="System.Int32">
    <column name="Id" not-null="true"/>
    <generator class="native"/>
  </id>
  <property name="Settings" type="Serializable">
    <column name="Settings" not-null="true"/>
  </property>   
</class>
Run Code Online (Sandbox Code Playgroud)

它正在为数据库的列类型生成一个 varbinary(8000)。我怎样才能让它使用 varbinary(max)?

如果我使用:

<property name="Settings" type="Serializable" length="2147483647">
    <column name="Settings" not-null="true"/>
</property> 
Run Code Online (Sandbox Code Playgroud)

它也被截断为 8000。我使用的是 NHibernate3.2(不流畅)。

nhibernate blob serializable varbinary sql-server-2008

5
推荐指数
1
解决办法
3676
查看次数

有没有办法将 sys.fn_varbintohexstr 结果转回 varbinary?

有没有functionSQL Server这样做呢?扭转sys.fn_varbintohexstr

sql-server hex function varbinary

5
推荐指数
1
解决办法
4641
查看次数

如何提取 varbinary(max) 列的值?

我有一varbinary(max)列将图像存储在 SQL 数据库中。

我正在处理一个 newdb 脚本,其中一个应用程序创建了一个新的 db 实例并填充了一些表。我正在处理的表之一是初始化该图像列。

为此,我使用 select 语句打印了列的内容,并将内容粘贴到 newdb 脚本的 insert 语句中。这最初似乎有效,但图像未正确加载。

所以我比较了DATALENTH()原始数据(5469988)和新数据(21839)的。看来 Microsoft SQL Server management Studio - 2014 切断了数据,为什么我在某个时候从原始数据库复制了它。我需要能够获得该列的全部内容。有任何想法吗?

sql sql-server ssms varbinary varbinarymax

5
推荐指数
1
解决办法
5675
查看次数

VARBINARY(MAX) 是什么意思?

我正在尝试将 MSSQL 数据库移植到 MariaDB,并且遇到了使用 varbinary(max) 创建表的情况:

    `definition` VARBINARY(max) NULL DEFAULT NULL
Run Code Online (Sandbox Code Playgroud)

这实际上会做什么,我可以使用 MariaDB 中的等效类型定义吗?

sql varbinary mariadb varbinarymax

5
推荐指数
1
解决办法
2万
查看次数

在数据库中存储十六进制和十六进制字符的最佳数据类型

我正在使用以太坊api.我想将api中的信息存储到mysql表中.

地址数据如下:

0x3f5ce5fbfe3e9af3971dd833d26ba9b5c936f0be
0x1d80982502f3bb75654df13aa32bbd5ac9cab7d6
0xaf13bbdbe1ff53c2df7109a53c217320d2d76ee2
...
Run Code Online (Sandbox Code Playgroud)

我一直在为这些字符使用varchar列.有更好的数据类型吗?我想也许varbinary但我不知道是否有任何好处.缺点是sql代码将更加混乱,因为我将不得不使用HEX()和UNHEX().

mysql varchar varbinary ethereum

5
推荐指数
1
解决办法
2925
查看次数