我设法使用空表架构在数据库中创建了一个表。 我无法查询该表,因为它没有所有者,并且由于同样的原因,更改表不起作用。
我会使用:
更改表格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
答案 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中引入的。尽管描述“不起作用”的含义对你有用。
INFORMATION_SCHEMA
是一种非常不可靠的观点。另请参阅以下内容,它对SQL Server 2000没有多大帮助,但应该有助于您继续:
另外作为旁注,您似乎对表和数据库感到困惑。 TABLE_CATALOG
是数据库,而不是表格。
答案 1 :(得分:1)
您是否在documentation?
中注明了此评论请勿使用INFORMATION_SCHEMA视图来确定架构 宾语。找到对象模式的唯一可靠方法是 查询sys.objects目录视图或使用OBJECT_SCHEMA_NAME 功能