SQL Server 2017 LocalDB无法连接到Crystal Reports

2020-09-01 13:10发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我已经使用SQL Express多年了,因此决定尝试使用LocalDB。 几分钟后,我安装了它并使用我的应用程序-直到尝试了Crystal Reports。 该报告非常庞大,包含约40个子报告。 有时我可以得到它来打印一个子报表,但是大约要花10分钟(在LocalDB之前使用SQL Express只需10秒)。 我怀疑这是一个连接字符串问题。

我正在使用VS 2017, VB.NET ,Crystal Reports 13sp25。有效的连接字符串 因为我的应用是

" Server =(localdb)\ MSSQLLocalDB; Integrated Security = true; AttachDbFileName = C:\ Program Files \ MyApp \ Data \ MyApp.mdf;"

这是我用于连接Crystal Reports数据库的代码。 它适用于SQL Express,但不适用于LocalDB。

使用crConnectionInfo

.ServerName = My.Application.GlobalAuditDB.PServerName

.DatabaseName = My.Application.GlobalAuditDB.PDatabaseName

.UserID = My.Application.GlobalAuditDB.PUserName

.Password = My.Application.GlobalAuditDB.PPassword

.IntegratedSecurity = False

结尾为

CrTables = Report.reportDocument.Database.Tables

'遍历报告中的每个表并应用LogonInfo

对于CrTable中的每个CrTable

crtableLogoninfo = CrTable.LogOnInfo

crtableLogoninfo.ConnectionInfo = crConnectionInfo

CrTable.ApplyLogOnInfo(crtableLogoninfo)

如果是CrTable.TestConnectivity(),则

如果(CrTable.Location.IndexOf("。")> 0)然后

CrTable.Location = CrTable.Location.Substring(CrTable.Location.LastIndexOf("。")+ 1)

其他

CrTable.Location = CrTable.Location

如果结束

如果结束

下一步

我试图像这样更改连接以模拟适用于该应用程序的连接字符串,但是它不适用于CR-没有错误,每个子报表仅花费10分钟而10秒:

使用crConnectionInfo

.ServerName = My.Application.GlobalAuditDB.PServerName

.DatabaseName =" MyDB"

.IntegratedSecurity = True

结尾为

感谢您的帮助/建议/示例。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我已经使用SQL Express多年了,因此决定尝试使用LocalDB。 几分钟后,我安装了它并使用我的应用程序-直到尝试了Crystal Reports。 该报告非常庞大,包含约40个子报告。 有时我可以得到它来打印一个子报表,但是大约要花10分钟(在LocalDB之前使用SQL Express只需10秒)。 我怀疑这是一个连接字符串问题。

我正在使用VS 2017, VB.NET ,Crystal Reports 13sp25。有效的连接字符串 因为我的应用是

" Server =(localdb)\ MSSQLLocalDB; Integrated Security = true; AttachDbFileName = C:\ Program Files \ MyApp \ Data \ MyApp.mdf;"

这是我用于连接Crystal Reports数据库的代码。 它适用于SQL Express,但不适用于LocalDB。

使用crConnectionInfo

.ServerName = My.Application.GlobalAuditDB.PServerName

.DatabaseName = My.Application.GlobalAuditDB.PDatabaseName

.UserID = My.Application.GlobalAuditDB.PUserName

.Password = My.Application.GlobalAuditDB.PPassword

.IntegratedSecurity = False

结尾为

CrTables = Report.reportDocument.Database.Tables

'遍历报告中的每个表并应用LogonInfo

对于CrTable中的每个CrTable

crtableLogoninfo = CrTable.LogOnInfo

crtableLogoninfo.ConnectionInfo = crConnectionInfo

CrTable.ApplyLogOnInfo(crtableLogoninfo)

如果是CrTable.TestConnectivity(),则

如果(CrTable.Location.IndexOf("。")> 0)然后

CrTable.Location = CrTable.Location.Substring(CrTable.Location.LastIndexOf("。")+ 1)

其他

CrTable.Location = CrTable.Location

如果结束

如果结束

下一步

我试图像这样更改连接以模拟适用于该应用程序的连接字符串,但是它不适用于CR-没有错误,每个子报表仅花费10分钟而10秒:

使用crConnectionInfo

.ServerName = My.Application.GlobalAuditDB.PServerName

.DatabaseName =" MyDB"

.IntegratedSecurity = True

结尾为

感谢您的帮助/建议/示例。

付费偷看设置
发送
8条回答
哎,真难
1楼 · 2020-09-01 13:16.采纳回答

嗨,泰德,

在这种情况下,是苹果和橘子比较了有效的方法和无效的方法。 CR需要特定的属性。

在这里可以获取VS .NET运行时的最新CR。

https: //wiki.scn.sap.com/wiki/display/BOBJ/Crystal+Reports%2C+Developer+for+Visual+Studio+Downloads

在该页面上是参数测试应用程序的链接,它具有登录属性和其中的ReplaceConnection()API。

阅读该页面的全部内容,您需要了解和使用许多升级信息。

Don

您是否有 VB.NET

ZJXianG
3楼-- · 2020-09-01 13:22

嗨,Ted,

使用MS SQL,您需要通过OLE DB或ODBC连接,CR不会直接连接到MDF文件。

使用MS SQL Native 11客户端进行连接。

并将您添加到VS标签的CR。

Don

南山jay
4楼-- · 2020-09-01 13:15

感谢您的答复唐。 这使我感到困惑,将尝试解释原因。

我使用UDL文本文件创建连接字符串。 在UDL"数据链接属性"的第一个选项卡上,选择一个提供的。 有许多OLE DB选项(无ODBC)和一个SQL Server本机客户端。 因此,您的前两个句子似乎是互斥的; 我可以使用OLE DB ** OR **本机SQL,但不能同时使用两者(出现)。

即使在翻译了最后一句中的缩写词后,我也没有关注-也许是因为我不知道"标签"是什么。 和"添加您"。

-Ted

蓋茨
5楼-- · 2020-09-01 13:28

嗨,Ted,

OLE DB或ODBC都使用MS SQL Native Client dll。 使用UDL时,可以选择"本机客户端",也可以为OLE DB选择" ODBC"。 OLE DB仍使用本机客户端进行连接。

实际上并不重要,因此UDL使用OLE DB和MS SQL Native Client。

在这种情况下,因为您进行了升级 在SQL 2017中,您必须使用" MS SQL Native 11"客户端dll。

因此,我已经检查了23年来,我一直支持CR,但我从未听说过通过UDL进行连接并指定 MDF文件,我们不支持UDL连接字符串中的那部分连接。

CR假定它将通过SQL客户端进行连接,并且客户端管理要连接的数据库。 您可以在报表中指定数据库,CR会在连接字符串中指定数据库。

因此,如果报表与设计时使用的数据库不同,请在报表中替换该数据库,并且/或者使用ReplaceConnection() 更新连接。

标记正好在VS论坛的CR中。

因此,只需删除MDF,它就可以正常工作。

Don

callcenter油条
6楼-- · 2020-09-01 13:32

我可以使用UDL(OLE DB或Native SQL)连接到我的LocalDB数据库,也可以使用SSMS(都使用SQL Server身份验证)连接。

我还可以使用我的应用程序连接到LocalDB数据库(它也可以与Infragistics网格一起使用)。 但是我仍然无法使用Crystal Reports连接到LocalDB。让我向您展示代码,也许您可​​以告诉我我所缺少的内容:

crConnectionInfo.ServerName ="(localdb)\ MSSQLLocalDB"
crConnectionInfo.DatabaseName =" MYDATABASE"
crConnectionInfo.UserID =" USERNAME"
crConnectionInfo.Password =" MYPASSWORD"
crConnectionInfo.IntegratedSecurity =错误

谢谢。

-Ted

SAP小菜
7楼-- · 2020-09-01 13:24

我在此博客中找到了一些ReplaceConnection代码,这是您的功劳。 从2011年开始-此后代码是否全部更改?

https://blogs.sap.com/2011/09/02/when-to-use-the-replace-connection-method-using-the-crystal -reports或inproc-ras-sdk-for-net/

谢谢

一周热门 更多>