当SQL Server管理器无法连接远程数据库时怎么办?
许多初学者在使用SQLServer时都会遇到使用SQLServerManagementStudio无法连接远程数据库实例的问题,大致的错误描述如下:
意思是说不能在数据库之间建立一个连接,原因是命名管道提供者出现错误。其实这是一个比较典型的数据库服务器设置问题,在局域网或广域网中都可能会遇到,我们只需要对数据库服务器进行一些配置便可以解决这个问题,来看看具体的步骤。
我们可以先以SQLServer2008为例,下面先来看一下设置:
关键设置:
第一步(SQL2005、SQL2008):
开始–>程序–>MicrosoftSQLServer2008(或2005)–>配置工具–>SQLServer配置管理器–>SQLServer网络配置–>MSSQLSERVER(这个名称以具体实例名为准)的协议–>TCP/IP–>右键–>启用
第二步:
SQL2005:
开始–>程序–>MicrosoftSQLServer2005–>配置工具–>SQLServer2005外围应用配置器–>服务和连接的外围应用配置器–>DatabaseEngine–>远程连接,选择本地连接和远程连接并选上同时使用Tcp/Ip和namedpipes.
SQL2008:
打开SQLServerManagementStudio–>在左边[对象资源管理器]中选择第一项(主数据库引擎)–>右键–>方面–>在方面的下拉列表中选择[外围应用配置器]–>将RemoteDacEnable置为True.(这一步很关键)
Express:
如果XP有开防火墙,在例外里面要加入以下两个程序:
C:/ProgramFiles/MicrosoftSQLServer/MSSQL.1/MSSQL/Binn/sqlservr.exe,
C:/ProgramFiles/MicrosoftSQLServer/90/Shared/sqlbrowser.exe
第三步:
开始–>程序–>MicrosoftSQLServer2008(或2005)–>配置工具–>SQLServer配置管理器–>SQLServer服务–>右击SQLServer(MSSQLSERVER)(注:括号内以具体实例名为准)–>重新启动
第四步:
服务器端开启sa用户。开始->程序->MicrosoftSQLServer2008->MicrosoftSQLServerManagementStudio->主数据库引擎->安全性->登录名->sa,设置密码。
第五步:
在客户端登陆服务器端数据库。
第六步:
C#工程更改数据库连接字符串。打开C#工程->解决方案资源管理器->app.config->更改。示例如下:
[c-sharp]
connectionString=”datasource=服务器IP/实例名;initialcatalog=数据库名;UserID=用户名;password=密码”
第七步:
GoodLuck!Enjoy……
上面是以SQLServer2008为例,下面来看一下最普遍的过程内容!
确保服务器端数据库服务已经启动
开始->所有程序->MicrosoftSQLServer2008->ConfigutationTools,打开SQLServerConfigurationManager,点击SQLServerServices,查看数据库服务是否已经启动,如果服务未开启,手动启动它。当然,你还可以通过点击Windows中的开始->控制面板->管理者工具->服务,来查看相应的数据库服务是否启动。或者如果服务器和你的机器在同一网络,你还可以通过命令“sqlcmd-L”(注意L要大写)去查看该网络内所有可用的SQLServer服务器。
在SQLServerConfiguration中启用TCP/IP
多个SQLServer服务器之间通过网络相互通信是需要TCP/IP支持的,为使SQLServer服务器能被远程连接必须确保TCP/IP已经启用。按照前面介绍的步骤打开SQLServerConfigurationManager,然后打开SQLServerNetworkConfiguration,选择你要设置的数据库,然后点击TCP/IP,右键启用。如果有必要,你还可以启用NamedPipes。记住,所有的修改都必须在重启SQLServer服务之后才能生效!
在Windows防火墙中打开SQLServer的端口号
#p#分页标题#e#
很多时候我们在对数据库服务器本身做了很多次设置后仍然无法成功建立远程连接,这时就要考虑是否是防火墙在作怪。默认情况下,许多端口号和服务都会被防火墙所禁止而不能远程访问或执行,SQLServer默认的端口号也不例外。我们应该重新设置Windows防火墙给SQLServer添加例外。除非人为修改,默认情况下SQLServer的端口号是1433,将该端口号添加到Windows防火墙中。如果SQLServer存在命名实例,那么也应该将SQLServerbrowser添加到Windows防火墙中。(有关SQLServer的命名实例将在后面介绍)
打开Windows控制面板,选择Windows防火墙->ChangeSettings->Exceptions->AddPort
点击Addport…在弹出的对话框中填入:
Name:SQL
PortNumber:1433
Protocol:SelectTCP
在SQLServer管理器中启用远程连接
这一步通常会被数据库管理员忽略,如果未启用数据库远程连接,数据库实例只允许在本地进行连接而不能被远程连接,启用远程连接同样非常重要。默认设置中远程连接是被禁止的。如下图,打开SQLServerManagementStudio,右键点击数据库实例然后选择属性菜单。
在打开的窗口中,左侧选择Connections,然后勾选”Allowremoteconnectionstothisserver”。
启用SQLServerBrowser服务
#p#分页标题#e#
如果SQLServer在安装时不是用的默认实例名而是自定义的实例名,并且没有配置特定的TCP/IP端口号,那么按照我们前面的描述SQLServer仍然不能支持远程连接。但如果你启用的SQLServerBrowser服务,便可以通过动态TCP/IP端口号进行远程SQLServer连接。启用SQLServerBrowser服务非常简单,与启用SQLServer类似,在SQLServerConfigurationManager中右键点击SQLServerBrowser,然后选择启用。启用该服务将会影响到服务器上所有已安装的SQLServer实例。
在防火墙中为sqlbrowser.exe应用程序创建例外
我们在前面已经提到了,自定义命名的SQLServer实例要支持远程连接需要启用sqlbrowser服务,Windows防火墙可能会阻止该服务执行。因此,我们必须在Windows防火墙中给sqlbrowser服务添加例外。
首先找到服务器上安装sqlbrowser.exe程序的路径,如C:\\ProgramFiles\\MicrosoftSQLServer\\90\\Shared\\sqlbrowser.exe。如果不确定SQLServer安装在什么地方,你可以在Windows搜索一下文件名。与我们在前面介绍的在防火墙中添加SQLTCP/IP端口号的方法类似,给sqlbrowser.exe应用程序添加防火墙例外。
重新创建数据库别名
创建SQLServer别名并在应用程序中使用它很常见。使用数据库别名可以确保一旦数据库的位置发生了变化,如更换了新的服务器,IP地址发生了变化等,应用程序中的数据库连接字符串不用修改。否则你更换了数据库的位置,你还要通知所有使用该数据库的应用程序修改源代码或配置文件中的连接字符串,这恐怕是不可能的。所以,使用数据库别名来配置连接字符串是一个非常明智的选择。另外,你还可以使用相同的别名来指向不同的数据库实例,当修改别名参数时,可以马上实现数据库之间的切换。创建数据库别名非常简单,在SQLServerConfigurationManager中选择Aliases进行创建。
小编结语:
更多内容尽在课课家教育~~