SQL SERVER 2008 登陆失败(SQL和windows都没有对应的权限)

转自:http://www.cnblogs.com/zerocc/p/3425431.html

昨天在测试一些权限今天早上来就发现SQL SERVER 登陆不上去,报错为: 用户登陆失败:消息 18456,级别 14,状态 1,服务器 XXX,第 1 行 .  用户 ‘XXX‘ 登录失败。我的服务和代理都是自动启动的,所以问题不在这了,由于是本地服务,也没有多个帐户,测试的时候Sa也被自己禁用了。有的用户就是部分库的只读权限,怎么办呢?

方法就是:把 sql 启动到单用户模式,然后用 sqlcmd -A 登录,前提是你需要有电脑的管理员权限。网上有很多方法是一样的,但是对于单用户模式的说明都不太详细,至少对于像我这种小白来讲还是有一定的理解问题,所以写一下以便于像我一样误操作导致的同学进行学习。

启用本地帐户:
1.先看一下本机的帐户是否具有管理员的权限,如果没有添加上。
2.在开始菜单的搜索框中输入 cmd , 右键单击选择以管理员身份运行
3.在命令提示符输入 NET STOP MSSQLSERVRE 停止MSSQLSERVER运行(若已经停止则可以跳过此步骤)
4.若3有问题,提示报错,则可以在开始 -->SQL SERVER --> 配置工具 -->SQL SERVER 配置管理器 --> 打开SQL SERVER属性-->高级 --> 启动参数里面加上 -m
      加参数的时候注意一下,一定要加在启动参数的最后面并且加上分号,以便于之前的相隔开来。如: -dD:\DATA\master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG;-lD:\DATA\mastlog.ldf  ;-m
5.若以上均无问题,则切换到安装路径,即Binn下sqlservr.exe的路径
     如:cd C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn 
6.执行 sqlservr.exe,即单用户模式进入了
7.再以管理员帐户重新登陆开启一个窗口,输入SQLCMD -A
8.输入你要更改的操作命令即可,在此处我需要的是把本机帐户添加 , 如:

USE master
GO
CREATE LOGIN  [domain\username]  FROM WINDOWS WITH DEFAULT_DATABASE=[Master]
GO
EXEC sp_addsrvrolemember @loginame=N‘domain\username‘, @rolename=N‘sysadmin‘
GO

为了避免错误,可以再加一个SQL的帐户以备不时之需, 也可以把sa命令启用 :

-- 添加用户T1并给予管理员的权限
USE [master]
GO
CREATE LOGIN [T1] WITH PASSWORD=N‘[email protected]‘, DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
EXEC master..sp_addsrvrolemember @loginame = N‘T1‘, @rolename = N‘sysadmin‘
GO

-- 启用SA
ALTER LOGIN [sa] ENABLE
GO

9.以上操作完成之后关闭2个命令行窗口,启动sqlserver,即可以登陆。

注: 此环境为win7 + sql server 2008 其它环境没有尝试,仅作参考

时间: 2024-08-02 23:24:23

SQL SERVER 2008 登陆失败(SQL和windows都没有对应的权限)的相关文章

SQL Server 2008作业失败无法确定所有者是否有服务器访问权限

调用作业---错误提示内容 该作业失败. 无法确定所有者 WIN-3TH1KNIT12D\Administrator (拥有作业 Database_Backup.step1)是否有服务器访问权限 (原因: 无法获取有关 Windows NT 组/用户 'WIN-3TH1KNIT12D\Administrator' 的信息,错误代码 0x534. [SQLSTATE 42000] (错误 15404)). 产生原因: 之前有修改过操作系统的用户名或计算机名1.SQL Server代理 2.作业 3

如何更改SQL Server 2008 登陆验证方式

配置SQL Server的身份验证方式 在 默认情况下,SQL Server 2005 Express是采用集成的Windows安全验证且禁用了sa登录名.为了工作组环境下不使用不方便的 Windows集成安全验证,我们要启用SQL Server 2005 Express的混合安全验证,也就是说由SQL Server来验证用户而不 是由Windows来验证用户. 1.使用SQL Server Management Studio Express. 当 我们启动SQL Server Manageme

安装Sql server 2008时出现sql server 2005 express tools failed 怎么办?

提示错误:Sql2005SsmsExpressFacet 检查是否安装了 SQL Server 2005 Express 工具. 失败,已安装 SQL Server 2005 Express 工具.若要继续,请删除 SQL Server 2005 Express 工具. 解决方法:不用删SQL Server 2005 Express 工具.修该注册表即可,点Start,再点Run,输入regedit,点ok,找到HKEYLocalMachine/Software/Microsoft/Micros

SQL Server 2008 安装失败问题总结

第一次安装SQL Server2008,遇到了不少问题,各种解决办法用遍,终于安装成功,现将经验一一总结如下: 背景:在安装SQL Server2008之前本机上已安装过Microsoft Visual Studio2008 1.sql server2008安装时提示重启计算机失败怎么办 在注册表左侧目录栏中找到如下位置:“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ Session Manager”然后在右侧选择删除“PendingF

sql server 2008 在与 SQL Server 提示建立连接时出现与网络相关的或特定于实例的错误

原文地址:http://zhidao.baidu.com/link?url=Ndav32DO9zL5XnltqoqlhvKHbJv_n3Zwihhw4cwF9ffNq8hb8z7h7n3vJVfoeWxzGoRh1qCzcvls-ojQddUXdq 1.开始-->所有程序-->Microsoft Visual Studio 2008 R2-->配置工具-->SQL server配置管理器 2.然后打开配置管理器,查看图中的服务是否开启了.如果没有开启,就把相应的服务开启. 3.进行

在SQL Server 2008 中使用SQL脚本创建登录用户并授权

到处都使用超级用户sa显然是不安全的,因此有创建用户并让其只能访问某个数据库的必要.当然可以使用SQL Server自带的图形界面向导,但是太难用用了!有时候代码比较直接,比如这里: --使用已经创建好的数据库 use mydb GO --创建登录用户和密码 EXEC sp_addlogin N'mydb_user','123456' --使mydb_user成为当前数据库的合法用户 EXEC sp_grantdbaccess N'mydb_user' --授予mydb_user对自己数据库的所

1 - SQL Server 2008 之 使用SQL语句创建具有约束条件的表

约束条件分为以下几种: 1)非空约束,使用NOT NULL关键字: 2)默认值约束,使用DEFAULT关键字: 3)检查约束,使用CHECK关键字: 4)唯一约束,使用UNIQUE关键字: 5)主键约束,使用PRIMARY KEY关键字: 6)外键约束,使用FOREIGN KEY关键字. 约束是确保数据的完整性,从而阻止不希望插入的数据被录入. 以下使用一段SQL代码进行演示: USE PersonInfo --使用PersonInfo数据库 GO IF EXISTS (SELECT * FRO

2 - SQL Server 2008 之 使用SQL语句为现有表添加约束条件

上一节讲的是直接在创建表的时候添加条件约束,但是有时候是在表格创建完毕之后,再添加条件约束的,那么这个又该如何实现? 其实,跟上一节所写的SQL代码,很多是相同的,只是使用了修改表的ALTER关键字及添加约束的ADD CONSTRAINT关键字而已,其他大同小异. 代码如下: USE PersonInfo --使用PersonInfo数据库 GO IF EXISTS (SELECT * FROM sys.tables WHERE [name] = 'Employee ') --如果存在Emplo

4 - SQL Server 2008 之 使用SQL语句删除表格

使用删除表格的SQL命令与删除数据的命令一样,只是删除的是表格这个对象, 语法如下:DROP TABLE 表名 一般在删除表格之前,需判断这个表格存不存在,存在则删除,不存在则不进行执行任何代码. 代码1与代码2同样能删除表格. 另外,着重强调一点,删除表格之前,必须先删除含有外键的表格,如果直接删除外键引用的主键表格,将会报错. 代码1: USE PersonInfo GO --如果在PersonInfo数据库系统对象中找到一个名为Employee的对象,且类型为表格 IF EXISTS(SE