sqlserver 属性 TextHeader 不可用于 StoredProcedure“[dbo].[x]”该对象可能没有此属性,也可能是访问权限不足而无法检索。 该文本已加密。

sqlserver 属性 TextHeader 不可用于 StoredProcedure“[dbo].[x]”该对象可能没有此属性,也可能是访问权限不足而无法检索。 该文本已加密。打开sqlserverproc存储过程错误:属性TextHeader不可用于StoredProcedure“[dbo].[x]”。该对象可能没有此属性,也可能是访问权限不足而无法检索。 该文本已加密。(Microsoft.SqlServer.Smo),提示如下图错误:注:本文基于SQLserver2008R2,其他版本没有测试过解决方法:1、使用原有数据库从新导出非加密脚本重新建立…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

打开sqlserver proc 存储过程错误:属性 TextHeader 不可用于 StoredProcedure“[dbo].[x]”。该对象可能没有此属性,也可能是访问权限不足而无法检索。  该文本已加密。 (Microsoft.SqlServer.Smo),提示如下图错误:

注:本文基于SQLserver 2008R2,其他版本没有测试过

sqlserver 属性 TextHeader 不可用于 StoredProcedure“[dbo].[x]”该对象可能没有此属性,也可能是访问权限不足而无法检索。 该文本已加密。

sqlserver 属性 TextHeader 不可用于 StoredProcedure“[dbo].[x]”该对象可能没有此属性,也可能是访问权限不足而无法检索。 该文本已加密。

解决方法:

1、使用原有数据库从新导出非加密脚本重新建立数据库(略过)

2、使用解密proc方式从新生成proc脚本

步骤整理:

1、使用sql dac功能登录数据库,首先要启用dac,否则会报错:不支持专用管理员连接

USE master;
GO
SP_CONFIGURE'remote admin connections';
SP_CONFIGURE 'remote admin connections', 1; --0 表示仅允许本地连接使用 DAC,1表示允许远程连接使用 DAC
GO
RECONFIGURE WITH OVERRIDE;
GO

选择新建连接->数据库引擎查询,然后输入admin:机器名登录即可。

sqlserver 属性 TextHeader 不可用于 StoredProcedure“[dbo].[x]”该对象可能没有此属性,也可能是访问权限不足而无法检索。 该文本已加密。

连接中可能出现如下错误:

sqlserver 属性 TextHeader 不可用于 StoredProcedure“[dbo].[x]”该对象可能没有此属性,也可能是访问权限不足而无法检索。 该文本已加密。

这说明已经连接过并成功,不能再次连接,也可以使用sql配置管理器重启sqlserver服务,从新来过

2、成功使用DAC功能登录后,如下图:

sqlserver 属性 TextHeader 不可用于 StoredProcedure“[dbo].[x]”该对象可能没有此属性,也可能是访问权限不足而无法检索。 该文本已加密。

3、选择要解密操作的数据库

4、创建解密存储表

CREATE TABLE [dbo].[SQL_DECODE]
    (
      [ID] [INT] IDENTITY(1, 1)
                 NOT NULL ,
      [SQLTEXT] [NVARCHAR](MAX) NOT NULL ,
      CONSTRAINT [ID] PRIMARY KEY CLUSTERED ( [ID] ASC )
    )
ON  [PRIMARY]
GO

5、创建解密proc

CREATE PROCEDURE [dbo].[DECODE_PROC]
    (
      @PROC_NAME SYSNAME = NULL
    )
AS
    SET NOCOUNT ON

    DECLARE @PROC_NAME_LEN INT    --存储过程名长度
    DECLARE @MAX_COL_ID SMALLINT    --最大列ID
    SELECT  @MAX_COL_ID = MAX(subobjid)
    FROM    sys.sysobjvalues
    WHERE   objid = OBJECT_ID(@PROC_NAME)
    GROUP BY imageval

    SELECT  @PROC_NAME_LEN = DATALENGTH(@PROC_NAME) + 29
    DECLARE @REAL_01 NVARCHAR(MAX)    --真实加密存储过程数据
    DECLARE @FACK_01 NVARCHAR(MAX)    --修改为假的存储过程,长度(40003 - 存在过程名长度),原理不明?
    DECLARE @FACK_ENCRYPT_01 NVARCHAR(MAX)    --伪加密存储过街程数据
    DECLARE @REAL_DECRYPT_01 NVARCHAR(MAX)    --最终解密后的数据,初始化为原始加密长度的一半的“A”,原理不明?

    SET @REAL_01 = ( SELECT imageval
                     FROM   sys.sysobjvalues
                     WHERE  objid = OBJECT_ID(@PROC_NAME)
                            AND valclass = 1
                            AND subobjid = 1
                   )

    DECLARE @REAL_DATA_LEN BIGINT
    SET @REAL_DATA_LEN = DATALENGTH(@REAL_01)
--PRINT @REAL_DATA_LEN

    DECLARE @FACK_LEN BIGINT
    SET @FACK_LEN = @REAL_DATA_LEN * 10    --改造:假的长度在原真实数据长度上放大10倍

--此处需将NVARCHAR显示转换成NVARCHAR(MAX),不然将只能产生4K长度
    SET @FACK_01 = 'ALTER PROCEDURE ' + @PROC_NAME + ' WITH ENCRYPTION AS '
        + REPLICATE(CONVERT(NVARCHAR(MAX), '-'), @FACK_LEN - @PROC_NAME_LEN)
--PRINT '@FACK_01 = ' + STR(LEN(@FACK_01))
    EXECUTE (@FACK_01)
    SET @FACK_ENCRYPT_01 = ( SELECT imageval
                             FROM   sys.sysobjvalues
                             WHERE  objid = OBJECT_ID(@PROC_NAME)
                                    AND valclass = 1
                                    AND subobjid = 1
                           )

    SET @FACK_01 = 'CREATE PROCEDURE ' + @PROC_NAME + ' WITH ENCRYPTION AS '
        + REPLICATE(CONVERT(VARCHAR(MAX), '-'), @FACK_LEN - @PROC_NAME_LEN)
    SET @REAL_DECRYPT_01 = REPLICATE(CONVERT(NVARCHAR(MAX), N'A'),
                                     ( DATALENGTH(@REAL_01) / 2 ))
--PRINT 'LEN(@REAL_DECRYPT_01) = ' + STR(LEN(@REAL_DECRYPT_01))


--按位对 @REAL_01、 @FACK_01、 @REAL_DECRYPT_01 进行异或操作。
    DECLARE @INT_PROC_SPACE BIGINT
    SET @INT_PROC_SPACE = 1
    WHILE @INT_PROC_SPACE <= ( DATALENGTH(@REAL_01) / 2 )
        BEGIN
            SET @REAL_DECRYPT_01 = STUFF(@REAL_DECRYPT_01, @INT_PROC_SPACE, 1,
                                         NCHAR(UNICODE(SUBSTRING(@REAL_01,
                                                              @INT_PROC_SPACE,
                                                              1))
                                               ^ ( UNICODE(SUBSTRING(@FACK_01,
                                                              @INT_PROC_SPACE,
                                                              1))
                                                   ^ UNICODE(SUBSTRING(@FACK_ENCRYPT_01,
                                                              @INT_PROC_SPACE,
                                                              1)) )))
            SET @INT_PROC_SPACE = @INT_PROC_SPACE + 1
        END

--移除WITH ENCRYPTION
    SET @REAL_DECRYPT_01 = REPLACE(@REAL_DECRYPT_01, 'WITH ENCRYPTION', '')
    INSERT  INTO [SQL_DECODE]
    VALUES  ( @REAL_DECRYPT_01 )

--PRINT '@REAL_DECRYPT_01 = ' + @REAL_DECRYPT_01
--PRINT 'LEN(@REAL_DECRYPT_01) = ' + STR(LEN(@REAL_DECRYPT_01))

--删除原存储过程
    SET @FACK_01 = 'DROP PROCEDURE ' + @PROC_NAME
    EXEC(@FACK_01)

GO

6、执行解密proc

EXEC dbo.DECODE_PROC 'proc名称'

7、查询解密存储表,会发现已经存储了要解密的proc脚本

sqlserver 属性 TextHeader 不可用于 StoredProcedure“[dbo].[x]”该对象可能没有此属性,也可能是访问权限不足而无法检索。 该文本已加密。

8、将脚本拷贝到查询窗口格式化后无误,执行创建即可,原加密proc被删除了已经,新的proc已经不带有加密锁标记了

sqlserver 属性 TextHeader 不可用于 StoredProcedure“[dbo].[x]”该对象可能没有此属性,也可能是访问权限不足而无法检索。 该文本已加密。

参考整理:

SQLSERVER数据库管理员的专用连接DAC 

SQL2005解密已经被加密的存储过程

[SQL Server 2005/2008]专用管理员连接(DAC)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164509.html原文链接:https://javaforall.net

(1)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • iptable命令参数详解

    iptable命令参数详解###还不够详细,后期补充###开放某端口:iptables-IINPUT-ptcp–dport9000-jACCEPT关闭某端口:iptables-DINPUT-ptcp–dport80-jACCEPT屏蔽某个IP请求:iptables-IINPUT-s192.168.0.1-jDROP(屏蔽单个IP192.168.0.1…

    2022年5月8日
    46
  • 全局平均池化(Global Average Pooling)

    出处:LinM,ChenQ,YanS.Networkinnetwork[J].arXivpreprintarXiv:1312.4400,2013.定义:将特征图所有像素值相加求平局,得到一个数值,即用该数值表示对应特征图。目的:替代全连接层效果:减少参数数量,减少计算量,减少过拟合思路:如下图所示。假设最终分成10类,则最后卷积层应该包含10个滤波器(即输…

    2022年4月6日
    61
  • HTML5视频直播技术介绍

    HTML5视频直播技术介绍视频直播如火如荼,为了满足比较火热的移动Web端直播需求,一系列的HTML5直播技术迅速的发展了起来。只要实现了视频直播的各个技术难点,通过HTML5进行视频直播并非难事。常见的可用于HTML5的直播技术共有3种协议:HLS、WebSocket与WebRTC。本文将对基于这3种协议的HTML5直播技术实现做下基础的介绍。一.HLS优点:CDN支持比较好缺点

    2022年7月21日
    15
  • C# 项目没有.sln文件的解决办法:

    C# 项目没有.sln文件的解决办法:什么是sln文件?sln文件开发中使用的解决方案文件,使用解决方案文件(后缀为sln的文件)表示一个项目组,他通常包含一个项目中所有的工程文件信息。包括文件版本,工程信息,全局设置,通过打开sln文件就可以加载整个项目.但是我新建的一个项目里面没有Sln文件,该如何打开整个项目?解决办法:打开VS,点击新建项目,同时会生成一个解决方法,然后往这个解决方案里面添加现有项目,注意添加的是.cspro

    2022年5月3日
    181
  • python算法(1)抓交通肇事犯

    python算法(1)抓交通肇事犯抓交通肇事犯1.问题描述一辆卡车违反交通规则,撞人后逃跑。现场有三人目击该事件,但都没有记住车号,只记下了车号的一些特征。甲说:牌照的前两位数字是相同的:乙说:牌照的后两位数字是相同的,但与前两位

    2022年8月7日
    1
  • Ubuntu安装nginx_服务器安装Ubuntu

    Ubuntu安装nginx_服务器安装Ubuntu版本ubunt16.04nginx-1.8.1gcc-4.8.4pcre-8.38zlib-1.2.11openssl-1.0.2n前置环境配置进入到/usr/local目录下执行下面1234,此处路劲与之后安装nginx对应,需要注意*1、gcc源码编译依赖环境apt-getinstallbuild-essentialapt-

    2022年9月18日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号