Что Ваш № 1 путь состоит в том, чтобы быть осторожным с живой базой данных?

Chirag удалил его, так что вот он снова:

adb shell ps | grep com.myapp | awk '{print $2}' | xargs adb shell kill

Это должно быть запущено за пределами эмулятора. Это одна длинная команда Unix, а не четыре команды с визуальным разделением. | - это синтаксис, интерпретируемый вашей оболочкой (Ubuntu), которая затем выводит выходные данные из adb, grep и т. д. в следующий. В эмуляторе исполняется только ps.

80
задан 5 revs, 5 users 100% 10 December 2008 в 19:12
поделиться

52 ответа

Удостоверяются, что Ваш запрос имеет WHERE, параметр определил

, я был однажды на полпути посредством сложного обновления, был отвлечен и закончил запрос рано, забыв "где" пункт. Тогда я получил то дурное чувство, наблюдая, что полувторой запрос грохочет на для 3.. Эти несколько часов впоследствии потратили моющиеся данные о клиентах, был вполне урок!

, результат А которого состоит теперь в том, когда я работаю над живым дб, я структурирую свои запросы как:

UPDATE my_table WHERE condition = true;

тогда возвращаются и вставляют столбцы и т.д. для обновления. Берет немного дольше для записи, но в широком масштабе уменьшает мой шанс делания той же ошибки снова!

0
ответ дан ConroyP 5 November 2019 в 17:27
поделиться

Опасность работать неумышленный Удаляет (или вставляет, или обновления) всегда находится на моем уме.

я всегда добавляю, "где 1=2" после них, пока я не готов нажать на курок.

1
ответ дан Bob Probst 5 November 2019 в 17:27
поделиться

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

0
ответ дан Derek 5 November 2019 в 17:27
поделиться

Выключите AutoCommit в IDE Базы данных, если это поддерживает его. Мне выключили его в Разработчике SQL Oracle все время.

0
ответ дан Ted Elliott 5 November 2019 в 17:27
поделиться

Одно быстрое дополнительное, которое я не видел, но что я делаю часто: скопируйте таблицу Ваш, обновляют. Я делаю это при наличии базы данных для содержания этих резервных копий. Я могу тогда записать:

select *
  into MyBackupDb..PeterTableName2008_09_28BeforeABigUpdate

Это делает восстановление после ошибок намного быстрее в будущем (когда полное восстановление не практично).

0
ответ дан Peter 5 November 2019 в 17:27
поделиться

1 - Всегда создают резервное копирование прежде, чем открыть соединение, когда Вы будете знать, что необходимо будет обновить или вставить записи.

2 - При записи оператора ALWAYS обновления пишут оператору Where сначала тогда курсор назад к началу строки и пишут полевую часть обновления.

3 - где оператор для № 2 должен быть проверен с избранным оператором.

0
ответ дан Declan Shanaghy 5 November 2019 в 17:27
поделиться

Пойдите покупают Журнал SQL Вершины . Если Вы понимаете, что действительно завинтили, или даже если это был кто-то еще, можно использовать журнал для обращения изменений.

0
ответ дан Darrel Miller 5 November 2019 в 17:27
поделиться

dev против резервного копирования - удостоверяются изменение/устранение, Вы хотите подать заявку, прибывают из сценария. толстые, неуклюжие пальцы не имеют никакого места при работе с живыми данными. Если Вы можете, ожидать окна обслуживания, чтобы применить и откатывать, если Вы можете.

, Если Вы не можете ожидать для применения прямо после снимка, скопируйте, Удостоверьтесь, что все понимают, сколько работы могло бы быть вовлечено в продвижение вперед изменений между последним снимком и время whne, Вы подали заявку, "фиксация" должна он не удаваться.

0
ответ дан MikeJ 5 November 2019 в 17:27
поделиться

Используйте тот же процесс для QA, даже простые данные SQL фиксируют, поскольку Вы были бы изменение кода любого вида. Наш включает быть фиксировавшимся в CVS, Имея и выполнявший зарегистрированный план тестирования, имея обзор кода и имея процесс контроля изменений (где различные члены управления и главный операционный инженер рассматривают и заканчивают изменение).

Мы делаем это для всех нормальных данных SQL фиксирует, даже простые - единственное исключение, являющееся, когда что-то требуется, чтобы фиксировать главную проблему с производством ПРЯМО СЕЙЧАС (например, блокирующий всех клиентов от входа в систему) - в этом случае мы удостоверяемся, что существует как можно больше пар глаз на задание (обычно 3-4 человека вокруг одной рабочей станции, все из которых могут наложить вето на любое действие).

0
ответ дан MarkR 5 November 2019 в 17:27
поделиться

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

удаляют от клиентов где идентификатор = 5 пределов 1;

"идентификатор" мог бы быть уникальным индексом, и я знаю, что существует только строка, это собирается соответствовать моему, где пункт, но предел является дополнительным слоем предотвращения против случайного уничтожения неправильных данных. Я привык вводить эту часть сначала, в надежде на дальнейшее предотвращение против случайных нажатий клавиш. Я начинаю с, "удаляют предел 1", тогда возвратитесь и добавьте другой материал.

0
ответ дан mmacaulay 5 November 2019 в 17:27
поделиться

Если Ваш SQL Server использования, 2005 и выше Вас может создать снимок базы данных, который позволит Вам откатывать любые изменения, внесенные в момент времени снимка.

0
ответ дан Almond 5 November 2019 в 17:27
поделиться

При обновлении/удалении только одной записи mysql позволяет Вам поместить "ПРЕДЕЛ 1" в конец, таким образом, только одна запись повреждена даже когда, КОГДА пункт является неправильным.

0
ответ дан phytovor 5 November 2019 в 17:27
поделиться

если Вы используете оракула 10/11g... Ретроспективный кадр

http://www.oracle.com/technology/deploy/availability/htdocs/Flashback_Overview.htm

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

0
ответ дан Patrick 5 November 2019 в 17:27
поделиться

Я часто должен вставлять, обновлять или удалять данные по живому месту производства (Как аналитик данных, который является, вероятно, 40% моего задания). Большую часть времени это через автоматизированный DTS или пакеты SSIS. Однако мы - также люди, которые должны зафиксировать проблемные записи или производство обновления, когда крупный клиент управляемое изменение происходит (такие как перестройка отдела продаж). Иногда проблемы происходят из-за ошибок в коде, но обычно они в результате странных вещей, которые клиент сделал в их файл или вещи, которые пользователям удалось испортить для сохранения нас время, решив проблему или потому что они хотели обойти нормальный процесс для просто этого быстрого легкого изменения! (Отметьте пользователям - не пытайтесь починить вещи вручную, которые обычно делаются посредством автоматизированного процесса, Вы не знаете то, что еще может делать процесс!!!!!) Поэтому иногда у нас нет роскоши тестирования сценария на dev сначала как, что нуждается в фиксации, не находится на dev.

Мои правила: Никогда не вставляйте данные непосредственно от файла до производственной таблицы. Всегда приносите его в рабочую таблицу, таким образом, можно просмотреть его сначала. Имейте в распоряжении проверки так, чтобы, если будут неправильные данные в файле, процесс перестанет работать, прежде чем Вы доберетесь до заключительного шага вставки в производственные данные. Очистите данные сначала.

, Если необходимо удалить большое количество записей, оно может сохранить Вас при выборе тех записей сначала в рабочую таблицу. Тогда сделайте удаление. Тот путь, если вещи идут не так, как надо, намного легче восстановиться. Если Вы имеете контрольные таблицы, знаете, как восстановить данные от них быстро. Снова, если что-то идет не так, как надо, это намного быстрее для восстановления с контрольных таблиц, чем от резервного копирования на магнитную ленту.

я пишу оператор удаления как это:

начинаются, tran

удаляют

- выбор (перечислите важные поля для наблюдения здесь)

от table1, где field1 = 'x'

- откатывают tran

- Примечание tran

фиксации несколько вещей об этом. Сначала при помощи псевдонима я не могу случайно удалить целую таблицу, только выделив одну строку и выполнив код. Путем запуска, где пункт на той же строке как таблица я гораздо менее вероятен, чтобы избежать выделять его. Если бы у меня были соединения, то я удостоверился бы каждый концы строки в месте, где код не будет работать, если он не перейдет к следующей строке. Снова, это гарантирует, чтобы Вы получили ошибку вместо oopsie. Всегда выполните выбор сначала и отметьте количество затронутых записей (и посмотрите на данные, чтобы удостовериться, что это похоже на правильные записи!) Тогда не фиксируют, если количество записей не корректно, когда Вы работаете, фактические удаляют. Да, это более симпатично для запуска, где на отдельной строке, более безопасно закончить каждую строку удаления так, чтобы это не работало, если целый запрос не будет выделен.

Обновления следуют подобным правилам.

0
ответ дан HLGEM 5 November 2019 в 17:27
поделиться

Позволять DBAs сделать работу. Происходя из среды разработки, я не делаю want/need/should имеют доступ к чьей-либо живой базе данных. Мне это - эквивалент разрешения DBA устранить проблему кодирования в DAL, просто потому что это имеет "базу данных" в заголовке.:-)

0
ответ дан Joseph Ferris 5 November 2019 в 17:27
поделиться

При использовании SQL Server 2005 + Studio управления можно включить Неявные транзакции.

0
ответ дан Fabricio 24 November 2019 в 09:21
поделиться
  1. Мне всегда нравится, когда кто-то смотрит мне через плечо, когда я подключаюсь к живой базе данных.

  2. копия производственной базы данных хранится где-то. Это часто исключает необходимость запрашивать производственную базу данных.

  3. Если вам когда-нибудь придется что-то делать с работающей базой данных. Запишите это и добавьте исправление в качестве закодированной функции, доступной администраторам. Таким образом, у вас есть наименьшее оправдание, чтобы указать инструмент запроса на вашу базу данных.

0
ответ дан 24 November 2019 в 09:21
поделиться

Я узнал об этом во время интервью и подумал, что это отличная идея.

Begin Transaction
    Delete from foo where FooID = 100
IF @@RowCount <> 1 Begin
    Rollback Transaction
End  
1
ответ дан 24 November 2019 в 09:21
поделиться

Каждый раз, когда я открываю соединение с PROD или переключаюсь на контекст данных PROD, первое, что я всегда делаю, это добавляю этот комментарий до и после моего активного рабочего блока кода:

-- PROD -- PROD -- PROD -- PROD -- PROD -- PROD --

Там есть Были времена, когда я замечал это, когда мой большой палец находился на клавише Alt, а средний палец был на полпути к клавише «X». Уф!

0
ответ дан 24 November 2019 в 09:21
поделиться

Если вы используете Microsoft SQL Server Management Studio 2008 , вы можете указать, какой цвет будет использоваться в информационном окне при выполнении запросов (в нижней части редактора запросов Sql )

В приглашении к подключению выберите «Параметры»> «Использовать пользовательский цвет» и выберите КРАСНЫЙ для производства.

0
ответ дан 24 November 2019 в 09:21
поделиться

Никогда не создавайте базы данных с каскадным удалением. Они злые. Если у вас есть каскадные удаления на FK, вы никогда не знаете, сколько строк в других ссылочных таблицах будет удалено, когда вы удалите строку с помощью оператора delete.

Тем не менее, вы не можете ничего предполагать о том, что делают другие люди. Я всегда так делаю: 1. Скопируйте базу данных в локально установленную базу данных (используйте дампы). Просто скажите руководству, что вы отказываетесь работать, если у вас нет копии полной БД на вашем локальном компьютере. 2. Заставьте ваш скрипт работать с вашей локальной базой данных, импортируйте дамп снова и снова, пока скрипт не начнет работать с чисто импортированным дампом. Затем сохраните сценарий в файл на диске. 3. Запустите сценарий на рабочем сервере. 4. Импортируйте сценарий в SCM.

1
ответ дан 24 November 2019 в 09:21
поделиться

Резервное копирование данных до того, как вы начнете с ними связываться, как и с чем-либо еще.

0
ответ дан 24 November 2019 в 09:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: