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

本文介绍了SQL Server中两种情况下的数据库访问:一种是登录拥有CONTROLSERVER权限,能直接创建对象;另一种是通过Windows组成员身份访问。当没有数据库用户账户的用户创建对象时,系统会自动为其创建数据库主体和默认模式。示例展示了如何在不指定现有模式的情况下创建对象,并展示了相关查询以验证结果。
摘要由CSDN通过智能技术生成

发生这种情况的一种方法是使具有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;

nacos schema.sql 是 Nacos 的服务注册中心使用的 MySQL 数据库初始化脚本,它包含了创建 Nacos 服务注册中心所需的数据库、表和索引等 SQL 语句。具体内容如下: ``` -- 创建数据库 CREATE DATABASE IF NOT EXISTS `nacos_server` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; -- 切换到 nacos_server 数据库 USE `nacos_server`; -- 创建数据表:service_info CREATE TABLE `service_info` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `service_name` varchar(256) COLLATE utf8_bin NOT NULL DEFAULT '', `group_name` varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '', `namespace_id` varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '', `protect_threshold` int(11) NOT NULL DEFAULT '0', `metadata` varchar(2048) COLLATE utf8_bin NOT NULL DEFAULT '', `selector` varchar(2048) COLLATE utf8_bin NOT NULL DEFAULT '', `cluster_name` varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '', `service_key` varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '', `app_name` varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '', `weight` double DEFAULT NULL, `enable` tinyint(1) NOT NULL DEFAULT '1', `healthy` tinyint(1) NOT NULL DEFAULT '0', `ephemeral` tinyint(1) NOT NULL DEFAULT '0', `ip` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '', `port` int(11) NOT NULL, `cluster_sync_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `use_ip_port4check` tinyint(1) NOT NULL DEFAULT '0', `marked` tinyint(1) NOT NULL DEFAULT '0', `instance_id` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '', `last_update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `uk_service_info` (`namespace_id`,`group_name`,`service_name`,`cluster_name`,`ip`,`port`,`instance_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; -- 创建数据表:config_info_beta CREATE TABLE `config_info_beta` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `data_id` varchar(256) COLLATE utf8_bin NOT NULL DEFAULT '', `group_id` varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '', `content` longtext COLLATE utf8_bin NOT NULL, `md5` varchar(32) COLLATE utf8_bin NOT NULL DEFAULT '', `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `uk_config_info_beta_data_id_group_id` (`data_id`,`group_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; -- 创建数据表:config_info_tag CREATE TABLE `config_info_tag` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `data_id` varchar(256) COLLATE utf8_bin NOT NULL DEFAULT '', `group_id` varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '', `tag_id` varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '', `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `uk_config_info_tag_data_id_group_id_tag_id` (`data_id`,`group_id`,`tag_id`), KEY `idx_config_info_tag_gmt_create` (`gmt_create`), KEY `idx_config_info_tag_data_id` (`data_id`), KEY `idx_config_info_tag_group_id` (`group_id`), KEY `idx_config_info_tag_tag_id` (`tag_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; -- 创建数据表:config_info_history CREATE TABLE `config_info_history` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `data_id` varchar(256) COLLATE utf8_bin NOT NULL DEFAULT '', `group_id` varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '', `content` longtext COLLATE utf8_bin NOT NULL, `md5` varchar(32) COLLATE utf8_bin NOT NULL DEFAULT '', `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `idx_config_info_history_gmt_create` (`gmt_create`), KEY `idx_config_info_history_data_id` (`data_id`), KEY `idx_config_info_history_group_id` (`group_id`), KEY `idx_config_info_history_md5` (`md5`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; -- 创建数据表:service_info_sync CREATE TABLE `service_info_sync` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `service_name` varchar(256) COLLATE utf8_bin NOT NULL DEFAULT '', `group_name` varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '', `namespace_id` varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '', `protect_threshold` int(11) NOT NULL DEFAULT '0', `metadata` varchar(2048) COLLATE utf8_bin NOT NULL DEFAULT '', `selector` varchar(2048) COLLATE utf8_bin NOT NULL DEFAULT '', `cluster_name` varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '', `service_key` varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '', `app_name` varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '', `weight` double DEFAULT NULL, `enable` tinyint(1) NOT NULL DEFAULT '1', `healthy` tinyint(1) NOT NULL DEFAULT '0', `ephemeral` tinyint(1) NOT NULL DEFAULT '0', `ip` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '', `port` int(11) NOT NULL, `cluster_sync_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `use_ip_port4check` tinyint(1) NOT NULL DEFAULT '0', `marked` tinyint(1) NOT NULL DEFAULT '0', `instance_id` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '', `last_update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `uk_service_info_sync` (`namespace_id`,`group_name`,`service_name`,`cluster_name`,`ip`,`port`,`instance_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; -- 创建数据表:config_info_aggr CREATE TABLE `config_info_aggr` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `data_id` varchar(256) COLLATE utf8_bin NOT NULL DEFAULT '', `group_id` varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '', `content` longtext COLLATE utf8_bin NOT NULL, `md5` varchar(32) COLLATE utf8_bin NOT NULL DEFAULT '', `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `uk_config_info_aggr_data_id_group_id` (`data_id`,`group_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; -- 创建数据表:config_info_beta_history CREATE TABLE `config_info_beta_history` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `data_id` varchar(256) COLLATE utf8_bin NOT NULL DEFAULT '', `group_id` varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '', `content` longtext COLLATE utf8_bin NOT NULL, `md5` varchar(32) COLLATE utf8_bin NOT NULL DEFAULT '', `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `idx_config_info_beta_history_gmt_create` (`gmt_create`), KEY `idx_config_info_beta_history_data_id` (`data_id`), KEY `idx_config_info_beta_history_group_id` (`group_id`), KEY `idx_config_info_beta_history_md5` (`md5`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ``` 以上是 nacos schema.sql 的内容,执行这些 SQL 语句可以初始化 Nacos 服务注册中心所需的数据库表结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值