使用加密连接连接到SQL数据库

2020-08-31 05:53发布

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

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


我们在Visual Studio 2010中运行了一些标准.Net代码,以运行Crystal 2016报表(及更早版本),这些报表使用13.0.21 Crystal Runtime调用SQL存储过程,目前这些功能都非常不错。 我们想对SQL连接应用加密。 如果在Crystal Report本身的连接属性中,我们在OLE DB(ADO)连接上设置属性,请使用"数据加密= -1和信任服务器证书= -1",然后在运行报表时会创建一个加密的SQL连接。 但是我们的客户有数百个报告,因此我们不希望他们更改每个报告来执行此操作,并且他们的某些报告在报告中具有ODBC(RDO)连接,该连接似乎不支持加密(至少在 这些属性设置)。 因此,我们尝试在.Net中动态修改连接。

我们的原始基本代码是

私人子AddConnectionInfo()

昏暗的crTables AsTables

将tableLogonInfos设置为新的TableLogOnInfos()

将connectionInfo设置为新的ConnectionInfo()

将tableLogonInfo设为新的TableLogOnInfo()

connectionInfo.ServerName = _serverName

connectionInfo.DatabaseName = _databaseName

connectionInfo.UserID = _userName

connectionInfo.Password = _password

crTables = Report.Database.Tables

每个crTable作为crTables中的CrystalDecisions.CrystalReports.Engine.Table

tableLogonInfo = crTable.LogOnInfo.Clone()

tableLogonInfo.ConnectionInfo = connectionInfo

tableLogonInfo.TableName = CleanTableName(tableLogonInfo.TableName)

crTable.ApplyLogOnInfo(tableLogonInfo)

crTable.Location = tableLogonInfo.TableName

下一个crTable

结束子

我们认为我们尝试了所有Googleable选项,将LogonInfo.ConnectionInfo属性和LogonProperties设置为与已保存了加密属性的模型Crystal Report完全匹配。 该报告可以继续正常运行,但是它会根据报告中保存的连接建立一个SQL连接,因此,如果该连接是ODBC(RDO)未加密的连接,则会执行该操作。

如果我们调试代码,就好像在ApplyLogonInfo调用之后一样,属性将设置为已修改,但是当执行下一行代码时,相关属性似乎将恢复为正在运行的Crystal Report中保存的内容

任何人都可以提出任何我们可以尝试使其起作用的建议吗?

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

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


我们在Visual Studio 2010中运行了一些标准.Net代码,以运行Crystal 2016报表(及更早版本),这些报表使用13.0.21 Crystal Runtime调用SQL存储过程,目前这些功能都非常不错。 我们想对SQL连接应用加密。 如果在Crystal Report本身的连接属性中,我们在OLE DB(ADO)连接上设置属性,请使用"数据加密= -1和信任服务器证书= -1",然后在运行报表时会创建一个加密的SQL连接。 但是我们的客户有数百个报告,因此我们不希望他们更改每个报告来执行此操作,并且他们的某些报告在报告中具有ODBC(RDO)连接,该连接似乎不支持加密(至少在 这些属性设置)。 因此,我们尝试在.Net中动态修改连接。

我们的原始基本代码是

私人子AddConnectionInfo()

昏暗的crTables AsTables

将tableLogonInfos设置为新的TableLogOnInfos()

将connectionInfo设置为新的ConnectionInfo()

将tableLogonInfo设为新的TableLogOnInfo()

connectionInfo.ServerName = _serverName

connectionInfo.DatabaseName = _databaseName

connectionInfo.UserID = _userName

connectionInfo.Password = _password

crTables = Report.Database.Tables

每个crTable作为crTables中的CrystalDecisions.CrystalReports.Engine.Table

tableLogonInfo = crTable.LogOnInfo.Clone()

tableLogonInfo.ConnectionInfo = connectionInfo

tableLogonInfo.TableName = CleanTableName(tableLogonInfo.TableName)

crTable.ApplyLogOnInfo(tableLogonInfo)

crTable.Location = tableLogonInfo.TableName

下一个crTable

结束子

我们认为我们尝试了所有Googleable选项,将LogonInfo.ConnectionInfo属性和LogonProperties设置为与已保存了加密属性的模型Crystal Report完全匹配。 该报告可以继续正常运行,但是它会根据报告中保存的连接建立一个SQL连接,因此,如果该连接是ODBC(RDO)未加密的连接,则会执行该操作。

如果我们调试代码,就好像在ApplyLogonInfo调用之后一样,属性将设置为已修改,但是当执行下一行代码时,相关属性似乎将恢复为正在运行的Crystal Report中保存的内容

任何人都可以提出任何我们可以尝试使其起作用的建议吗?

付费偷看设置
发送
2条回答
宇峰Kouji
1楼-- · 2020-08-31 06:29

嗨,

我不确定100%,但是SQL Server配置管理器中的SQL Server选项"强制加密"可以解决这个问题。 它告诉SQL Server仅在客户端连接时接受并建立加密连接。 有关更多详细信息,请参见此知识库文章:链接

注意

Class

Nir深蓝
2楼-- · 2020-08-31 06:24

嗨,感谢您,我们的客户的意图是要求连接到SQL Server的所有应用程序都必须通过加密连接到SQL,这就是为什么我们要修改应用程序以进行此更改但不能切换 SQL Server强制加密,直到更改了所有应用程序以建立加密连接为止。

但是,我认为我们在修改主应用程序以使用加密连接以及使用Crystal Reports的打印引擎时在测试环境中测试了该选项,我认为我们的经验是,如果将SQL设置为对其进行强制加密, 只会拒绝未加密的连接,也不会使连接默认为加密。 因此,由于我们无法在水晶报表连接上设置加密属性,因此当前编码的打印引擎随后无法连接。

一周热门 更多>