Heim  >  Artikel  >  Datenbank  >  无法登陆默认数据库的问题(解决了我上一篇博客的问题)

无法登陆默认数据库的问题(解决了我上一篇博客的问题)

WBOY
WBOYOriginal
2016-06-07 15:35:451020Durchsuche

用数据库就会遇到登陆问题,当sa无法登陆时,很多人都会说先用windows身份验证登陆,然后然后可是当windows身份验证也无法登陆时我们该怎么办呢? 原因分析: 用户默认数据库在连接时不可用。这可能是因为该数据库: 处于可疑模式。 不再存在。 处于单用户模

      用数据库就会遇到登陆问题,当sa无法登陆时,很多人都会说先用windows身份验证登陆,然后…然后…可是当windows身份验证也无法登陆时我们该怎么办呢?

原因分析:

用户默认数据库在连接时不可用。这可能是因为该数据库:

  • 处于可疑模式。
  • 不再存在。
  • 处于单用户模式,并且唯一可用的连接已由其他用户或事物使用。
  • 已被分离。 (我的就是分离了,为了往2000中添加,结果没有添加上反而让我郁闷了三天
  • 已设置为 RESTRICTED_USER 状态。
  • 处于脱机状态。
  • 设置为紧急状态。
  • 不具有映射到用户的登录帐户,或者该用户已被拒绝访问。

此外,该登录帐户可能是多个组的成员,且其中一个组的默认数据库在连接时不可用。

      微软官方说明:http://support.microsoft.com/kb/307864/zh-cn

有如下一段文字。咱主要解决的是windows身份验证无法登陆的问题。

SQL Server 2005

在 SQL Server 2005 中,可以使用 sqlcmd 实用程序更改默认数据库。为此,请按照下列步骤操作:

  1. 单击“开始”,单击“运行”,键入 cmd,然后按 Enter。
  2. 根据 SQL Server 登录使用的身份验证种类,请使用以下方法之一:
    • 如果 SQL Server 登录使用 Microsoft Windows 身份验证连接到该实例,请在命令提示符处键入以下内容,然后按 Enter:

      sqlcmd –E -S InstanceName –d master

    • 如果 SQL Server 登录使用 SQL Server 身份验证连接到该实例,请在命令提示符处键入以下内容,然后按 Enter:

      sqlcmd -S InstanceName -d master -U SQLLogin -P Password

    注意InstanceName 是要连接到的 SQL Server 2005 实例的名称的占位符。SQLLogin 是已删除其默认数据库的 SQL Server 登录的占位符。Password 是 SQL Server 登录密码的占位符。
  3. 在 sqlcmd 提示符处,键入以下内容,然后按 Enter:

    ALTER LOGIN SQLLogin WITH DEFAULT_DATABASE = AvailDBName

    注意AvailDBName 是可由实例中 SQL Server 登录访问的现有数据库的名称的占位符。
  4. 在 sqlcmd 提示符处,键入 GO,然后按 Enter。

看着步骤介绍的挺详细,实施的时候才发现,靠,他的用词太专业化了。

首先看第一个注意中的1.InstanceName 是要连接到的 SQL Server 2005 实例的名称的占位符。这个“实例的名称的占位符”是个what?原来指的是数据库服务器名称(我的是MICROSOF-406AD7/SQLEXPRESS)。

2.SQLLogin又是个what东东?弄些明白人看不懂的“占位符”什么的来解释。真是说明书也害死人呀!!它原来指的是你用windows身份验证登录时那个灰色的用户名。我的是MICROSOF-406AD7/Administrator。你一定要注意,这里的用户名要用[]括起来(当然要是英文状态了),也就是

ALTER LOGIN [MICROSOF-406AD7/Administrator] WITH DEFAULT_DATABASE=maste

第二个注意大概你也能理解了吧,我把他用“master”代替了

 

注:我的第一句:sqlcmd  -E -S   MICROSOF-406AD7/SQLEXPRESS -d master

      我的第二句:ALTER LOGIN [MICROSOF-406AD7/Administrator] WITH DEFAULT_DATABASE=master

可能你直接在他的网站上复制语句然后修改,可是运行第一句的时候就出错了,因为他网站上面的代码“—E”处弄错了,它在中间多了个空格。你说让不让人抓狂!!!!!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn