SQLServer疑难杂症

标签: 无 分类: 未分类 创建时间:2021-10-18 08:19:45 更新时间:2025-01-17 10:39:22

1.无法打开SQL Server服务

【尝试一:更改启动用户】
开始菜单打开->SQL Server配置管理器->右键属性,更改启动用户。

【尝试二:修改安装文件夹的数据权限】
找到sql server 的安装目录,打开文件夹的属性窗口,修改安装文件夹的用户权限,赋予所有者全部权限,再次启动服务。

【尝试三:修改数据库文件夹的权限】
查看系统日志,发现不是因为应用程序的目录权限不对,是因为数据库文件夹的权限不对,我将数据库数据文件和程序安装文件分开了。我随即找到这个文件夹,更改他的权限,但是实际上呢,我没有权限访问这个文件夹,我右键属性,更改所有者,但是这个更改所有者的按钮又是灰色的,无法点击,这不就是一个死循环了吗?要更改用户权限,需要是文件夹的所有者,不是文件夹的所有者,不能更改权限…

最后我进入了安全模式,修改了文件的权限为EveryOne 完全控制。

本以为可以启动了,但是最后,还是不行。我把父元素,子元素,子子文件夹都试了一遍,都不行,所有的文件夹的权限都给了完全控制,最后,还是告诉我无法访问。

【尝试四:修复安装文件】
修复软件,文件夹的权限问题,搞不定,我就尝试在控制面板的程序卸载面板中,进行软件修复,但是没有用,因为修复只是修复了安装文件,但是不会修复数据库文件。

【解决方案】
最后解决的方法,也是挺令人崩溃的,试过了很多种方式,浪费了整整一个下午,从下午三点到下午六点,一直在搞,最后竟然出乎意料的简单,原因其实不是Sql Server的问题,问题是出在了RoseMirrorHA这个软件上面,是这个软件导致了数据库无法启动。这一个问题,还要在RoseMirrorHA的文章中提及。主要有以下几点:
1.SQL Server 服务不能是自动启动的,要是手动启动的。
2.心跳线和对外网线要都连上,即便是不连上,对外网线在不连接外网的时候,最少也要把两台机器用网线连接起来。
3.虚拟IP地址网段要和对外网卡的ip地址网段在同一个网段中。
4.如果还不能连接,需要在属性中,找到数据源,手动指定备份的方向。如果是要从主数据库到备用数据库,也就是从主要的数据库所在向备用的服务器进行数据转移,为了防止丢失数据

2.数据库主体在该数据库中拥有架构

先右键用户,查看该用户拥有的架构,然后打开 SQL SERVER MANAGEMENT STUDIO–>数据库–>安全性–>构架,先删除对应的构架

3.附加数据库失败

我将数据库从SQL Server2000备份,到2008进行还原的时候,出现了错误。

【解决方法】
在还原的时候,选择覆盖现有数据库。

4.windows身份和sa身份都登录不上

忘记了sa的账号密码,并且windows身份认证登录不上的时候,怎么办。

(1) 打开SQL Server配置管理器,在SQL Sever服务之后,双击SQL Server项目,打开高级选项

(2) 在启动参数的后面,添加 ;-m 参数,重新启动。把其他的几个服务全部关掉,特别是SQL Server代理,否则在使用管理工具的时候可能会出现:显示只有一个管理员能够链接

1
2
3
4
用户 'DESKTOP-49SRQTD\ZSHL' 登录失败。原因: 服务器处于单用户模式。目前只有一位管理员能够连接。 (Microsoft SQL Server,错误: 18461)

有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=18461&LinkId=20476

(3) 打开 SQL Server Management Studio,用WINDOWS集成身份验证登录即可,修改sa密码,将当前用户加入到登录选项中

(4) 去掉启动参数后面的 ;-m 重启SQL Server服务。

参考文章:
1.sqlserver的sa账户的密码忘了(修改方法) 这里有一个情况二:忘记了密码,而且从sysadmin中删除了builtin\Administrators帐号,现在没其他人是sysadmin了,这里使用了-m进行了单用户的登录模式
2.SQL Server 2008无法使用Windows身份验证登陆
3.sqlserver ‘sa’密码忘记,windows集成身份验证都登录不了解决办法 用SQL Server Configuration Manager工具打开后双击SQL SERVER 项目后打开高级选项,找到启动参数,在最后加上:;-m即可。我加了-m参数,还是无法使用window身份登录。
4.此时只有一位管理员可以连接(MS SQL Server 错误 18461) 这里可能发生的情况是某些服务正在使用系统管理员登录进行连接,例如报告服务或 SQL Server 代理。
5.没有了SA密码,无法Windows集成身份登录,DBA怎么办? 大概的意思是说当在SQL的启动参数中添加了-m或者-f参数时,计算机本地管理员组的任何一个用户都可以sysadmin的身份登录到SQL中。相信读者看到这个地方就明白了。这里其实并没有去检验登录的用户是否在SQL在存在,只是检查该用户是否为本地计算机的管理组中的用户。 好了,相信后面就不用过多累赘了,只是提醒下读者:修改了sa密码后记得把原来添加在SQL启动参数的-m删除掉,然后在重启SQL服务。

5.无法使用sql server身份认证登录

这个情况出现在使用windows身份认证的时候可以登录,但是使用SQL Server身份认证的时候,总是登录不上去。可以右键打开连接属性,选择安全性,选择 “Windows身份认证和SQL Server身份认证”,两种身份认证方式都选择上,然后重启SQL Server服务就可以了。

小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。