📌  相关文章
📜  如何在 SQL 中将 DB Schema 更改为 DBO?(1)

📅  最后修改于: 2023-12-03 14:52:34.839000             🧑  作者: Mango

在 SQL 中将 DB Schema 更改为 DBO

在 SQL Server 中,dbo 是默认的数据库模式,也就是默认的数据库拥有者。如果在创建数据库对象时没有显示地指定模式,那么这些对象就会被存储在 dbo 模式中。

下面来介绍如何将数据库中的对象从其他模式更改为 dbo 模式。

分步骤
  1. 查询数据库中的对象所在的模式,可以使用以下命令:

    SELECT schema_name(schema_id) AS schema_name, name AS object_name, type_desc
    FROM sys.objects
    WHERE schema_id != schema_id('dbo')
    ORDER BY schema_name, object_name;
    

    输出结果应该类似于下面的样子:

    | schema_name | object_name | type_desc | | ----------- | ----------- | --------- | | sales | orders | USER_TABLE | | sales | products | USER_TABLE | | support | tickets | USER_TABLE |

    可以看到,在当前数据库中,存在三个对象(orders、products 和 tickets)不在 dbo 模式中。

  2. 将对象转移到 dbo 模式。可以使用 ALTER SCHEMA 命令完成此操作。请注意,需要带上对象所在的当前模式名称。

    ALTER SCHEMA dbo TRANSFER sales.products;
    ALTER SCHEMA dbo TRANSFER sales.orders;
    ALTER SCHEMA dbo TRANSFER support.tickets;
    

    每条语句都会将一个对象转移到 dbo 模式中。

  3. 再次运行第 1 步中的查询语句,可以看到所有对象现在都在 dbo 模式中了。

    | schema_name | object_name | type_desc | | ----------- | ----------- | --------- | | dbo | orders | USER_TABLE | | dbo | products | USER_TABLE | | dbo | tickets | USER_TABLE |

这就是将数据库中对象从其他模式更改为 dbo 模式的方法。使用 ALTER SCHEMA 命令可以将一个或多个对象全部转移。请注意,该操作不会影响对象本身的定义,只是将其移动到另一个模式中。

总结

从其他模式更改对象到 dbo 模式很容易。只需按照上述步骤执行即可。最好在执行此操作之前对数据库进行备份,以防止出现意外问题。

print('```sql')
print('SELECT schema_name(schema_id) AS schema_name, name AS object_name, type_desc')
print('FROM sys.objects')
print('WHERE schema_id != schema_id(\'dbo\')')
print('ORDER BY schema_name, object_name;')
print('```')
print('```sql')
print('ALTER SCHEMA dbo TRANSFER sales.products;')
print('ALTER SCHEMA dbo TRANSFER sales.orders;')
print('ALTER SCHEMA dbo TRANSFER support.tickets;')
print('```')