SELECT
'ALTER SCHEMA dbo TRANSFER [' + s.name + '].[' + o.name + '];' AS TransferStatement
FROM sys.objects o
INNER JOIN sys.schemas s ON o.schema_id = s.schema_id
WHERE s.name = 'a0220173238'
AND o.type IN ('U', 'V', 'P');


把查询的结果逐条复制到新窗口执行
这就会把用户拥有架构的表,比如a0220173238.abc 变成 dbo.abc
然后在ssms可视化界面,在数据库的安全性中,对应找到架构,把这个用户名的在架构中删除掉,然后再到用户那删除该用户
此处也可以使用命令:
DROP SCHEMA a0220173238;(删除架构)DROP USER a0220173238;(删除用户)
然后重新查询数据库的架构所有者
SELECT
name AS SchemaName,
principal_id AS OwnerPrincipalId,
-- (可选) 获取架构所有者的名称
(SELECT name FROM sys.database_principals WHERE principal_id = s.principal_id) AS OwnerName
FROM sys.schemas s
ORDER BY name;
GO
然后设置新的数据库用户为架构所有者
第一步:
CREATE SCHEMA ms924245354311;(创建新的架构名-对应新的数据库用户)
第二步:
ALTER USER ms924245354311 WITH DEFAULT_SCHEMA = ms924245354311;(-- 设置该用户的默认架构为新创建的架构)
第三步:
-- 将新创建的架构的所有权授予该用户
ALTER AUTHORIZATION ON SCHEMA::ms924245354311 TO ms924245354311;
GO
第四步:
SELECT
name AS SchemaName,
principal_id AS OwnerPrincipalId,
(SELECT name FROM sys.database_principals WHERE principal_id = s.principal_id) AS OwnerName
FROM sys.schemas s
ORDER BY name;
GO
查询是否创建成功
应该会看到一个新的条目:
SchemaName: ms924245354311
OwnerName: ms924245354311
