我们遇到了一个奇怪的问题,即SQL 2008 R2(10.50.1600)作为命名实例安装。为了让任何外部客户端连接,我们必须遵循一定的程序,但不应该这样做。现在我确实打开了SQL服务器上的TCP/IP
和Named Pipes
协议并重新启动它,这不是问题所在。我们在Active Directory域上(从Server 2003运行)。无论服务器或客户端是什么操作系统(XP,2003,2008,Vista,7,64位,32位等),问题都存在。任何可以连接的问题也会存在,例如,SQL Management Studio,ADO(来自我们的应用程序)等。
问题是在任何客户端连接到此服务器之前,每个客户端计算机必须首先通过ODBC连接到此服务器(并且我们不使用ODBC)。在执行此操作之前,任何尝试连接到10.5 SQL服务器都会导致“服务器不存在或访问被拒绝”。但是一旦我们可以在ODBC中连接(通过Named Pipes
),那么其他一切都开始工作了。使用计算机名称和IP地址时也会出现同样的问题。事实上,如果我们想要连接计算机名称\实例名称,那么我们必须先在ODBC中这样做,然后如果我们想通过IP地址\实例名称连接,那么我们也必须这样做这一点。
我们必须在每台客户端计算机上执行此操作。同样,一旦ODBC能够通过命名管道连接到此SQL服务器,那么该客户端以后的所有尝试都将起作用。
可能导致这种情况发生的原因是什么?怎么避免呢?我不应该像我们一直称之为“ODBC Trick”这样做。我从未在任何其他版本的SQL上遇到此问题。
答案 0 :(得分:2)
该问题可能与SQL Browser服务有关。每个sql实例都有一个不同的端口号 - 尝试从客户端连接为IP地址,端口(例如123.123.123.1,1433) - 这将从等式中排除DNS和浏览器
编辑:现在知道它与浏览器有关,请尝试查看客户端无法访问SQL浏览器的原因(通常是端口1434)。服务还没开始?可能是防火墙阻塞?
默认情况下,Microsoft现在明智地将所有安全措施捆绑在一起,因此现在任何新配置通常都需要相当多的详细安全规划,策略配置,权限等。欢迎来到不信任的时代;)
答案 1 :(得分:0)
您可以通过创建简单文件轻松测试您的连接。按照此处的步骤操作"如何测试SQL Server连接":http://teusje.wordpress.com/2012/02/21/how-to-test-an-sql-server-connection/