任何时候你都可以开始做自己想做的事

搜索|
mssql 迁移还原到新服务器 旧用户拥有架构
发布时间:2026-02-04 05:52:55

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');

mssql 迁移还原到新服务器 旧用户拥有架构(图1)

mssql 迁移还原到新服务器 旧用户拥有架构(图2)


把查询的结果逐条复制到新窗口执行
这就会把用户拥有架构的表,比如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


mssql 迁移还原到新服务器 旧用户拥有架构(图3)

上一篇:1
下一篇:没有了