设置mysql的schema_sql-server – 如何将用户DEFAULT_SCHEMA设置为“...

发生这种情况的一种方法是使具有CONTROL SERVER服务器级权限的登录(因此不需要实际的USER以访问数据库),而不是sysadmin固定服务器角色(因为这是隐含的默认模式) (dbo)创建一个对象而不显式指定要放入的模式.

Implicit Schema and User Creation

In some cases a user can use a database without having a database user account (a database principal in the database). This can happen in the following situations:

A login has CONTROL SERVER privileges.

A Windows user does not have an individual database user account (a database principal in the database), but accesses a database as a member of a Windows group which has a database user account (a database principal for the Windows group).

When a user without a database user account creates an object without specifying an existing schema, a database principal and default schema will be automatically created in the database for that user. The created database principal and schema will have the same name as the name that user used when connecting to SQL Server (the SQL Server authentication login name or the Windows user name).

因此,我说的是上面提到的第一个案例,@ Max的回答是关于第二个案例.

以下是第一种情况的示例(请注意,以下示例使用tempdb,因为每个实例都有,但我确实在非tempdb数据库上进行了测试以确保).要查看第二种情况的示例,请参阅@ Max的answer(此处无需复制).

USE [master];

CREATE LOGIN [DefaultSchemaTest] WITH PASSWORD = 'DefaultSchemaTest';

GRANT CONTROL SERVER TO [DefaultSchemaTest];

GO

EXECUTE AS LOGIN = 'DefaultSchemaTest';

USE [tempdb];

SELECT * FROM sys.database_principals WHERE [type] <> 'R';

SELECT * FROM sys.schemas WHERE [name] NOT LIKE N'db[_]%';

CREATE TABLE MySchemaTest (Col1 INT);

SELECT * FROM sys.database_principals WHERE [type] <> 'R';

SELECT * FROM sys.schemas WHERE [name] NOT LIKE N'db[_]%';

USE [master];

REVERT;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值