【问题标题】:How can I change my default database in SQL Server without using MS SQL Server Management Studio?如何在不使用 MS SQL Server Management Studio 的情况下更改 SQL Server 中的默认数据库?
【发布时间】:2008-12-12 10:38:32
【问题描述】:

我从 SQL Server 中删除了一个数据库,但事实证明 我的登录 已设置为使用删除的数据库作为默认数据库。我可以通过使用连接对话框中的“选项”按钮并选择“主”作为要连接的数据库来连接到 SQL Server Management Studio。但是,每当我尝试在对象资源管理器中执行任何操作时,它都会尝试使用我的默认数据库进行连接并失败。

有谁知道如何设置我的默认数据库不使用对象资源管理器

【问题讨论】:

    标签: sql-server sql-server-2005 ssms default-database


    【解决方案1】:

    您可以使用 sp_defaultdb 系统存储过程设置默认数据库。像您一样登录,然后单击“新建查询”按钮。之后只需运行 sp_defaultdb 命令,如下所示:

    Exec sp_defaultdb @loginame='login', @defdb='master' 
    

    【讨论】:

    • 非常感谢。像一个魅力一样工作(并教我有关“选项”对话框以指定 db)。
    • 这个问题在meta提出了一个问题
    • 如果您在 AD 组中并且不想为其他数十名开发人员更改默认数据库,则效果不佳。
    • @DOK:但我认为如果您的登录以这种方式被破坏,那么所有其他开发人员也是如此。所以为所有人修复它肯定是一件好事吗?
    • 嗯,这个特定的 SQL Server 实例上有十几个不同的数据库。我们都想要一个不同的默认数据库。如果我们为每个数据库创建一个不同的用户组,以便它可以拥有所需的默认数据库,那么如果我们想要查看不同的数据库,我们都必须在一堆不同的用户组中,然后我们将失去所需的默认值。我希望在 Management Studio 中有一种方法可以修复默认数据库,但到目前为止我还没有找到真正有效的方法。
    【解决方案2】:

    sp_defaultdb(will be removed in a future version of Microsoft SQL Server)的替代品可以是ALTER LOGIN

    ALTER LOGIN [my_user_name] WITH DEFAULT_DATABASE = [new_default_database]
    

    注意:用户名和数据库名不带引号(与sp_defaultdb 解决方案不同)。如果名称有特殊字符,则需要括号(最常见的示例是域用户 domain\username,如果没有括号将无法使用):

    ALTER LOGIN me WITH DEFAULT_DATABASE = my_database
    

    但是

    ALTER LOGIN [EVILCORP\j.smith28] WITH DEFAULT_DATABASE = [prod\v-45]
    

    【讨论】:

    • 这个问题现在有点老了。当时我使用的是 SQL 2005。直到 2008 版本才添加 Alter Login。
    • @MartinBrown 是的,我使用sp_deafultdb 已经很久了。我很惊讶有一种“新”方式。
    • 注意:字段 my_user_name 或数据库周围不需要单引号,可能会导致错误。对于经验丰富的人来说很明显,但对于那些偶尔这样做的人来说可能不是这样。方括号可选,如果字段表示连续文本。
    • 我通过一个组连接到 PROD 数据库,所以我在服务器上没有个人登录,当我尝试运行上述内容时,我得到“无法更改登录 'DOMAIN\myuser' ,因为它不存在或者你没有权限。”。更糟糕的是,我在多个组中,因为每个组都给了我对服务器上众多数据库之一的特定访问权限。建议?
    • 查找登录的默认数据库是:select name, default_database_name from sys.server_principals;
    【解决方案3】:

    要以 GUI 方式执行此操作,您需要编辑您的登录信息。它的属性之一是用于该登录的默认数据库。您可以在 Security 节点下的 Logins 节点下找到登录列表。然后选择您的登录名并右键单击并选择属性。更改默认数据库,您的生活会更好!

    请注意,具有系统管理员权限的人需要能够登录才能执行此操作或运行上一篇文章中的查询。

    【讨论】:

    • 这很好用!只是在那里输入“master” db 而不是“default”。
    • 我遇到的问题是我是系统管理员并且删除了我设置为默认值的数据库,因此甚至无法进入此对话框。
    • @MartinBrown 尽管如此,我没有删除任何表格,我仍然被引导到你的问题,但对 GUI 解决方案感觉更舒服。
    【解决方案4】:

    感谢this post,我找到了更简单的答案:

    1. 打开 Sql Server Management Studio

    2. 转到对象资源管理器 -> 安全性 -> 登录

    3. 右击登录并选择属性

    4. 并在属性窗口中更改默认数据库并单击确定。

    【讨论】:

    • 欢迎来到 StackOverflow 并感谢您提供答案。您可能想看看 Markdown 编辑器的功能,以便您可以格式化代码块、列表等:stackoverflow.com/editing-help。我已经编辑了您的答案,以便为您改进格式。
    • 这个问题的重点是,如果您删除了 您自己的 登录帐户的默认数据库,您所描述的内容将不起作用。在我的特殊情况下,我是系统中唯一的管理员,因此也无法使用其他人的帐户来达到相同的效果。
    • @Mattijs 希望您阅读问题的最后一行“有人知道如何在不使用对象资源管理器的情况下设置我的默认数据库吗?”。这正是你要求做的。
    • 这可能没有回答 OP 的问题,但它回答了我的问题。这是一个有用的答案。
    • 这在 Azure 数据库中是不可能的:/
    【解决方案5】:

    如果您无权更改默认数据库,则可以在查询顶部手动选择不同的数据库...

    USE [SomeOtherDb]
    SELECT 'I am now using a different DB'
    

    只要您有权访问其他数据库

    就可以工作

    【讨论】:

      【解决方案6】:
      1. 点击更改连接图标
      2. 点击选项
      3. 从连接到数据库下拉菜单中选择数据库

      【讨论】:

      • 出于某种原因,这在某些情况下对我有用,而在其他情况下则无效。
      【解决方案7】:

      单击连接到服务器对话框和连接属性上的选项,您可以选择在启动时连接到的数据库。最好将其保留为默认值,这将使 master 成为默认值。否则你可能会在连接数据库后无意中在错误的数据库上运行 sql。

      【讨论】:

      • 来自问题:“我可以通过使用连接对话框中的“选项”按钮并选择“主”作为要连接的数据库来连接到 SQL Server Management Studio。但是,每当我尝试在对象资源管理器中执行任何操作,它会尝试使用我的默认数据库进行连接并失败。”虽然从那时起他们可能已经修复了它,但这个问题已经很老了。
      【解决方案8】:

      我也更喜欢ALTER LOGIN 命令作为接受的答案和描述here

      但对于 GUI 爱好者

      1. 转到 [服务器实例] --> 安全性 --> 登录 --> [您的登录名]
      2. 右键单击[您的登录名]
      3. 更新页面底部的默认数据库选项

      厌倦了阅读!看看下面的

      【讨论】:

        【解决方案9】:

        如果您无法登录 SQL Server:

        sqlcmd –E -S InstanceName –d master
        

        参考: https://support.microsoft.com/en-us/kb/307864

        【讨论】:

          【解决方案10】:

          这可能会或可能不会完全回答问题,但是当我更改帐户以创建一个新数据库作为“默认数据库”时,我遇到了这个问题(和问题)。然后我删除了该数据库并想从头开始测试我的创建脚本。我注销了 SSMS 并打算重新登录,但被拒绝 - 无法登录到默认数据库是错误。哦!

          我所做的是,在 SSMS 的登录对话框中,转到选项、连接属性,然后在“连接到数据库”组合框中键入 master。单击连接。让我进去。从那里你可以运行命令:

          ALTER LOGIN [DOMAIN\useracct] WITH DEFAULT_DATABASE=[master]
          GO
          

          【讨论】:

            【解决方案11】:

            如果您使用 Windows 身份验证,并且您不知道通过用户名和密码以用户身份登录的密码,您可以这样做:在 SSMS 的登录屏幕上单击右下角的选项,然后转到连接属性选项卡。然后,您可以手动输入您有权访问的另一个数据库的名称,在它显示的位置,这将允许您连接。然后按照其他建议更改默认数据库

            https://gyazo.com/c3d04c600311c08cb685bb668b569a67

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2023-03-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多