WXJ*_*163 2 sql-server t-sql system-tables
以下查询可用于显示自定义表的定义。
SELECT ORDINAL_POSITION, COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH
, IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'PostHistory'
Run Code Online (Sandbox Code Playgroud)
不适用于 sys 表
SELECT ORDINAL_POSITION, COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH
, IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'sys.time_zone_info'
Run Code Online (Sandbox Code Playgroud)
我猜这些信息在另一个数据库的另一个表中,它们是什么?
我也尝试过sp_help 'sys.time_zone_info'
,并且得到了
对对象“sp_help”、数据库“mssqlsystemresource”、架构“sys”的 EXECUTE 权限被拒绝。
sys.time_zone_info
是一个系统视图,其定义为:
CREATE VIEW sys.time_zone_info AS
SELECT name,
current_utc_offset,
is_currently_dst
FROM OPENROWSET(TABLE TIME_ZONE_INFO, SYSUTCDATETIME())
Run Code Online (Sandbox Code Playgroud)
该OPENROWSET
调用是内部结构的包装。您无法直接获取有关它的信息。
视图返回的列显示在文档中
CREATE VIEW sys.time_zone_info AS
SELECT name,
current_utc_offset,
is_currently_dst
FROM OPENROWSET(TABLE TIME_ZONE_INFO, SYSUTCDATETIME())
Run Code Online (Sandbox Code Playgroud)
以及来自nchar 和 nvarchar (Transact-SQL):
sysname是系统提供的用户定义数据类型,其功能与nvarchar(128)等效,只是它不可为 null。sysname用于引用数据库对象名称。
您还可以从系统目录视图中获取所需的信息,例如:
SELECT
AC.column_id,
AC.[name],
data_type = T.[name],
AC.max_length,
AC.[precision],
AC.scale,
AC.collation_name,
AC.is_nullable
FROM sys.all_objects AS AO
JOIN sys.all_columns AS AC
ON AC.[object_id] = AO.[object_id]
JOIN sys.types AS T
ON T.user_type_id = AC.user_type_id
WHERE
AO.[object_id] = OBJECT_ID(N'sys.time_zone_info');
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1637 次 |
最近记录: |