[英]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.