让SQL Server Express支持远程连接
近来一直在做一个数据记录打印项目,由于项目太小,不值得上大型关系数据库,以前的Access数据库又因其太过于简单,用于做中心数据库还是觉得有些功能不全,因此SQL Server 2005 Express便成为了首选,而且这个数据库是免费的。
在项目设计完毕测试阶段后,发现SQL Server 2005 Express的远程连接还真是麻烦:由于我的数据库是通过Visual Stadio 2005直接创建的,所以在本机以“SQL Server数据库文件”即可连接,想当然认为只要将数据库文件放在一个共享目录下,并将共享权限提升到完全访问,或者直接映射为本机一个驱动器,应该可以连接,实际试验下来,结果是不行!通过提示,大概明白,SQL Server 2005 Express远程连接能力是关闭的。在网络上搜了一阵相关文选,但是按文章所述,经试验还是无法实现远程连接!然而,每篇文章都不同程度说了SQL Server 2005的连接机制,如何连接呢?经试验多次后,总结出如下: 1、根据微软的MSDN网站文章,打开SQL Server 2005 Express远程连接功能:打开“SQL Server Configuration Manager”
将SQLEXPRESS协议的Named Pipes与TCP/IP启用,并设置TCP/IP端口为1433,应用后重新启动SQL SERVER 2005 EXPRESS服务。这步完成后,打开“SQL Server外围应用配置器”,选择“服务和连接的外围应用配置器”,可以看见“本地连接和远程连接”已经变为“同时使用TCP/IP和Named Pipe”,因此可以不修改。根据有的文章说已经可以连接,但是实际应用还是存在连接失败问题。 2、打开SQL Server Browser,以便客户机可以获取数据库连接信息:打开“SQL Server外围应用配置器”,选择“服务和连接的外围应用配置器”,选中SQL Server Browser:
“启动类型”默认是“禁用”,改为“自动”,单击“应用”使之生效,然后启动此服务。这样SQL Server 2005 Express的远程连接已经设置成功,但在客户机测试连接,有时依然会失败。为什么,请看第三步。 3、通常大家安装的Windows都是XP以上版本,Windows自带防火墙已经激活,而且大部分用户计算机上也因为上网安全,安装了杀毒软件和防火墙,这样SQL Server 2005 Express的服务程序就会被拦截,导致失败。这里以Windows自带的防火墙为例设置Sql Server的相关服务:在控制面板打开“Windows安全中心”,选择“Windows防火墙”,选择“例外”,添加程序“Sqlservr.exe”和“Sqlbrowser.exe”。
提示:单击“添加程序”,在文件选择对话框选择相应程序,这两个程序分别为“[安装SQL Server的硬盘驱动器]\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe”和“[安装SQL Server的硬盘驱动器]\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe”。 4、通过此三步设置,在Windows用户管理创建相关的登录用户,已经可以连接了,不过如果习惯采用SQL身份验证登陆的用户,可以通过“SQL Server Management Studio Express”来进行设置,这个软件不包含在SQL server 2005 Express安装包中,需要自行下载(在微软下载的文件名称为SQLServer2005_SSMSEE.msi)。安装完毕,打开,先以“Windows身份验证”连接数据库:
如果在安装过程SQL SERVER 2005 Express没有选择“SQL SERVER和Windows身份验证模式”的,可以在上图状态下,右键单击对象实例(.\Express…),选择属性打开属性服务器对话框,选择“安全性”选项,选择“SQL SERVER和Windows身份验证模式”,确定:
接着就是创建SQL登录用户,展开实例节点,选择“安全性”,右键单击,选择“新建”->“登录”: 
在打开的对话框,选择”SQL SEVER身份认证”,输入相关信息,若每次登录保持同一密码,取消选择“强制密码过期”:
切换到“服务器角色”,选中“sysadmin”:
确定,保存。重启SQL SERVER 2005 EXPRESS服务,即可以新建的用户以SQL SERVER身份登录了。