转自http://www.cnblogs.com/jaxu/archive/2010/11/23/1884411.html
html
许多初学者在使用SQL Server时都会遇到使用SQL Server Management Studio没法链接远程数据库实例的问题,大体的错误描述以下:sql
An error has occurred while establishing a connection to the server.数据库
(provider: Named Pipes Provider, error: 40 – Could not open a connection to SQL Server) (Microsoft SQL Server, Error: 5)服务器
An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 – Could not open a connection to SQL Server) (Microsoft SQL Server, Error: 1326)网络
意思是说不能在数据库之间创建一个链接,缘由是命名管道提供者出现错误。其实这是一个比较典型的数据库服务器设置问题,在局域网或广域网中均可能会遇到,咱们只须要对数据库服务器进行一些配置即可以解决这个问题,来看看具体的步骤。ide
确保服务器端数据库服务已经启动工具
开始->全部程序->Microsoft SQL Server 2008->Configutation Tools,打开SQL Server Configuration Manager,点击SQL Server Services,查看数据库服务是否已经启动,若是服务未开启,手动启动它。固然,你还能够经过点击Windows中的开始->控制面板 ->管理者工具->服务,来查看相应的数据库服务是否启动。或者若是服务器和你的机器在同一网络,你还能够经过命令“sqlcmd -L”(注意L要大写)去查看该网络内全部可用的SQL Server服务器。this
在SQL Server Configuration中启用TCP/IPspa
多个SQL Server服务器之间经过网络相互通讯是须要TCP/IP支持的,为使SQL Server服务器能被远程链接必须确保TCP/IP已经启用。按照前面介绍的步骤打开SQL Server Configuration Manager,而后打开SQL Server Network Configuration,选择你要设置的数据库,而后点击TCP/IP,右键启用。若是有必要,你还能够启用Named Pipes。记住,全部的修改都必须在重启SQL Server服务以后才能生效!server
在Windows防火墙中打开SQL Server的端口号
不少时候咱们在对数据库服务器自己作了不少次设置后仍然没法成功创建远程链接,这时就要考虑是不是防火墙在做怪。默认状况下,许多端口号和服务 都会被防火墙所禁止而不能远程访问或执行,SQL Server默认的端口号也不例外。咱们应该从新设置Windows防火墙给SQL Server添加例外。除非人为修改,默认状况下SQL Server的端口号是1433,将该端口号添加到Windows防火墙中。若是SQL Server存在命名实例,那么也应该将SQL Server browser添加到Windows防火墙中。(有关SQL Server的命名实例将在后面介绍)
打开Windows控制面板,选择Windows防火墙->Change Settings->Exceptions->Add Port
点击Add port...在弹出的对话框中填入:
Name: SQL
Port Number: 1433
Protocol: Select TCP
在SQL Server管理器中启用远程链接
这一步一般会被数据库管理员忽略,若是未启用数据库远程链接,数据库实例只容许在本地进行链接而不能被远程链接,启用远程链接一样很是重要。 默认设置中远程链接是被禁止的。以下图,打开SQL Server Management Studio,右键点击数据库实例而后选择属性菜单。
在打开的窗口中,左侧选择Connections,而后勾选"Allow remote connections to this server"。
启用SQL Server Browser服务
若是SQL Server在安装时不是用的默认实例名而是自定义的实例名,而且没有配置特定的TCP/IP端口号,那么按照咱们前面的描述SQL Server仍然不能支持远程链接。但若是你启用的SQL Server Browser服务,即可以经过动态TCP/IP端口号进行远程SQL Server链接。启用SQL Server Browser服务很是简单,与启用SQL Server相似,在SQL Server Configuration Manager中右键点击SQL Server Browser,而后选择启用。启用该服务将会影响到服务器上全部已安装的SQL Server实例。
在防火墙中为sqlbrowser.exe应用程序建立例外
咱们在前面已经提到了,自定义命名的SQL Server实例要支持远程链接须要启用sqlbrowser服务,Windows防火墙可能会阻止该服务执行。所以,咱们必须在Windows防火墙中给sqlbrowser服务添加例外。
首先找到服务器上安装sqlbrowser.exe程序的路径,如C:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe。若是不肯定SQL Server安装在什么地方,你能够在Windows搜索一下文件名。与咱们在前面介绍的在防火墙中添加SQL TCP/IP端口号的方法相似,给sqlbrowser.exe应用程序添加防火墙例外。
从新建立数据库别名
建立SQL Server别名并在应用程序中使用它很常见。使用数据库别名能够确保一旦数据库的位置发生了变化,如更换了新的服务器,IP地址发生了变化等,应用程序 中的数据库链接字符串不用修改。不然你更换了数据库的位置,你还要通知全部使用该数据库的应用程序修改源代码或配置文件中的链接字符串,这恐怕是不可能 的。因此,使用数据库别名来配置链接字符串是一个很是明智的选择。另外,你还可使用相同的别名来指向不一样的数据库实例,当修改别名参数时,能够立刻实现 数据库之间的切换。建立数据库别名很是简单,在SQL Server Configuration Manager中选择Aliases进行建立。