繁体   English   中英

SQL Server / Dynamics CRM:仅使用SQL从注释基础读取文档正文

[英]SQL Server/Dynamics CRM: How to read document body from Annotation Base using SQL only

我正在构建一个SSRS报告,在其中我需要阅读包含一些错误日志的MS Word文档正文的各个部分。 文档正文存储在SQL Server的AnnotationBase中。 Per Scott Durow(MVP),

“ DocumentBody是base64编码的字符串,因此您需要转换回二进制文件并保存到文件中。”

https://community.dynamics.com/crm/f/117/t/185391

我知道有一个转换器,并且还尝试使用SQL进行以下操作:

https://blogs.msdn.microsoft.com/sqltips/2008/06/30/converting-from-base64-to-varbinary-and-vice-versa/

但是,以上链接中的解决方案不起作用。

我知道可以使用C#轻松完成。 但是,这是我遇到的唯一麻烦,无法生成报告,并且希望保留所有SQL。

没有我必须安装.NET组件的情况,这是否可能? 如果没有,可以使用FetchXML完成吗?

您可以在SQL中解码Base64 documentbody正文列,如下所示: SQL Server 2005 T-SQL中的Base64编码

-- Encode the string "TestData" in Base64 to get "VGVzdERhdGE="
SELECT
    CAST(N'' AS XML).value(
          'xs:base64Binary(xs:hexBinary(sql:column("bin")))'
        , 'VARCHAR(MAX)'
    )   Base64Encoding
FROM (
    SELECT CAST('TestData' AS VARBINARY(MAX)) AS bin
) AS bin_sql_server_temp;

-- Decode the Base64-encoded string "VGVzdERhdGE=" to get back "TestData"
SELECT 
    CAST(
        CAST(N'' AS XML).value(
            'xs:base64Binary("VGVzdERhdGE=")'
          , 'VARBINARY(MAX)'
        ) 
        AS VARCHAR(MAX)
    )   ASCIIEncoding
;

(此外,您应该避免使用Base表,因为它不受支持,请使用Filtered表而不是FilteredAnnotation )。

(此外,Word文档的结构是复杂的XML,可能难以在SQL中解析,因此,无论如何这都不是最佳的解决方案。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM