【问题标题】:Set dbo as default schema for all new tables将 dbo 设置为所有新表的默认架构
【发布时间】:2016-02-04 00:22:19
【问题描述】:

我在四个不同的生产服务器上安装了一个数据库。每个服务器都有自己不同的用户。当我在这些服务器上使用 create 语句创建一个新表时,每个服务器都会设置/预先添加他们的用户名,例如

Create Table tab_1 ... 将创建为
abc.tab_1 在 server_1 上使用 abc 作为登录名
def.tab_1 在 server_2 上使用 def 作为登录名
ghi.tab_1 在 server_3 上使用 ghi作为登录名
jkl.tab_1 在 server_4 上使用 jkl 作为登录名

我想使用dbo 作为默认架构,并且必须在每个服务器上为每个新表使用以下语句

ALTER SCHEMA dbo TRANSFER login.table_name;

有什么方法可以修改Create Table 语句或其他设置,通过它在所有服务器上创建每个表为dbo.table_name

我正在使用共享主机,并且 SSMS 中有很多限制,因此基于查询的解决方案是合适的。

【问题讨论】:

  • @عجمان 此链接描述了在创建表后更改架构,我已经在上面提到过。我正在寻找为所有新表设置默认架构,以便以后不必更改它。 janschweizer 给出的答案很有希望,但我想知道即使没有在 Create 语句中指定也可以设置它吗?

标签: sql-server sql-server-2008-r2 schema create-table owner


【解决方案1】:

您可以控制创建表查询?在这种情况下,只需在 create 中指定 dbo:

创建表 dbo.dummy ();

要更改用户的默认架构,请参阅此答案:https://stackoverflow.com/a/8208124/3480246

【讨论】:

  • 这是一个不错的选择。尽管如此,它可以永久设置还是默认设置,以便所有新表都在 dbo 模式下自动创建而无需明确提及。
  • 查看我的编辑 - 您可以为用户设置默认架构。
猜你喜欢
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
  • 2020-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多