Léo*_*her 22 sql-server sql-server-2008
我正在尝试更改表的所有者:
sp_changeobjectowner 'OWNER.TABLENAME', 'dbo'
Run Code Online (Sandbox Code Playgroud)
但在执行时我收到错误消息:
消息15001,级别16,状态1,过程sp_changeobjectowner,行62
对象'OWNER.TABLENAME'不存在或不是此操作的有效对象.
Aar*_*and 46
在SQL Server 2005及更高版本中执行此操作的正确方法是停止将前缀视为"所有者".自SQL Server 2005以来,该sp_changeobjectowner过程已被弃用,您应该使用模式DDL,例如:
ALTER SCHEMA dbo TRANSFER [current_owner].tablename;
Run Code Online (Sandbox Code Playgroud)
检查当前的"所有者"(如果您tablename在多个模式中有多个行,则可能会返回多行):
SELECT s.name
FROM sys.schemas AS s
INNER JOIN sys.tables AS t
ON s.[schema_id] = t.[schema_id]
WHERE t.name = N'tablename';
Run Code Online (Sandbox Code Playgroud)
还要确保正确拼写对象.例如,在区分大小写的排序规则中,TABLENAME并且tablename它们不是同一个对象,并且使用InCorrEcT CaSe拼写它也可能导致此错误.
你的陈述是正确的:
EXEC sp_changeobjectowner '<owner>.<tableName>', '<newOwner>'
Run Code Online (Sandbox Code Playgroud)
如果发生错误,请尝试检查谁是表的当前所有者:
EXEC sp_table_privileges '<tableName>'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50349 次 |
| 最近记录: |