我们如何在sybase ase 15.5中识别出模式名称?

时间:2016-01-11 11:22:10

标签: database-schema sybase-ase

我正在尝试在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数据库的所有其他对象。

1 个答案:

答案 0 :(得分: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)将创建对象,然后为需要访问权限的组/角色/用户创建GRANT权限(INSERT / UPDATE / DELETE / etc)

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

有关Roles/Groups from the System Admin Guide.

的更多信息