首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将db架构更改为dbo

如何将db架构更改为dbo
EN

Stack Overflow用户
提问于 2009-07-18 03:07:21
回答 8查看 220.8K关注 0票数 122

我将一堆表从旧的sql服务器(2000)导入到2008年的数据库中。所有导入的表都以我的用户名为前缀,例如:jonathan.MovieData。在表properties中,它将jonathan列为db模式。当我编写存储过程时,我现在必须在所有表名前面包含jonathan.,这很令人困惑。

如何将我所有的表都改为dbo而不是jonathan?

当前结果:jonathan.MovieData

期望的结果:dbo.MovieData

EN

回答 8

Stack Overflow用户

发布于 2009-07-18 03:31:07

您可以运行以下命令,这将为您的所有数据库生成一组ALTER sCHEMA语句:

代码语言:javascript
复制
SELECT 'ALTER SCHEMA dbo TRANSFER ' + TABLE_SCHEMA + '.' + TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'jonathan'

然后,您必须在查询分析器中复制并运行这些语句。

这里有一个较旧的脚本,我想它也可以通过更改对象所有者来实现这一点。不过,我还没有在2008年尝试过。

代码语言:javascript
复制
DECLARE @old sysname, @new sysname, @sql varchar(1000)

SELECT
  @old = 'jonathan'
  , @new = 'dbo'
  , @sql = '
  IF EXISTS (SELECT NULL FROM INFORMATION_SCHEMA.TABLES
  WHERE
      QUOTENAME(TABLE_SCHEMA)+''.''+QUOTENAME(TABLE_NAME) = ''?''
      AND TABLE_SCHEMA = ''' + @old + '''
  )
  EXECUTE sp_changeobjectowner ''?'', ''' + @new + ''''

EXECUTE sp_MSforeachtable @sql

this site那里拿到的。

如果需要的话,它还讨论了如何对存储过程执行相同的操作。

票数 42
EN

Stack Overflow用户

发布于 2009-07-18 03:30:26

代码语言:javascript
复制
USE MyDB;
GO
ALTER SCHEMA dbo TRANSFER jonathan.MovieData;
GO

参考:ALTER SCHEMA

票数 21
EN

Stack Overflow用户

发布于 2013-12-03 21:22:15

您可以批量更改多个数据库对象的模式,如本文所述:

How to change schema of all tables, views and stored procedures in MSSQL

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1146599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档