注意:我明显地将服务器名称和IP更改为虚构的。
这是怎么回事 我有一台服务器,我打电话给MYSERVER
,运行Microsoft SQL Server Express 2005.在这个服务器本身,我有一个ODBC连接设置指向自己,这已经完美。 我login使用SQL Server身份validation(而不是Windows身份validation),它的设置是这样的:
就像我说的那样, 但接下来,我有另一台计算机在完全不同的域/不在Intranet上,需要访问MYSERVER上托pipe的同一个SQL Server。 由于它位于不同的域,因此它不能识别名称“MYSERVER”; 我必须指出它在MYSERVER的IP地址,我们会说是123.456.789.012。 但是,ODBC连接似乎并没有在那里工作。 我试图像这样设置它:
这不起作用。 当我input用户名和密码,然后点击下一步,它停顿了10到20秒,然后终于回来,出现以下错误:
Connection failed: SQLState: '01000' SQL Server Error: 1326 [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()). Connection failed: SQLState: '08001' SQL Server Error: 17 [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied.
如果我尝试相同的事情,但更改“服务器”从123.456.789.012\SQLEXPRESS
到只是普通的老123.456.789.012
,我得到一个不同的错误:
Connection failed: SQLState: '01000' SQL Server Error: 14 [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Invalid Instance()). Connection failed: SQLState: '08001' SQL Server Error: 14 [Microsoft][ODBC SQL Server Driver][DBNETLIB]Invalid connection.
现在我知道你在想什么。 你可能会想,“呃,你可能没有打开1433端口的防火墙,假人。” 除了我以外,我validation了这一点,因为我可以成功运行:
telnet 123.456.789.012 1433
…从命令行我想要的。 所以我不知道该怎么做。 我知道SQL Server存在,工作,并可以正确设置ODBC连接; 我只是不确定我的连接设置是否存在错误。 基于我列出的后一个错误,它似乎可以连接到服务器,但根本无法find实例(因为我没有指定一个时间)。 那么这是否意味着我只需要使用一些不同的语法来指定IP以及实例名称呢? 我该怎么办? 提前致谢。
SQL Server 2005的命名pipe道和TCIP协议默认是禁用的。 你有没有在“SQL服务器configurationpipe理器”下启用它们? 您可以在SQL Servernetworkingconfiguration和SQL Native Client xxconfiguration下find这些协议。
服务器本身的连接工作得益于“共享内存”协议。
您是否按照如何configurationSQL Server 2005以允许远程连接启用了SQL Server Browser服务 ?
如果使用实例名称运行SQL Server 2005,并且未在连接string中使用特定的TCP / IP端口号,则必须启用SQL Server Browser服务以允许进行远程连接。 例如,SQL Server 2005 Express安装时的默认实例名称为“计算机名称\ SQLEXPRESS”。
当使用Access连接到MSSQL 2008服务器时, 此线程修复了相同的错误消息。 MSSQL 2005和更早的版本只使用连接string中的计算机名称就可以正常工作,但是当实例升级到2008年时,我不得不改变Access中的连接string到完整的表单:
servername\instancename,portnumber
如果它是完全合格的,它会识别服务器名称吗? 如果是MYSERVER.domain.com? 从不同的域连接时,我们必须使用SQL Server来完成此操作。 如果您在testing数据源时可以连接ODBC系统DSN,那么您正在取得进展。 如果在ODBC设置中没有连接,则必须先解决这个问题。
您是否在ODBC连接上使用命名pipe道或TCP? TCP是否启用?
确保为SQL服务器启用了远程TCP连接。
我有这个相同的问题,并设法通过更改SQL驱动程序到SQL本机客户端驱动程序来解决它。 这是奇怪的,因为在我的情况下,这工作好几年,然后就停止工作。 我怀疑这是司机腐败的问题,也许是MDAC的协助可能会有所帮助,但是暂时我很高兴它可以工作!
在这里只是一个狂野的镜头,但如果你在服务器名称或IP地址之前加双反斜杠会发生什么? 在我看来,它通常是大多数其他Windows / Microsoft连接所必需的。
我有一个类似的问题。 在我的情况下,另一个SWconfigurationODBC设置,所以我不能更改驱动程序。 我解决了我的情况是这样的:
然后它开始工作。 客户端操作系统:Win7 x64驱动程序:sqlsrv32.dll
对于它的价值,我开始在以前工作的连接上得到这个错误。 事实certificate,MSSQL $ SQLEXPRESS服务不知何故被停止。 重新启动它解决了这个问题。