我正在尝试在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数据库的所有其他对象。
答案 0 :(得分:1)
Sybase ASE不使用SQL Server和Oracle使用的架构概念。对象位于数据库内部,由用户拥有 - 没有其他逻辑分隔。所以你的语法错了。
create table table1
(
emp_id int not null,
name varchar(80) not null
)
此外,Sybase / SAP最佳实践告诉我们,dbo
应创建/拥有所有数据库对象,并授予组/角色/用户访问这些对象的权限。无法删除拥有数据库对象的用户,因此如果触发了User1,则必须识别他拥有的所有对象,并在删除其帐户之前更改这些对象的所有权。
因此,对于您的示例,dbo
用户(通常为sa
)将创建对象,然后为需要访问权限的组/角色/用户创建GRANT权限(INSERT / UPDATE / DELETE / etc)
有关管理用户权限的更多信息,请参阅Sybase ASE System Administrators Guide Vol 1.
的更多信息