【问题标题】:SQL Server query to find all current database namesSQL Server 查询以查找所有当前数据库名称
【发布时间】:2009-05-16 21:50:10
【问题描述】:

我需要一个 SQL 查询来查找现有数据库的名称。

【问题讨论】:

  • 你好鲍勃琼斯!请确保您接受作为正确/已接受的答案,以帮助未来的用户。
  • @BobJones 看起来那里有一个适合你的答案 - 你能接受一个来帮助未来的用户吗?

标签: sql-server


【解决方案1】:

这是在一个 Sql 引擎中显示所有数据库的查询

Select * from Sys.Databases

【讨论】:

    【解决方案2】:
    SELECT name  
    FROM sys.databases
    

    您只会看到您有权查看的数据库。

    【讨论】:

      【解决方案3】:

      另一个添加到组合中:

      EXEC sp_databases
      

      【讨论】:

        【解决方案4】:

        我不推荐这种方法...但如果你想变得古怪和奇怪:

        EXEC sp_MSForEachDB 'SELECT ''?'' AS DatabaseName'
        

        或

        EXEC sp_MSForEachDB 'Print ''?'''
        

        【讨论】:

          【解决方案5】:

          你也可以使用这些方式:

          EXEC sp_helpdb
          

          和:

          SELECT name FROM sys.sysdatabases
          

          推荐阅读:

          别忘了看看sysdatabases VS sys.sysdatabases

          类似的thread。

          【讨论】:

            【解决方案6】:

            This forum 也建议:

            SELECT CATALOG_NAME AS DataBaseName
            FROM INFORMATION_SCHEMA.SCHEMATA
            

            【讨论】:

            • 这在我的机器上不起作用。 MSDN 说它应该“为每个对当前用户具有权限的数据库包含一行”。然而,结果仅限于当前数据库。 “SELECT * FROM sysdatabases”对我来说效果更好。
            【解决方案7】:

            对于“sys.databases”不起作用的人, 您也可以使用它;

            SELECT DISTINCT TABLE_SCHEMA from INFORMATION_SCHEMA.COLUMNS
            

            【讨论】:

            • 这将是 table_schema 例如dbo不是数据库名称
            【解决方案8】:
            SELECT datname FROM pg_database WHERE datistemplate = false
            

            #for postgres

            【讨论】:

              猜你喜欢
              • 2010-09-12
              • 1970-01-01
              • 2011-10-26
              • 1970-01-01
              • 2022-10-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多