当前table_schema为null时,如何更改table_schema?

时间:2012-05-14 17:32:29

标签: sql-server sql-server-2000

我设法使用空表架构在数据库中创建了一个表。 我无法查询该表,因为它没有所有者,并且由于同样的原因,更改表不起作用。

我会使用:

更改表格
ALTER SCHEMA null TRANSFER dbo.SubscriptionAnswerMR

但这不起作用。

information_schema.tables看起来像这样:

TABLE_CATALOG   TABLE_SCHEMA    TABLE_NAME              TABLE_TYPE
q_Profiles              NULL    SubscriptionAnswerMR    BASE TABLE

所以我的问题是:如何更改q_Profiles'table_schema?

SQL Server 2000(编辑) Microsoft SQL Server Management Studio 2008R2

2 个答案:

答案 0 :(得分:2)

您应该能够通过查看以下查询的结果来验证您的表格是否正常:

SELECT u.name
  FROM q_Profiles..sysobjects AS o
  INNER JOIN q_Profiles..sysusers AS u
  ON o.uid = u.uid
  WHERE o.name = 'SubscriptionAnswerMR';

这应该是dbo,除非有人使用其他所有者明确创建或使用sp_changeobjectowner。如果您发现sysobjects的答案错误,可以使用哪个:

EXEC sp_changeobjectowner 'SubscriptionAnswerMR', 'dbo';

ALTER SCHEMA在这里无效,因为它是在SQL Server 2005中引入的。尽管描述“不起作用”的含义对你有用。

@Pondlife指出,

INFORMATION_SCHEMA是一种非常不可靠的观点。另请参阅以下内容,它对SQL Server 2000没有多大帮助,但应该有助于您继续:

另外作为旁注,您似乎对表和数据库感到困惑。 TABLE_CATALOG是数据库,而不是表格。

答案 1 :(得分:1)

您是否在documentation

中注明了此评论
  

请勿使用INFORMATION_SCHEMA视图来确定架构   宾语。找到对象模式的唯一可靠方法是   查询sys.objects目录视图或使用OBJECT_SCHEMA_NAME   功能