SQL Server更改数据库内部的dbo

时间:2019-06-28 10:31:54

标签: sql sql-server

我有一个问题,在我的SQL Server数据库中,我有master,msdb,tempdb,bets数据库。当我运行我的应用程序时,应用程序使用bets db,而在bets db中,默认对象是dbo。

问题是,如何将默认的dbo(内部投注)更改为新的价值投注?

现在的结构

  • 投注
    • db_accessadmin
    • db_datawriter
    • dbo(默认)
    • 下注

需要这样的东西

  • 投注
    • db_accessadmin
    • db_datawriter
    • dbo
    • 下注(默认)

更新:我忘了说,我在docker容器内使用它,而主机是Redhat

1 个答案:

答案 0 :(得分:1)

您的意思是更改SQL Server的默认架构吗?您可以尝试Alter Schema

如何建立用户的默认架构?

您可以在SSMS GUI和TSQL中设置默认架构。

USE [dbname]
GO
ALTER USER [you] WITH DEFAULT_SCHEMA=guest
GO
EXECUTE AS LOGIN = 'YOU'
GO
create table leks(c1 int)
-- Now your table is guest.leks

未指定三部分名称时,将始终使用默认架构命名。

我可以看到如何将模式的所有权更改为某些用户,但是您不能使同一用户成为多个模式的所有者吗?

您肯定可以在数据库中拥有一个用户或一个角色来拥有所有模式,但是某些东西应该适合您的环境(安全性)。

USE dbname
GO
ALTER AUTHORIZATION ON SCHEMA::[db_backupoperator] TO you
GO
USE dbname
GO
ALTER AUTHORIZATION ON SCHEMA::[db_accessadmin] TO you
GO

-- I have changed for system schemas , you can definitely do this for all user schemas as well

默认是哪个?

拥有架构的用户与用户的默认架构不同。一个用户可以拥有多个架构,但是一个用户只能拥有一个默认架构