2010-09-22 3 views
0

В настоящее время я занимаюсь техническим обслуживанием приложения, и я столкнулся с большой проблемой относительно квалифицированного имени в tsql. Мне интересно, может ли кто-то очистить меня от замешательства.Квалифицированное присвоение имен

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

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

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

ответ

1

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

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

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

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

+0

Итак, создавайте синонимы? Потому что, если я использую классификатор 3 или 4 части, а затем переименую базу данных, мне придется пройти и исправить все имена. Я просто говорю об этом, потому что, когда я переименовал db, он автоматически исправил инструкции «USE», но не обновил ни одно из 3-х именованных имен. – MisterIsaak

+0

@Jisaak: Нет, не использовали синонимы на SQL Server. Обновление имени базы данных очень просто - SSMS Find (Ctrl-F) имеет функцию поиска и замены для регулярного выражения, например, глобальной замены. –

+0

Хм. Ну с 100 sprocs, которые все еще кажутся болезненными. Спасибо за помощь. – MisterIsaak

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