【问题标题】:How to attach [dbo] prefix to table name when selecting all tables from a given database?从给定数据库中选择所有表时,如何将 [dbo] 前缀附加到表名?
【发布时间】:2019-06-22 10:19:18
【问题描述】:

我正在使用 SSMS 或直接使用 C# 代码执行问题下方列出的查询。结果,我得到了一个表,其中包含该数据库中所有可用表的名称列表。

在大多数情况下,这些表名可以直接用于所有类型的“SELECT”查询。但是,如果当前数据库是 AdventureWorks2017,则所有表名都已损坏。如果我想执行任何“SELECT”查询,我必须手动添加所有不是 [dbo] 的前缀(例如,[HumanResources]、[Person] 等)。

另外,我的问题是:我应该使用什么样的查询来获得完整的前缀表名(如[AdventureWorks2017].[HumanResources].[Employee] or [Northwind].[dbo].[CustomerCustomerDemo])?

use 'someDBName' 
SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_CATALOG = 'someDBName'

【问题讨论】:

标签: sql sql-server


【解决方案1】:
SELECT '[' + TABLE_SCHEMA + '].[' + TABLE_NAME + ']' AS SchemaAndTable
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_CATALOG = 'DbName'

FWIW,表名没有损坏,它们只是与 dbo 的通常(默认)模式不同

要同时获取数据库名称,您可以这样做:

SELECT '[' + TABLE_CATALOG + '].[' + TABLE_SCHEMA + '].[' + TABLE_NAME + ']' AS DbSchemaAndTable
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_CATALOG = 'DbName'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 2010-10-20
    相关资源
    最近更新 更多