我有一台运行三个实例的SQL 2008服务器。为每个实例分配一个唯一的IP地址并侦听端口1433.仅启用TCPIP。
我的所有ASP.Net应用程序都使用IP地址成功连接,连接字符串类似于:
User ID=SQLUser;Password=userpass;Database=TestDB;Data Source=sqlserver
我的ASP应用程序只会连接到默认实例;每当我尝试连接到另一个实例时,我都会收到此错误:
Microsoft OLE DB Provider for ODBC Drivers error '80004005' <br />
[Microsoft][ODBC SQL Server Driver][DBNETLIB]Invalid connection.
ASP连接字符串是这样的:
driver={SQL Server};server=sqlserver;uid=SqlUser; pwd=userpass; database=TestDB
我暂时关闭了IIS和SQL Server上的Windows防火墙。 SQL Server和IIS服务器之间没有任何其他防火墙。 SQL Browser正在SQL Server上运行。我尝试修改ASP连接字符串以包含实例名称,如:
driver={SQL Server};server=sqlserver/InstanceName;uid=SqlUser;pwd=userpass;database=TestDB
但是我得到了同样的错误。
有没有办法从ASP连接到命名实例?
答案 0 :(得分:2)
像这样编写服务器名称:
server=sqlserver\InstanceName
另外,请检查1433上可能没有的端口号。
相关问题:
答案 1 :(得分:1)
编辑:Sql Server名称不是UNC;)
尝试使用\而不是/ like:
mysqlserver\myinstance
我个人总是尝试包含端口。它保存了一个往返,客户端试图找出端口号:
server=mysqlserver\myinstance,1433;uid=SqlUser;pwd=userpass;database=TestDB
有趣的是,数据库是初始目录的同义词吗?
答案 2 :(得分:1)
这是纯粹的猜测。
从ASP.net连接到服务器时,您可能正在使用SQL OLE DB提供程序 然而,当涉及到ASP时,您正在使用OLEDB for ODBC(或者它选择这种连接来根据您的连接字符串选择它)。
是这样吗?
如果是这样,它可能是连接字符串的问题。例如,请参阅www.connectionstrings.com上的SQL Server连接字符串。
如果您使用的是ODBC,请确保安装了正确的驱动程序集以连接到SQL Server 2008 。
这有帮助吗?
编辑:我认为在使用ADO使用它时,你必须在ASP中更改连接字符串 http://www.connectionstrings.com/sql-server-2008#20答案 3 :(得分:0)
尝试提供IP地址。我怀疑当它解析服务器的名称时,它获取默认实例的IP地址。由于您已将它们绑定到单独的IP地址,因此您需要提供IP地址,或者,如果IP地址解析为其他主机名,请使用与该IP地址一起使用的主机名。我认为你不需要指定实例名称,但我不确定。我们的生产服务器上有两个实例 - 一个用于公共Web应用程序,另一个用于非公共Web应用程序。每个都绑定到一个单独的IP地址,但地址反向映射到不同的名称。连接到每个实例时,我只需要使用正确的服务器名称。