0

どういうわけか、null テーブル スキーマを使用してデータベースにテーブルを作成することができました。テーブルには所有者がいないためクエリを実行できず、同じ理由でテーブルを変更しても機能しません。

次を使用してテーブルを変更します。

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

4

2 に答える 2

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@Pondlifeが指摘するように、ひどく信頼できないビューのセットです。以下も参照してください。SQL Server 2000 ではあまり役に立ちませんが、今後は役立つはずです。

また、テーブルとデータベースについて混乱しているようです。TABLE_CATALOGテーブルではなくデータベースです。

于 2012-05-14T19:21:26.000 に答える
1

ドキュメントのこのコメントに気付きましたか?

オブジェクトのスキーマを決定するために INFORMATION_SCHEMA ビューを使用しないでください。オブジェクトのスキーマを確実に見つける唯一の方法は、sys.objects カタログ ビューを照会するか、OBJECT_SCHEMA_NAME 関数を使用することです。

于 2012-05-14T17:46:47.703 に答える