因为sqlserver的express版本是免费的,而且又小巧,所以我就安装了一个sqlserver 2014 express,然而express版本默认是只能本地连接的,而我的项目又需要小伙伴连接我的数据库,于是我谷歌了。其实我也百度了。2015.10.21补录作死记录,如何让你的Sqlserver成功的启动不起来。
闲话不多说,首先说的是我安装的sqlserver express是最简版本,就是说只有一个数据库系统,没有任何管理软件,创建数据库都得用sqlcmd
。所以网络上好多使用sqlserver management studio的对我来说就不适用了。但是我发现要想远程访问sqlserver其实并不难,所需要做的事情也不多。(最起码我是这样的)。我也在网络上面找到了一个很简单的版本,在这里。
如何配置SQL Server 2014 Express使其能够远程访问
1.配置SQL网络配置
在这一步我们需要启用两个服务,第一个是Named Pipes
,第二个是TCP/IP
。默认是不启用的,右键点击启用即可,它可能会提示你重启之后才会生效什么的,这个重启服务指的就是sqlserver服务,去第一个Sql Server服务里面重启一下那个Sqlserver就行了。
可能有的教程还需要你启动什么Sql Server Browser什么的,我发现这个不是必须的,因为我安装的最简版本连安装都没安装。
2.配置TCP/IP属性
在这一步我们需要配置刚刚启动的两个服务中的tcp协议。首先我们需要把一个'全部侦听'设置为'否'(这个我是按照教程来的,没有测试设置为'是'的情况),这一页就ok了,然后我们需要配置你想远程的那个ip地址的端口等参数,要注意画红线的部分,要把这个设置为启动才可以。我之前并没有发现刚刚那个教程其实也说了这个了,因为没有注意,所以做了好多次尝试。
这样就可以远程访问数据库啦,另外我之前安装Sqlserver的时候设置了sa账户,如果使用Windows登陆验证能不能login就不清楚了。
另外,经过今晚的尝试我还为我自己解答了之前的一个疑惑。之前我用qt连接这个数据库的时候用ip地址连接怎么都不行,只有在管理面板里面的数据源设置好了之后才能在程序里访问。原来就是因为我其实并没有启用那个本地ip啊。
2015.10.21作死记录
把TCP/IP协议里面的IP地址都清空!
作为一个用精神洁癖的人,看着SQL Server网络服务TCP/IP协议属性框那一堆堆的ipv6地址就难受。
所以我曾经无数次的点击每个ip地址前面的减号想要把它删掉,但是每次也只能把它收起来而已。为了删掉它们,我尝试了把多余的ip地址都清空(就是把ip地址那一栏里面的内容删掉),然后Sqlserver服务器就启动不起来了,尝试了三遍确定它确实启动不起来之后我就意识到是我刚刚的所作所为要为它的事故负责。
为了更加精确的明白它到底哪里出了问题,所以我就去看了errorlog,然后找到了最为关键的一句话。
TDSSNIClient initialization failed with error 0x57, status code 0x1e.
Reason: The SQL Server Network Interface found a duplicate IP address in the SQL Server TCP listening settings.
Remove the duplicate IP address by using SQL Server Configuration Manager.
The parameter is incorrect.
其实最关键的三个词就是duplicate IP address
(重复的ip地址),然后我还看到了Remove ... by using SQL Server Configuration Manager
,就是这个remove让我又去SQL Server Configuration Manager里面右键了很多次。
删除无果之后我猜想那几个空位其实是Sqlserver预留的,没法删除,但是留空之后就重复了(空白也是一种重复呢),那么我就自然而然的想到了修复,拿安装管理器修复一通,它给我填上了几个ipv6的地址,仍然还有很多留空。
没有办法的我只好实行权宜之计咯。
127.0.0.2
127.0.0.3
127.0.0.4
127.0.0.5
127.0.0.6
...
然后运行,就可以了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。