【问题标题】:how can we identified schema name in sybase ase 15.5?我们如何识别 sybase ase 15.5 中的模式名称?
【发布时间】:2016-01-11 11:22:10
【问题描述】:

我正在尝试在 sybase 数据库中获取模式名称。 首先,我从 sa 用户创建登录名(user1),然后通过提供登录名(user1)和密码与 user1 连接,现在我尝试通过提供以下命令来创建表:-

create table user1.table1(
emp_id                          int                              not null,
name                            varchar(80)                      not null 

)

但它显示访问被拒绝错误,而不是我从 sa 用户登录并将 sa_role 授予 user1,然后我再次运行上面提到的创建表的查询,并且表已成功创建。

在这里,我并没有完全知道 user1 是否是架构名称,或者我如何识别架构名称? 我还想知道除了 sa_role 之外还有什么角色可以用于授予创建插入删除表、视图和 sybase 数据库的所有其他对象。

【问题讨论】:

  • 嗨,不要忘记投票和/或接受有用的答案。 :?)

标签: database-schema sap-ase


【解决方案1】:

Sybase ASE 不使用 SQL Server 和 Oracle 使用的模式概念。对象位于数据库内,并由用户拥有 - 没有其他逻辑分隔。所以你的语法是错误的。

create table table1 
 (
    emp_id      int                              not null,
    name        varchar(80)                      not null
 )

Sybase ASE Create Table

此外,Sybase/SAP 最佳实践告诉我们所有数据库对象都应由dbo 创建/拥有,并授予组/角色/用户访问这些对象的权限。拥有数据库对象的用户不能被删除,因此如果 User1 被解雇,您必须识别他拥有的所有对象,并更改这些对象的所有权,然后才能删除他的帐户。

因此,对于您的示例,dbo 用户(通常为 sa)将创建对象,然后将权限(插入/更新/删除/等)授予需要访问权限的组/角色/用户。

有关管理用户权限的更多信息,请参阅Sybase ASE System Administrators Guide Vol 1.

还有更多关于Roles/Groups from the System Admin Guide.的信息

【讨论】:

  • 谢谢。但是通过上面提到的查询,我可以使用 user1 所有者创建表。是否有可能是因为我已将 sa_role 授予 user1 或未授予。先生,您能用示例简要说明一下吗?
  • 很抱歉,我很难理解您的问题。我假设您的查询有效,因为 user1 具有 SA 角色。
  • 我同意你的立场。但是 Sybase ASE(至少是 15.7)令人困惑地有一个 CREATE SCHEMA 命令“为数据库用户创建一个新的表、视图和权限集合。”。也许这与来自 PostgreSQL / Oracle 背景的人在谈到“模式”时所指的有所不同?你能详细说明一下吗?
  • @MarcusJuniusBrutus 我不再与 ASE 合作,因此我对这些变化没有任何额外的了解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-10
  • 1970-01-01
  • 2016-08-13
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多