标签: objectid

master、tempdb、model 和 msdb 是否可以分别具有 1、2、3、4 以外的 database_id?

据我所知,SQL Server系统数据库总是具有相同的 ID,而且我在 Internet 上看到许多维护脚本依赖谓词WHERE database_id > 4将它们从脚本的操作中排除。

另外,如果我SELECT name, schema_id FROM sys.schemas;在新的用户数据库上运行,我会得到:

name                 schema_id
dbo                  1
guest                2
INFORMATION_SCHEMA   3
sys                  4
db_owner             16384
db_accessadmin       16385
db_securityadmin     16386
db_ddladmin          16387
db_backupoperator    16389
db_datareader        16390
db_datawriter        16391
db_denydatareader    16392
db_denydatawriter    16393
Run Code Online (Sandbox Code Playgroud)

我在两个不同的实例上运行了该查询,一个是 SQL Server 2016,另一个是 SQL Server 2005,并且都返回了相同的结果。

问题:

  1. 是否有任何情况(或 sql server 版本)系统数据库 master、tempdb、model 和 msdb 的 database_id 分别不是 1、2、3、4?
  2. 真的可以相信我列出的架构在任何 SQL Server 实例上都具有相同的 ID,以便我可以根据这些 ID 编写维护脚本吗?

sql-server system-databases objectid

8
推荐指数
2
解决办法
1005
查看次数

由于缺少 oid 运算符,无法从 pgAdmin4 中的表中输出数据

我目前在本地运行 Postgresql 10.6,我使用 PgAdmin 4.12 与之交互,直到今天一切都运行良好。但是今天我在 pgAdmin 查询编辑器中运行了以下查询:

SELECT * FROM test_table LIMIT 100
Run Code Online (Sandbox Code Playgroud)

并得到以下错误:

ERROR:  operator does not exist: - oid at character 125
HINT:  No operator matches the given name and argument type. You might need to add an explicit type cast.
STATEMENT:  SELECT at.attname, at.attnum, ty.typname
        FROM pg_attribute at LEFT JOIN pg_type ty ON (ty.oid = at.atttypid)
        WHERE attrelid=-1519044407::oid AND attnum = ANY (
            (SELECT con.conkey FROM pg_class rel LEFT OUTER JOIN pg_constraint con ON con.conrelid=rel.oid
            AND …
Run Code Online (Sandbox Code Playgroud)

postgresql select table pgadmin-4 objectid

5
推荐指数
1
解决办法
2340
查看次数