Предположим, у меня есть база данных MyDB, содержащая таблицу MyTable. Я могу ссылаться на это какКак следует использовать имена таблиц в SQL Server 2012?
MyDb.dbo.MyTable
Однако, если я делаю это в хранимой процедуре, а затем развернуть базу данных с другим именем, хранимая процедура больше не будет работать.
Если я квалифицировать как
dbo.MyTable
, то он будет работать, и я могу назвать базы данных, что я хочу. Но если я больше не буду знать, какие мои базы данных будут вызываться при развертывании, я не могу ссылаться на таблицу в другой базе данных. то есть у меня нет никакого способа указать, что таблица я на самом деле хочу в другой базе данных (на том же сервере), т.е.
MyOtherDb.dbo.MyTable
Это: http://www.sql-server-performance.com/2001/sql-best-practices/ говорит
префиксов имен таблицу с именем владельца, так как это улучшает читаемость и устраняет любую ненужную путаницу. Microsoft SQL Server Books Online даже заявляет, что имена квалификационных таблиц с именами владельцев помогают в повторном использовании плана выполнения, что повышает производительность.
Я новичок в SQL Server и не совсем уверен, что такое владелец. Кроме того, многие другие ресурсы диктуют, что нужно использовать «полностью квалифицированное имя», не говоря уже о том, что они подразумевают под «полностью квалифицированным именем».
Извините, если это глупый вопрос, но что является лучшей практикой здесь? Я бы предпочел узнать об этом сейчас, чем проработать для себя три месяца подряд и много рефакторинга. Благодаря!
Придерживайтесь формата 'schema.TableName'. Как только вы начнете ссылаться на другие базы данных из своего db, вы плотно соедините их вместе, не делайте этого! – DavidG
Хорошая практика, чтобы квалифицировать ваши имена. Это сделает ваш SQL более удобочитаемым, и вы избежите любых конфликтов имен или вытаскиваете из неправильной базы данных (похоже, этого никогда не произойдет, но это может быть). Кроме того, среда разработки и производства IMO должна быть как можно более точно отражена - это помогает поддерживать стабильную и поддерживаемую среду. – bwhet