【问题标题】:Create schema and add tables to it using queries创建模式并使用查询向其中添加表
【发布时间】:2014-05-22 12:56:01
【问题描述】:

我在我的数据库中创建了一个用户,现在我想为该用户提供一个架构。我的问题是如何构建一个将 30 个表添加到该架构的查询?

我知道如何创建一个架构并向该架构上的用户授予选择权限,但我不知道如何为该架构提供我想要的表。

仅供参考:我使用 sql server 2010,我想构建一个执行此操作的查询,而不是通过 SQL Server Management Studio 中的 UI

【问题讨论】:

    标签: sql sql-server schema grant


    【解决方案1】:

    使用 ALTER SCHEMA 语句将对象从一个模式转移到另一个模式:

    ALTER SCHEMA new_schema TRANSFER old_schema.table
    

    例如,要构造查询以将所有表从 Sales 模式移动到 new_schema (AdventureWorks2012),请使用:

    select 'ALTER SCHEMA new_schema TRANSFER Sales.' + o.name + ';'
    from sys.objects o
    inner join sys.schemas s on o.schema_id = s.schema_id
    where s.name = 'Sales'
    and o.type = 'U'
    

    【讨论】:

    • 但是我的表不在任何架构中,我在创建时无法将表添加到架构中?
    • 如果数据库对象(表、视图、过程..)不在架构中,您将无法创建它,至少在 dbo 架构中。
    • 如果要创建特定模式的表,请使用CREATE TABLE new_schema.Table
    • 谢谢,我不知道。因此,如果我所有的表都属于 dbo 模式,我将使用 ALTER SCHEMA 移动它们
    • 准确地说,所有表都属于创建者的默认模式,除非另有说明。最有可能是 dbo 架构。
    猜你喜欢
    • 1970-01-01
    • 2020-01-23
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    相关资源
    最近更新 更多