Квалифицированное именование - PullRequest
0 голосов
/ 23 сентября 2010

В настоящее время я занимаюсь некоторым обслуживанием приложения и столкнулся с большой проблемой, связанной с квалифицированным именем в tsql. Интересно, может ли кто-нибудь очистить меня от путаницы?

Насколько я понимаю, вы хотите использовать USE [DatabaseName], чтобы объявить, какую базу данных вы используете. Я замечаю, что если вы переименуете базу данных, она автоматически обновит эти ссылки в вашем коде.

Однако разработчик, который первоначально написал этот код, использовал USE [DatabaseName]. Затем в последующих высказываниях он написал: SELECT * FROM [DatabaseName].[dbo].[Table]. Ну, это очевидно сломается, если я изменю имя базы данных. Из того, что я прочитал, вы хотите присвоить имена только владельцу, например: [dbo].[TableName], чтобы он знал, где искать, что повышает производительность.

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

1 Ответ

1 голос
/ 23 сентября 2010

Из того, что я прочитал, вы хотите присвоить имена только владельцу, например: [dbo]. [TableName], чтобы он знал, где искать, что повышает производительность.

Не то чтобы я об этом знал, скорее, похоже, что кто-то ленив.
Я всегда использую формат трех имен (если только нет доступа к связанному экземпляру сервера, тогда его четыре).

Преимущество заключается вправильная таблица из правильной базы данных и схемы будет использоваться без учета ошибочного оператора USE [appropriate database].Пока объект существует и разрешения действительны в зависимости от необходимости, вы можете воссоздать хранимую процедуру, функцию, представление и т. Д. В других базах данных без необходимости каждый раз обращаться к оператору USE [appropriate database].

Но я работаю с данными, распределенными по многочисленным базам данных в одном экземпляре.Я бы не стал разрабатывать его таким образом, но не изменилось бы, если бы я использовал формат имени, состоящий из трех (или четырех) частей.

...