Изменение схемы таблицы в sql 2005 - PullRequest
1 голос
/ 02 марта 2010

У меня есть база данных sql 2005, и у меня есть таблица с именем dbo.AgencyProfile Однако я хочу удалить префикс dbo. Как мне это сделать?

Ответы [ 4 ]

1 голос
/ 02 марта 2010

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

Во время компиляции наблюдается снижение производительности, поскольку оно должно решить, в какой схеме находится объект.

SELECT * FROM foobar - это не то же самое SELECT * FROM dbo.foobar и потребует проверки, чтобы увидеть, в какой схеме foobar находится. То есть он будет искать [domain\user].foobar, прежде чем перейти к dbo.foobar.

С «Кэширование и повторное использование плана выполнения» :

...

Алгоритмы для сопоставления новых операторов SQL с существующими, неиспользованными планы выполнения в кеше требуют чтобы все ссылки на объекты были полностью Квалифицированный. Например, первый из эти операторы SELECT не совпадают с существующим планом, а второй соответствует:

SELECT * FROM Contact

SELECT * FROM Person.Contact

А для NT-соединений вы не можете указать схему по умолчанию, поэтому не можете этого избежать

А если вы хотите SCHEMABINDING в представлениях и т. Д., То вы должны определить схему.

и т.д.

Это гораздо больше, чем "беспорядок в коде"

Редактировать: после вашего комментария в другом месте ...

Вы запустили создание таблицы без схемы, поэтому у вас есть объект [domain\user].AgencyProfile. Конечно dbo.AgencyProfile не существует

Вам нужно запустить 'ALTER AUTHORIZATION ON [домен \ пользователь] .AgencyProfile TO dbo' , который заменит sp_changeobjectowner

1 голос
/ 02 марта 2010

Вы не можете удалить префикс / схему, но вы можете изменить ее, воссоздав таблицу:

CREATE TABLE [whatever].[AgencyProfile](
        [AgencyId] [int] NOT NULL DEFAULT
        [AgencyName] [nvarchar](256),
        [Field 2] [nvarchar](256),
        [Field 3] [uniqueidentifier] NOT NULL 
etc....
1 голос
/ 02 марта 2010

Зачем тебе это нужно? SQL сохраняет все объекты в схеме dbo по умолчанию. Вам не нужно использовать схему в ваших операторах SQL - SELECT * FROM AgencyProfile будет работать нормально, потому что SQL будет искать схему dbo для AgencyProfile.

Вы можете помещать объекты в свои собственные схемы, но тогда вам нужно указать их имя.

0 голосов
/ 02 марта 2010

Вы не можете удалить префикс / схему, но, как указывает Энди, вам не нужно использовать ее, если у вас нет других схем в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...