Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 列出SQL server数据库中的表名、所有者、架构和列_Sql Server_Schema_Owner - Fatal编程技术网

Sql server 列出SQL server数据库中的表名、所有者、架构和列

Sql server 列出SQL server数据库中的表名、所有者、架构和列,sql-server,schema,owner,Sql Server,Schema,Owner,在SQL SERVER中,如何获取所有表名、列名和所有者的列表? 我已经这样做了,但是我从哪里得到所有者的详细信息 SELECT t.name AS tableName, s.name SchemaName FROM sys.tables AS t INNER JOIN sys.schemas AS s ON t.[schema_id] = s.[schema_id] 您是否尝试过使用内置的sp_表存储过程?有关用法,请参

在SQL SERVER中,如何获取所有表名、列名和所有者的列表?
我已经这样做了,但是我从哪里得到所有者的详细信息

SELECT t.name AS tableName, 
       s.name SchemaName 
FROM   sys.tables AS t 
       INNER JOIN sys.schemas AS s 
               ON t.[schema_id] = s.[schema_id] 

您是否尝试过使用内置的
sp_表
存储过程?有关用法,请参阅


我本想将此添加为注释,但我显然需要50%的声誉才能这样做。

您是否尝试过使用内置的
sp_表
存储过程?有关用法,请参阅

我本想将此添加为注释,但我显然需要50%的声誉才能这样做。

请注意,“表所有者”与“架构所有者”相同,“表类型”将标识该项是表还是视图

希望这有帮助

--This will return all tables, table owners and table types for all database(s) that are NOT 'Offline'
--Offline database information will not appear

Declare @temp_table table(
DB_NAME varchar(max),
TABLE_OWNER varchar(max),
TABLE_NAME varchar(max),
TABLE_TYPE varchar(max),
REMARKS varchar(max)
)

INSERT INTO @temp_table (DB_NAME, TABLE_OWNER, TABLE_NAME, TABLE_TYPE,REMARKS)

EXECUTE master.sys.sp_MSforeachdb 'USE [?]; EXEC sp_tables'

SELECT * 
FROM @temp_table 
--Uncomment below if you are seaching for 1 database
--WHERE DB_NAME = '<Enter specific DB Name>'

--For all databases other than 'System Databases'
WHERE DB_NAME not in ('master','model','msdn','tempdb')
order by 1
--这将返回所有非“脱机”数据库的所有表、表所有者和表类型
--脱机数据库信息将不会显示
声明@temp_表(
DB_名称varchar(最大值),
表2所有者varchar(最大值),
表2\u名称varchar(最大值),
表_类型varchar(最大值),
备注varchar(最大值)
)
插入@temp_表格(数据库名称、表格所有者、表格名称、表格类型、备注)
执行master.sys.sp_MSforeachdb'USE[?];EXEC sp_表'
选择*
从@temp_表
--如果要搜索1个数据库,请取消下面的注释
--其中DB_NAME=“”
--对于除“系统数据库”以外的所有数据库
其中DB_名称不在('master'、'model'、'msdn'、'tempdb')
按1订购
请注意,“表所有者”与“架构所有者”相同,“表类型”将标识该项是表还是视图

希望这有帮助

--This will return all tables, table owners and table types for all database(s) that are NOT 'Offline'
--Offline database information will not appear

Declare @temp_table table(
DB_NAME varchar(max),
TABLE_OWNER varchar(max),
TABLE_NAME varchar(max),
TABLE_TYPE varchar(max),
REMARKS varchar(max)
)

INSERT INTO @temp_table (DB_NAME, TABLE_OWNER, TABLE_NAME, TABLE_TYPE,REMARKS)

EXECUTE master.sys.sp_MSforeachdb 'USE [?]; EXEC sp_tables'

SELECT * 
FROM @temp_table 
--Uncomment below if you are seaching for 1 database
--WHERE DB_NAME = '<Enter specific DB Name>'

--For all databases other than 'System Databases'
WHERE DB_NAME not in ('master','model','msdn','tempdb')
order by 1
--这将返回所有非“脱机”数据库的所有表、表所有者和表类型
--脱机数据库信息将不会显示
声明@temp_表(
DB_名称varchar(最大值),
表2所有者varchar(最大值),
表2\u名称varchar(最大值),
表_类型varchar(最大值),
备注varchar(最大值)
)
插入@temp_表格(数据库名称、表格所有者、表格名称、表格类型、备注)
执行master.sys.sp_MSforeachdb'USE[?];EXEC sp_表'
选择*
从@temp_表
--如果要搜索1个数据库,请取消下面的注释
--其中DB_NAME=“”
--对于除“系统数据库”以外的所有数据库
其中DB_名称不在('master'、'model'、'msdn'、'tempdb')
按1订购

架构和所有者之间存在差异。阅读更多细节。如果需要阅读
Schema.Table.Columns
列表,最好使用专用的
INFORMATION\u Schema
(其中包含一个TABLES和Columns视图)SQL-92标准视图。我想使用信息架构没有的对象id。我必须查找用户提供的特定表名和列名,并查看他/她是否有权通过schema访问表您可以使用OBJECT_ID('schema.name')功能来获取表对象ID。schema和owner之间存在差异。阅读更多细节。如果需要阅读
Schema.Table.Columns
列表,最好使用专用的
INFORMATION\u Schema
(其中包含一个TABLES和Columns视图)SQL-92标准视图。我想使用信息架构没有的对象id。我必须查找用户提供的特定表名和列名,并查看他/她是否有权通过schema访问该表您可以使用OBJECT_ID('schema.name')功能来获取表对象ID。我实际上必须检查是否存在由所有者提供的表名、列名(表所在的架构所有者)。我可以从插入的触发器中提供所需的表名和列名,并让sp_table返回答案吗?这样我可以使用下面的代码获取表名和所有者,但如何获取列名?
EXEC sp_tables@table_name='%,@table_owner='%。
您可以向sp_表传递参数,如
exec sp_tables
您将只获得该表的详细信息。我实际上必须检查是否存在由所有者(表所在的架构所有者)提供的表名、列名。我可以从插入的触发器中提供所需的表名和列名,并让sp_table返回答案吗?这样我可以使用下面的代码获取表名和所有者,但如何获取列名?
EXEC sp_tables@table_name='%,@table_owner='%。
您可以向sp_表传递参数,如
exec sp_表
,您将获得该表的详细信息。