如何将db模式更改为dbo?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

我从旧的sql server(2000)导入了一堆表到我的2008数据库。所有导入的表格都以我的用户名作为前缀,例如:例如:jonathan.MovieData。在表格属性中,它将jonathan列为数据库模式。当我编写存储过程时,我现在必须包含jonathan。

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

当前结果: jonathan.MovieData

预期结果: dbo.MovieData

提问于
用户回答回答于
ALTER SCHEMA dbo TRANSFER jonathan.MovieData;

参阅ALTER SCHEMA

通用语法:

ALTER SCHEMA TargetSchema TRANSFER SourceSchema.TableName; 
用户回答回答于

可以运行以下命令,它将为你的所有命令生成一组ALTER sCHEMA语句:

SELECT 'ALTER SCHEMA dbo TRANSFER ' + TABLE_SCHEMA + '.' + TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'jonathan'

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

这是一个较老的脚本,可以帮助你,

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

扫码关注云+社区