[英]use oracle and sql server to read tables from Dynamics CRM 2013 database
[英]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進行以下操作:
但是,以上鏈接中的解決方案不起作用。
我知道可以使用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.