AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[system-tables](dba)

Martin Hope
Matěj Štágl
Asked: 2021-07-09 03:03:36 +0800 CST

返回列的系统名称

  • 3

我正在寻找一种方法来获取使用 Sql Server 2019 的任意 sql 查询返回的列的系统名称。以下是一些示例查询和所需的结果:

company: id, name
employee: id, name, companyId

select * from company

| tableName | columnName |
  company     id
  company     name

select id as whatever from company

| tableName | columnName |
  company     id

select e.id, e.name, c.name from employee e join company c on e.companyId = c.id

| tableName | columnName |
  employee    id
  employee    name
  company     name

我无法控制输入查询,它们由最终用户提供。

sql-server system-tables
  • 1 个回答
  • 105 Views
Martin Hope
prototype
Asked: 2020-07-02 12:17:30 +0800 CST

撤销对选定系统表的访问权限

  • 0

在 Vertica 中,将 V_CATALOG 和 V_MONITOR 中所有系统表的 SELECT 权限授予 PUBLIC。因此,默认情况下所有用户都可以查询它们。并非所有系统表似乎都适合公开。

在大多数情况下,对于每个条目,结果似乎适当地仅限于用户特定的授权。例如,select * from v_catalog.columns;只返回用户已被授予 SELECT 表和 USAGE 模式的列,幸运的是SELECT * FROM v_catalog.passwords;根本不返回任何行。

但是,有些似乎过于宽泛,例如SELECT * FROM v_catalog.users返回所有模式的所有用户。

REVOKE SELECT ON v_catalog.users对于打算仅对特定模式中的特定表具有 SELECT 访问权限的用户来说,有什么缺点吗?或者进一步完全为公共用户撤销对 V_CATALOG 和 V_MONITOR 的 SELECT?

仅限制对特定数据库的访问,并限制对系统表的访问

permissions system-tables
  • 1 个回答
  • 126 Views
Martin Hope
CervonMi
Asked: 2020-02-19 19:11:33 +0800 CST

从 sys.column 信息中选择列数据

  • 0

要么这是不可能的,要么我不能写一个好的互联网搜索。

我有一个查询来获取我们数据库的表和列信息:

SELECT t.name [table], 
       c.name [column]
  FROM sys.tables t
  LEFT JOIN sys.columns c on t.object_id = c.object_id

我想做的是添加类似的东西

(Select AVG(LEN(c.name)) from t.name) [AVG LEN]

我显然会建立一些检查,只在 varchar 上运行 Len,而在常规 AVG 上运行数字,但这部分很容易。它正在让 SQL 真正正确地处理我正在努力解决的名称。

对于 varChars,我的目标是获取字符串值的最小、平均、最大和模式长度。为了简单起见,我只列出了 AVG。我还将对数值做一些工作。

这样,当我为这些领域开发控件时,我可以更好地估计制作控件的大小。我可以逐列执行此操作,但我希望能够运行一个查询并将我的表和列放在一个漂亮的图表中。

sql-server system-tables
  • 1 个回答
  • 516 Views
Martin Hope
Ronaldo
Asked: 2019-09-17 07:34:58 +0800 CST

究竟是什么触发了 sys.database_files 上 is_media_read_only 列的更新?

  • 8

愿意解决与数据库属性错误值相关的这个问题,我is_media_read_only做了一些研究和测试,但最后我无法弄清楚究竟是什么触发is_media_read_only了sys.database_files.

根据sys.database_files文档,该列is_media_read_only应具有以下两个可能值之一:

1 = 文件在只读媒体上。

0 = 文件在读写媒体上。

有了这些信息,我对两个不同版本的 SQL Server 进行了以下实验:

Microsoft SQL Server 2014 (SP3-GDR) (KB4505218) - 12.0.6108.1 (X64)
Microsoft SQL Server 2017 (RTM-CU16) (KB4508218) - 14.0.3223.3 (X64)

在我的笔记本(Drive E:)中插入一个笔式驱动器并创建一个数据库,如下所示:

CREATE DATABASE [MyDB]
 ON  PRIMARY 
( NAME = N'MyDB_01', FILENAME = N'D:\DataBases\MyDB_01.mdf'), 
 FILEGROUP [SECONDARY] 
( NAME = N'MyDB_02', FILENAME = N'E:\DataBasesPendrive\MyDB_02.ndf')
 LOG ON 
( NAME = N'MyDB_log', FILENAME = N'D:\DataBases\MyDB_log.ldf')
GO

查询 sys.database_files:

USE MyDB;
GO
SELECT file_id, name, physical_name, is_media_read_only, is_read_only, state_desc  
FROM sys.database_files;
GO

结果是这样的:

之前查询结果

创建数据库后,我打开 CMD 提示符并运行diskpart. 在该实用程序上,我发出了以下命令:

list disk
select disk 2
attributes disk set readonly
attributes disk

磁盘部分

磁盘 2(我的笔式驱动器)现在是只读媒体,所以我预计is_media_read_only值会改变,但是当我sys.database_files再次查询时没有任何变化:is_media_read_only 仍然是 0。所以我开始对数据库进行随机程序,看看是否任何事情都会让 SQL Server 注意到数据库现在位于只读媒体上并将值更新为 1。我可以在两种情况下实现这一点:

第一个:将数据库更改为 READ_ONLY 模式并返回READ_WRITE. (它必须是两个动作,只有其中一个不会起作用):

USE master;
GO
ALTER DATABASE MyDB SET READ_ONLY;
ALTER DATABASE MyDB SET READ_WRITE;
GO

2nd:分离并重新附加数据库。

正如您在图片中看到的那样,这是我可以is_media_read_only更新的两种情况:1

查询后的结果

现在是时候将笔式驱动器再次恢复为 read_write 了,所以我回到diskpart并运行:

select disk 2
attributes disk clear readonly

is_media_read_only当我再次将磁盘 2 更改为读写模式时,只会0在分离和附加过程中更新。我什至尝试重新启动 SQL Server 实例,希望它能更新值,但没有运气。

直到数据库的分离和附加 SQL Server 会给我留下价值1,is_media_read_only即使磁盘不再是READ_ONLY.

因此我的问题是:究竟是什么触发了UPDATE该列is_media_read_only的sys.database_files?此实验显示的行为是否可能是 SQL Server 的错误?

sql-server system-tables
  • 2 个回答
  • 361 Views
Martin Hope
Dimitrios Desyllas
Asked: 2019-08-09 05:35:40 +0800 CST

如何找出外部表所属的外部包装器?

  • 1

我发现以下查询列出了我的 PostgreSQL 数据库中的所有外部表:

select * from information_schema."tables" where table_type='FOREIGN TABLE';

现在我想找出引用数据库的外部包装连接。在这个答案中,以下查询列出了我所有的外部包装器:

SELECT fdw.fdwname AS "Name",
  pg_catalog.pg_get_userbyid(fdw.fdwowner) AS "Owner",
  fdw.fdwhandler::pg_catalog.regproc AS "Handler",
  fdw.fdwvalidator::pg_catalog.regproc AS "Validator"
FROM pg_catalog.pg_foreign_data_wrapper fdw
ORDER BY 1;

现在我想要找出如何组合这些信息,以便找出外部表属于哪个外部包装器。你知道如何查询吗?

postgresql system-tables
  • 1 个回答
  • 53 Views
Martin Hope
Dimitrios Desyllas
Asked: 2019-07-30 23:51:10 +0800 CST

不使用 `psql` 命令列出 Postgresql 外部数据包装器

  • 1

正如在 stackoverflow答案中看到的,我可以使用 psql 命令和\dew[+]命令来列出外部包装器。

但是使用 DBEaver、DataGrid 等通用数据库工具让我们的生活更轻松。使用这些工具,我如何列出所有可用的数据包装器以及如何找出它们是否被使用?

postgresql system-tables
  • 1 个回答
  • 497 Views
Martin Hope
Enrique Zavaleta
Asked: 2018-10-02 05:57:08 +0800 CST

为什么 sys.columns.is_nullable 可以为空?

  • 5

我正在编写一个将映射到 C# 类的查询,并且在获取查询列的类型时,结果是sys.columns 中的某些列可以为 NULL

  • is_nullable
  • is_replicated
  • is_merge_published
  • is_dts_replicated

在同一个 sys.columns中还有其他 NOT NULL

  • is_rowguidcol
  • is_identity
  • is_computed

注意:那些列有点

我认为它们应该始终为 NOT NULL,因为 SQL Server 必须知道列的属性。

那么,为什么某些/那些列sys.columns可以NULL和/或在哪些情况下会出现?

sql-server system-tables
  • 1 个回答
  • 1277 Views
Martin Hope
Evan Carroll
Asked: 2018-08-30 00:22:17 +0800 CST

除了 INFORMATION_SCHEMA 之外,MySQL 是否有更私密和完整的目录?

  • 1

大多数数据库提供标准化的INFORMATION_SCHEMA,但大多数也提供其他东西,

  • 在 PostgreSQL 中,我们有系统目录,它是pg_catalog
  • 在 SQL Server 中,您有系统基表

MySQL 是否公开了除 之外的任何内容INFORMATION_SCHEMA?具体来说,这个问题的灵感来自于试图找到是否有一个表负责内部函数解析,例如pg_catalog.pg_proc它告诉我我的数据库具有的所有 GIS 函数。如果那是在 MySQL 中,我可以解决这个评论。但是,除此之外,我只想知道是否还有其他东西INFORMATION_SCHEMA。就是那个问题。

mysql system-tables
  • 2 个回答
  • 81 Views
Martin Hope
JohnLBevan
Asked: 2018-08-26 01:39:04 +0800 CST

persistent_version_store 表是什么?

  • 6

MS Shipped 表的用途是什么:sys.persistent_version_store?

为什么我想知道

主要是好奇心,部分原因是它可能与等待咬我们的问题有关......

我们正在运行 MS Dynamics 365 for Finance and Operations 的 SaaS 实例。这用于监控性能的工具非常有限。在试图找到一些有意义的东西时,我发现这张表的行数高得离谱 (~75,000,000)。这似乎令人担忧。这可能没问题,但 MS 已将其包含在他们的分析工具中,这意味着这会掩盖图表上的所有其他信息(因为它具有线性比例),使图表变得毫无意义。我想了解这个表是什么,这样我就可以确定它是否需要调查,或者将它包含在监控工具中是否只是糟糕的设计。

为什么不阅读文档

因为它是一个 MS 表,所以应该在某处记录下来。但是,搜索persistent_version_store给出了 1 个结果,而且是中文的。搜索Persistence Version Store效果更好;但不清楚这是否是同一件事/关于它是什么的文档不多;只有如何解决达到最大尺寸的问题。

azure-sql-database system-tables
  • 2 个回答
  • 1080 Views
Martin Hope
tinlyx
Asked: 2018-03-23 13:02:19 +0800 CST

如何检查 PostgreSQL 表是否是临时的?

  • 2

如何编写查询来检查 PostgreSQL (10.x) 表是否为临时表?

我查看了pg_class系统表,但找不到任何关于关系是否是临时的列。

SELECT * FROM pg_class WHERE False;
 relname | relnamespace | reltype | reloftype | relowner | relam | relfilenode | reltablespace | relpages | reltuples | relallvisible | reltoastrelid | relhasindex | relisshared | relpersistence | relkind | relnatts | relchecks | relhasoids | relhaspkey | relhasrules | relhastriggers | relhassubclass | relrowsecurity | relforcerowsecurity | relispopulated | relreplident | relispartition | relfrozenxid | relminmxid | relacl | reloptions | relpartbound 
---------+--------------+---------+-----------+----------+-------+-------------+---------------+----------+-----------+---------------+---------------+-------------+-------------+----------------+---------+----------+-----------+------------+------------+-------------+----------------+----------------+----------------+---------------------+----------------+--------------+----------------+--------------+------------+--------+------------+--------------
(0 rows)
postgresql system-tables
  • 1 个回答
  • 1664 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve