2013-06-07 2 views
3

Можно ли создать таблицу в sys-схеме SQL Server 2008? Я знаю, что можно пометить таблицу как систему, но не изменить схему. Любые хаки для этого?Как создать таблицу в схеме SYS в SQL Server?

+11

Почему бы вам не сделать это? – Bridge

+5

Это действительно не очень хорошая идея. Если вы скажете нам, ПОЧЕМУ вы хотите это сделать, мы сможем перенаправить вас. – JNK

+3

Я даже не знаю. Это никогда не приходило мне в голову, потому что это звучит как худшая идея. – Zane

ответ

1

Вы попросили способ пометить объект как системный объект. Существует недокументированная процедура, называемая sp_ms_marksystemobject, которая делает именно это. Для этого есть некоторые законные цели, но по большей части то, что вы пытаетесь сделать, лучше выполнить, не приводя к этому. Короче говоря, взвешивайте свои варианты, прежде чем использовать это. Вас предупредили.

+1

Подумайте, вы неправильно поняли вопрос. Они говорят: «Я знаю **, можно отметить таблицу как систему» ​​ –

+0

Вы правы! Это еще менее оправдано. –

4

Вы не можете добавить свои собственные объекты в схему sys.

Пользовательские объекты не могут быть созданы в схеме sys.
Gail Erickson [MS]
SQL Documentation сервера Team
Это сообщение не предоставляется "КАК ЕСТЬ", без каких-либо гарантий, и предоставляет никаких прав

Если это недостаточно убедительно, считают, что системные объекты хранятся в базе данных ресурсов, которая доступна только для чтения:

База данных ресурсов - это база данных только для чтения, которая содержит все системные объекты, которые включены в SQL Server. Системные объекты SQL Server, такие как sys.objects, физически сохраняются в базе данных ресурсов, но они логически отображаются в схеме sys каждой базы данных. База данных ресурсов не содержит пользовательских данных или метаданных пользователя.

Если существуют какие-либо недокументированные методы, чтобы сделать это, так как другие утверждали, что это, вероятно, не в ваших интересах (или поставщик программного обеспечения и команды) в Сделай так. Я бы предложил отступить и атаковать вашу проблему под другим углом. Возможно, какая-то макетная настройка?

+3

Собственно, есть способ сделать это, но поскольку это аннулирует контракт на поддержку MS и гарантию на продукт для всех, кто это сделал, я не буду публиковать его публично, и я, конечно, не буду давать указания OP в как снимать свою собственную ногу. (Я знаю, что ты этого не сделаешь, Тим, но все остальные, кто читает это, - это еще одна история). – RBarryYoung

+0

@ RBarryYoung Отлично заявлено, спасибо. –

3

Это работает для меня:

Я использую SQL Server 2012. Не уверен, что, если он работает в более старых версиях.

sp_addextendedproperty N'microsoft_database_tools_support', N'migration log', N'schema', N'dbo', N'table', N'__MigrationHistory' EXEC

Любые предложения?

+0

Только то, что мне было нужно. Работает с 2005 годом – Karsten

Смежные вопросы