簡體   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