Dar*_*ver 5 sql database sql-server-2008
在服务器上列出所有带有模式的表是没有问题的
SELECT SCHEMA_NAME(schema_id), name FROM sys.tables
Run Code Online (Sandbox Code Playgroud)
如何确定表所在的数据库?
sys.tables存在于所有数据库中,因此我没有关注您不知道您所在的数据库的事实.您可以运行DB_NAME(DB_ID())来获取数据库名称
SELECT DB_NAME(DB_ID()),SCHEMA_NAME(schema_id), name FROM sys.tables
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,DB_NAME(DB_ID())将为每一行返回相同的值
要为所有数据库执行此操作,您可以执行此操作
EXEC sp_msforeachdb 'use [?] SELECT ''?'',SCHEMA_NAME(schema_id), name
FROM sys.tables'
Run Code Online (Sandbox Code Playgroud)
您当然可以将其转储到表格中
CREATE TABLE #output (DatabaseName VARCHAR(1000),
SchemaName VARCHAR(1000),
TableName VARCHAR(1000))
INSERT #output
EXEC sp_msforeachdb 'use [?] SELECT ''?'',SCHEMA_NAME(schema_id), name
FROM sys.tables'
SELECT * FROM #output
Run Code Online (Sandbox Code Playgroud)
就像一个FYI,sp_msforeachdb proc是未记录的,你不应该将它用于生产代码,快速找到一些好的东西,因为生产代码滚动你自己的这个proc的版本
另见Aaron Bertrand的帖子:
| 归档时间: |
|
| 查看次数: |
12489 次 |
| 最近记录: |