Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 изменение имени поля во всей таблице  [new]
sergei64_89
Member

Откуда:
Сообщений: 296
Необходимо изменить имя поля таблицы,чтобы изменения произошли во всей бд(если есть ссылки на это поле в хранимке,чтобы и там тоже поменялось). имеются ли встроенные инструменты для решения этой задачи?
22 апр 14, 22:45    [15919509]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
sergei64_89
Необходимо изменить имя поля таблицы,чтобы изменения произошли во всей бд(если есть ссылки на это поле в хранимке,чтобы и там тоже поменялось). имеются ли встроенные инструменты для решения этой задачи?

Поди еще и в динамических кусках кода должна эта чудо утилита уметь менять название поля?))
Если серьезно то есть три интрумента, руки и голова. Насколько они встроены решать Вам.
22 апр 14, 23:35    [15919685]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
SQL Refactor Studio
23 апр 14, 01:11    [15919883]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
SQL Server Data Tools

Вполне себе встроенный, т.к. идет в составе сиквела. Правда, проект БД надо создавать.
23 апр 14, 06:04    [15920052]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8828
А смысл?
23 апр 14, 11:20    [15921009]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
Владислав Колосов
А смысл?
Рефакторинг - не слыхали про такое?
23 апр 14, 11:25    [15921056]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Почему бы не выявить все объекты, содержащие в тексте фрагмент, совпадающий с именем таблицы,
рассмотреть каждый такой объект и заменить этот фрагмент на новое имя, если найдено правильное
место для замены (а, например, не в комментарии и не в текстовой строке, не являющейся DSQL)?
23 апр 14, 11:30    [15921106]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8828
Рефакторинг названий полей - это когда уже ну совсем нечем заняться, а зарплату начисляют.
SQL search отлично поможет найти фразу во всех объектах, если так хочется.
23 апр 14, 11:43    [15921207]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Ennor Tiegael
SQL Server Data Tools
Опана, а можете показать как там оно фунчиклирует?

Ennor Tiegael
SQL search отлично поможет найти фразу во всех объектах, если так хочется
Извините, для школьных поделок оно пойдёт, для проектов - зачем парится? Сразу получаешь готовый скрипт на изменение всех нужных объектов.
Стимуляция продуктов разработки вещь необходимая сообществу.

Согласен что переименование конечно - нефиг делать. Но есть такое как критический уровень технического долга программного кода.
Зачем оставлять ошибку в названии, если проект ещё не запустился - лень искать, потому что нет под рукой такого инструмента - всего лишь.

Тем более не только переименование. И с SQL search не сравнится (если средство хорошо работает). Поюзайте и почувствуете большую разницу.
Только это зависит от стиля работы. Можно внедрить и забить на проект болт, а бывает когда система развивается и/или проходит циклы разработки.

Больше продуктов хороших и разных.
23 апр 14, 21:48    [15925649]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
Mnior,

В 2010 и более ранних версиях ( ну т.е. которые еще DBPro / Database Edition), насколько помню, надо было дополнительно ставить Power Tools. В 2012 прямо в коде ставите курсор на нужный объект (таблица, поле, параметр хранимки и т.д.), ПКМ, первый же пункт меню - Refactor / Rename. Хоткей в обоих случаях один и тот же, вроде - Ctrl+R, R.

Вообще, версия SSDT под 2012 оболочку очень удачная получилась, имхо.

И это, вторая цитата - не моя :)
24 апр 14, 04:07    [15926467]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Ennor Tiegael, да!
Взял сделал проект DB в VS2012, ипать какая разница с тем что было (давно).
Find All References работает хорошо (кроме скриптов).

Object Explorer по не созданным ещё в базе объектам, притом компарер схем работает.
С Source Control не тестил. Скорее всего можно локать объекты, чтоб другие в команде видели/не могли забить сверху.
Юнит тесты забавные, надо разбираться.

Остальное обычный SQL Server Data Tools (Code Analysis и т.п.).

ЖЖ
24 апр 14, 11:25    [15927590]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8828
У меня в VS2012 с DataTools нет Refactor / Rename. может быть что-то надо дополнительно устанавливать?
24 апр 14, 13:07    [15928579]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Владислав Колосов,

Версии SQL Server Data Tools и Build Utilities - 11.1.40403.0
Visual Studio Premium 2012 Version 11.0.61030.00 Update 4

На VS2013 аналогично, всё работает итак.

К сообщению приложен файл. Размер - 20Kb
24 апр 14, 16:39    [15930590]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8828
Нашел, это работает только в рамках проекта, для объектов базы данных - нет. Я-то по наивности полагал, что ... )
24 апр 14, 18:36    [15931457]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Владислав Колосов,

В этом основная идея. Проект это виртуальная база (только без данных), и работать с ней удобно и быстро.
Притом контроль версий сделается своё дело и опять же оперативно.

То что есть Pre и Post deploy скрипты - это сразу дисциплинирует иметь готовый разворот базы с нуля и Unit тесты.
Хотя пока у меня нет чёткого представления об удобности и законченности данного процесса.
+ Скрипты для инкрементального накатывания.

Главное очень легко можно начать, импартнул базу в проект и пошло поехало ...

Единственно что системные объекты и глобальны серверные не "видны", и сразу вываливаются ошибки.
Оно конечно хорошо что мол "не кошерно", но плять, жёстко совсем. Если обходить, то всё равно где-то вылезает боком (к примеру компарер между проектом и тестовой базой).
24 апр 14, 23:53    [15932680]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
ViPRos
Member

Откуда:
Сообщений: 9946
Mnior,

ну она же и генерирет скрипт для инкремента находу сравниявая модель с реальной БД
25 апр 14, 00:10    [15932741]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
ViPRos
Member

Откуда:
Сообщений: 9946
и автоматом применяет (если настрйоки такие)
25 апр 14, 00:12    [15932748]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
ViPRos,

Приведите где эти настройки.
Хотя не думаю что это безопасно для работы в команде, хз, но тут думаю будут те кому это будет удобнее.
Имхо, лучше пусть накатывает тогда ответственный, и выше писал - данные и тесты пусть тоже будут в проекте.

Mnior
Find All References работает хорошо (кроме скриптов).
Везде где стоит свойство файла Build.
26 апр 14, 12:27    [15939752]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Mnior
ViPRos
на же и генерирет скрипт для инкремента находу
и автоматом применяет (если настрйоки такие)
Приведите где эти настройки.
Что-то не могу найти.
Может вы путаете.
30 апр 14, 00:41    [15955597]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
ViPRos
Member

Откуда:
Сообщений: 9946
Mnior,

ну не знаю, может я о другом, может не понял, но -
проекты БД я веду в VS
она генерирует схему бд, сравнивает схемы меж собой, выдает скрипт для апгрейда (частичного, полного - т.е. можно апгрейдить токо ту часть БД, которая необходима для функционирования приложения), деалет апгрейд втихую или с базаром и т.д.
ну я эту фиговину сунул в свой инсталлятор
при инсталляции она проверяет и апгрейдит указанную БД до моей (схема которой в инсталляторе) и при этом может оставить остальную часть БД в покое
ну и большая куча там всяких нужных параметров
30 апр 14, 01:01    [15955618]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
ViPRos,

Так и есть. Противоречит сказанному. Deploy и Publish это другое, и так понятно и само собой разумеющееся. Притом несколько вариантов есть.
Data-tier Aplication я пока не смотрел.

Только всё это применение и авто-генерация хорошо, но для сурьёзного и сложного продакшина, имхо, никак не пойдёт. У каждого свои кастомные вещи, и генератор пока тупой как пробка - вместо простого ALTER TABLE делать CREATE + INSERT + DROP - это смешно.
Хотя я не ковырял сильно, для ReName он логи пишет, для всего остального не видел пока.
Но главное автоматом подгонять данные (коих нет в проекте) под новую структуру, что бывает порой на активно развивающихся системах - я вообще не вижу как оно может работать в принципе. Даже сам разраб порой путается в своих изменениях.

Хорошо что базовые и рутинные вещи делает. И на том спасибо.
30 апр 14, 01:42    [15955663]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
ViPRos,

Да не вопрос же, это сразу видно по размеру ваших файлов. Кто спорит то?!

Но для лярдов строк и большого множества и связанности табель - DROP CREATE это не эффективно, да и геморно (колбаса удалённых и созданных CONSTRAINT-ов, какая нафег читабельность).

+ ViPRos
Но и не думаю что глупость генератора можно и нужно как-то оправдать.
Тем более когда всё равно, надо тупо добавить пару колонок в конец таблы, или тупо удалить.

"в случае че" я не очень понимаю, ибо никак не должен произойти, или скрипты неправильно составлены. И как может помочь DROP CREATE и чем он лучше? (придумывать можно, но на как практике?!)

"Alter плохо структурирована" - это я не понял совсем. И зачем было сказано? У вас случай на практике был?
ViPRos - с вами никто не спорил - совсем!!! А ощущение что вы оправдываетесь.
У сложных систем есть и тестовые и копии и мироринги и скрипты под рукой.
И имение на руках структуры таблы с потерянными данными - мёртвому припарка. А если данные есть - то и структура тоже.
Или вы что-то другое имели ввиду? Тогда я не понял.
30 апр 14, 11:51    [15957228]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
ViPRos
Member

Откуда:
Сообщений: 9946
ну какие то вещи делаеются о другому (переименование и т.д.)
30 апр 14, 13:24    [15958109]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
ViPRos
точно помню, что с алтер вышли проблемы
А что у вас генератор свой был?
Полюбэ же генерится же DROP CREATE, а далее руками же заменяешь на тот ALTER или другой набор команд или оставляешь как есть. В зависимости от задачи.
Или есть ещё какие-то настройки?
Просто они могли простые команды (когда колонка добавляется или удаляется или изменяется всё кроме типа или на совместимый тип - это же можно проверить) дать альтернативу. Ну да ладно об этом.
Когда я прикручивал Mercurial к серверу была идея логировать буквально все команды на изменние, чтобы потом вывалить список на upgrade ...
30 апр 14, 14:27    [15958699]     Ответить | Цитировать Сообщить модератору
 Re: изменение имени поля во всей таблице  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
1. А кто говорил что будет просто.
2. Не стоит из-за 1% зарубать остальные 99%. Можно покрыть простые случаи, которые встречаются чаще.

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

В том то и проблема, чуть ли не каждый берётся за синхронизацию БД, в итоге ни рыба ни мясо, а ресурсы тратятся.
MS, со своими мощностями, баблом и автоматизацией производства продукта могла на себя взять и эту функцию.
Добавить несколько процентов в стоимость Enterprize ради этого стоило бы.
30 апр 14, 16:32    [15959697]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить