当前位置: 首页 > 知识库问答 >
问题:

赛贝斯{ASE}使用schema.table或表

淳于祺
2023-03-14

全部的

这个标题几乎说明了一切。我在这里查看,但找不到任何有关模式的信息。

有人能帮我照个灯吗?

我知道MS SQL Server使用“schema.name”来引用数据库中的表,但对于Sybase我不确定。

蒂娅!

编辑:

我想我应该更具体一点。

我知道在MS SQL Server中可以修改表所有者,但您仍然可以通过“从sysobjects so、sysusers su、sys.tables t、sys.schemas s中选择su.name,其中so.uid=su.uid和t.object_id=so.id和t.schema_id=s.schema_id和s.name=?和so.name=?;”

现在,使用Sybase everywhere,我查看了检索表所有者的查询,它不引用模式名,只引用表名。这是否意味着Sybase中的表所有者不可更改?或者它是可变的,但是模式也会改变?

有人能帮我照一下吗?

共有2个答案

邢洋
2023-03-14

它的工作原理与MS SQL Server中的相同。您可以使用模式。对象。如果使用对象,则会搜索该对象:

  • 首先在我们的模式中
  • 然后在dbo模式中

您还可以使用数据库。物主对象符号或数据库。。当所有者是dbo或event服务器时,对象表示法。数据库物主连接外部ASE服务器时的对象符号。

酆华皓
2023-03-14

在赛贝斯/SAP ASE中,所有表都有一个所有者;这个所有者实际上与架构是一回事。

您提到的链接指向sysobjects(system)表,它存在于每个数据库中。sysobjects包含数据库中所有对象(例如表、过程、触发器、视图等)的一些高级元数据。

sysobject表中感兴趣的两列

  • 名称:对象的名称(例如,表的名称、进程的名称)
  • uid:对象所有者的数据库用户id

所有系统表在sysobject中都有一个uid=1的条目,该条目引用数据库所有者(即user_name(1)=dbo)。

在大多数环境中,数据库所有者(dbo)通常也拥有数据库中的大多数其他对象(即,大多数sysobjects行的uid=1)。

如果对象的所有者不是dbo,那么sysobjects行的uid=user_id('non_dbo_owner_name');例如,如果bob的数据库用户id(uid)为47,那么bob拥有的任何对象都将具有sysobjects。uid=47。

当您引用一个没有所有者/模式名称的表(例如,select*from tab1)时,ASE将首先查找您拥有的对象(即,您是否拥有一个名为“tab1”的表),如果找不到这样的表,它将查找dbo拥有的表(即,“dbo.tab1”是否存在?)。

当引用附加了所有者/模式名的表时,ASE将只查找该表的存在。

如果您没有名为“tab1”的表,则以下内容是等效的:

  • 从tab1中选择*
  • 从dbo.tab1中选择*

针对更新后的问题:

Sybase/SAP ASE不支持更改对象的所有者。

至于查找表的所有者/架构,您有几个选项:

select u.name as 'owner_name', 
       o.name as 'table_name'
from   sysobjects o,
       sysusers u
where  o.uid  = u.uid
and    o.name = '<name_of_table>'
and    o.type = 'U'

-- or

select user_name(o.uid) as 'owner_name', 
       o.name as 'table_name'
from   sysobjects o
where  o.name = '<name_of_table>'
and    o.type = 'U'
 类似资料:
  • 我在赛贝斯ASE 15.5中使用赛贝斯Central工具创建了几个表。我已经将列定义为主键(int数据类型),不知何故,该列也变成了标识。 现在,从赛贝斯中心,我无法从该列中删除标识,即使该表或任何引用的表中没有数据。 有人能帮忙吗?我不想使用Set IDENTITY_INSERT,我想从本专栏中完全删除标识行为。 谢啦

  • 如何在Sybase ASE 15表格设置中删除列。 我尝试了一些,但没有用: 以及查看Sybase文档,它没有为我的问题提供解决方案。 数据库my_db未启用选择进入数据库选项。无法执行带有数据副本的ALTER TABLE。设置选择进入数据库选项并重新运行。

  • 我四处搜索,找到了一些有用的程序,例如: 但没人能帮我。我需要获得有关CPU、RAM、OS等的信息。有什么工具或程序可以帮助我吗?

  • Support for the Sybase database. The following table summarizes current support levels for database release versions. 数据库接口支持 The following dialect/DBAPI options are available. Please refer to individ

  • 似乎 WITH 仅在 Sybase SQL Anywhere 中受支持:http://dcx.sybase.com/1100/en/dbusage_en11/commontblexpr-s-5414852.html …但不在Sybase ASE中:( 有人可以建议Sybase ASE中是否存在等效的构造吗?还有其他方法可以实现东西而不是使用 WITH,但我们计划重新调整一些动态生成的 SQL 的用

  • 赛贝斯16配置hp-Rom8编码(请勿询问)不连接没有指定CHARSET=上的连接字符串,像这样: jdbc:sybase:Tds:10.0.0。X:5000/db_名称?字符集=iso_1 这是因为java不支持hp-roman8。但当我加入JCharset包时,情况就变了。 在包含它(JCharset)之后,jConnect不使用CHARSET=参数进行连接,但字符串无论如何都会出错。 SyB