4

我有两台计算机,安装了两个(表面上)相同的 SQL Server Express 2008 R2,都运行 Windows 7 64 位。在一台计算机上(称为“红色”),我可以执行以下数学代码来打开与数据库的连接并读取数据

Needs["DatabaseLink`"]

conn = OpenSQLConnection[
  JDBC[
   "Microsoft SQL Server(jTDS)",
   "localhost"],
  "Instance" -> "SQLExpress"]

我安装了用于 sql server 的 jTDS 驱动程序c:\windows\system32\ntlmauth.dll。我将 dll 从工作机器“红色”复制到非工作机器“黑色”。

我使用 SQL-Server 导入和导出工具将一个非常简单的数据库从“红色”转换为“黑色”,并通过在“黑色”上运行 LinqPad 并读取数据来验证该数据库是否可以访问。都好。

现在,我尝试在“黑色”上运行上面的 Mathematica 代码,我收到一条无法诊断的错误消息,即:

JDBC::error: "!(TraditionalForm`\"网络错误 IOException: Connection denied: connect\") "

我只知道这将是本地服务帐户或网络服务帐户的噩梦般的权限问题之一。我在“黑色”机器上没有 Sql-Server Management Studio,我无法找到合适的 SSMS 版本来安装 SQL Server 2008 R2 Express(没有安装 SSMS Express 2008 版本,理由是“已知的兼容性问题”。 ) 我并没有真正想念 SSMS,因为 LinqPad 可以很好地完成我的开发任务。

我不知道如何诊断或解决方法或以任何方式继续 - 我完全被阻止,非常感谢您的建议或指导。

4

2 回答 2

3

这里有点猜测,但我会尝试

conn = OpenSQLConnection[ JDBC[ "Microsoft SQL Server(jTDS)", "localhost:1433;instance=SQLExpress"]]

我很确定 OpenSQLConnection[] 不采用“实例”选项。如果像这样通过它可能会起作用:

conn = OpenSQLConnection[ JDBC[ "Microsoft SQL Server(jTDS)", "localhost:1433"], "Properties"->{"instance"->"SQLExpress"}]

于 2012-01-11T04:24:51.687 回答
3

连接到 SQL Server 时出现连接错误。这不是身份验证错误。

只是可能是您的 SQL Server 未配置为通过以下方式接受请求

通过您正在使用的传输协议。打开 SQL Server Surface 配置

经理并允许接受来自所有提供的方式的连接。

于 2012-01-10T07:00:51.807 回答