Что Ваш № 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 ответа

Три вещи я научился на горьком опыте за эти годы...

Первый, если Вы делаете обновления или удаляете на живых данных, сначала пишут Запрос Select с оператором Where, который Вы будете использовать. Удостоверьтесь, что это работает. Удостоверьтесь, что это корректно. Тогда предварительно ожидайте ОБНОВЛЕНИЕ/ОПЕРАТОР УДАЛЕНИЯ известного рабочего оператора Where.

Вы никогда не хотите иметь

DELETE FROM Customers

нахождение в Вашем запросе анализатор, ожидающий Вас для записи оператора Where... случайно, хит "выполняется", и Вы только что уничтожили свою таблицу Customer. Ой.

кроме того, в зависимости от Вашей платформы, узнают, как взять quick'n'dirty резервное копирование таблицы. В SQL Server 2005,

SELECT *
INTO CustomerBackup200810032034
FROM Customer

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

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

101
ответ дан 2 revs, 2 users 97% 5 November 2019 в 17:27
поделиться

Создайте пользователя только для чтения (или заставьте DBA делать это), и только используйте того пользователя для рассмотрения DB. Добавьте соответствующие полномочия к схеме так, чтобы можно было просмотреть содержание сохраненных процедур/представлений/триггеров/и т.д. но не имеют способность изменить их.

1
ответ дан Richard Nienaber 5 November 2019 в 17:27
поделиться
  1. Всегда создают резервную копию перед изменением.
  2. Всегда делают модификации (например, ALTER TABLE) с помощью сценария.
  3. Всегда изменяют данные (например, УДАЛИТЕ) с помощью хранимой процедуры.
1
ответ дан user20282 5 November 2019 в 17:27
поделиться

Я всегда комментирую любые разрушительные запросы (вставьте, обновите, удалите, отбросьте, изменитесь) при выписывании специальных запросов в Query Analyzer. Тем путем единственный способ выполнить их, состоит в том, чтобы выделить их, не выбирая прокомментированную часть, и нажать F5.

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

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

Я добавлю к рекомендациям выполнения, НАЧИНАЮТ TRAN перед Вашим ОБНОВЛЕНИЕМ, просто не забывайте на самом деле делать ФИКСАЦИЮ; можно нанести такой же ущерб при отъезде незафиксированной транзакции открытой. Не становитесь отвлеченными телефонами, коллегами, ланч и т.д., когда посреди обновлений или Вы найдете, что все остальные заблокированы вплоть до Вас ФИКСАЦИЯ или ОТКАТ.

1
ответ дан SqlACID 5 November 2019 в 17:27
поделиться
  1. , если это возможно, попросите соединяться с кем-то
  2. всегда количество к 3 прежде, чем нажать Enter (если один, поскольку это приведет Вашего парного партнера в бешенство!)
1
ответ дан Michael Easter 5 November 2019 в 17:27
поделиться
BEGIN TRANSACTION;

Тот путь можно откатывать после ошибки.

108
ответ дан Paul Tomblin 5 November 2019 в 17:27
поделиться

Сделайте резервное копирование сначала: это должен быть закон номер 1 sysadmining так или иначе

РЕДАКТИРОВАНИЕ : слияние, что сказали другие, удостоверяется, что Ваши ОБНОВЛЕНИЯ имеют соответствующие операторы Where.

Идеально, изменяя живую базу данных никогда не должен происходить (вне ВСТАВОК и базового обслуживания). Изменение структуры живого DB особенно чревато потенциальной плохой кармой.

50
ответ дан 2 revs 5 November 2019 в 17:27
поделиться

Внесите свои изменения в копию, и когда Вы будете удовлетворены, затем примените фиксацию для проживания.

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

Часто, прежде чем я делаю ОБНОВЛЕНИЕ или УДАЛЯЮ, я пишу эквивалентный ВЫБОР.

22
ответ дан 2 revs 5 November 2019 в 17:27
поделиться

НИКОГДА не делайте обновление, если Вы не находитесь в НАЧАТЬ TRAN t1 - не в dev базе данных, не в производстве, не нигде. НИКОГДА не выполните TRAN t1 ФИКСАЦИИ вне комментария - всегда тип

--COMMIT TRAN t1

и затем выберите оператор для выполнения его. (Очевидно, это только относится к клиентам запроса GUI.), Если Вы делаете эти вещи, это станет второй натурой, чтобы сделать их, и Вы не потеряете едва времени.

у меня на самом деле есть макрос "обновления", который вводит это. Я всегда вставляю это в настроить мои обновления. Можно сделать подобный для, удаляет и вставляет.

begin tran t1
update 
set 
where 
rollback tran t1
--commit tran t1
18
ответ дан Patrick Szalapski 5 November 2019 в 17:27
поделиться

Всегда удостоверяйтесь свои ОБНОВЛЕНИЯ, и УДАЛЯЕТ, имеют надлежащий оператор Where.

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

Отвечать на мой собственный вопрос:

При записи оператора обновления, запишите его не в порядке.

  1. Запись UPDATE [table-name]
  2. Запись WHERE [conditions]
  3. Возвращается и пишет SET [columns-and-values]

Выбор строк, которые Вы хотите обновить перед высказыванием, что оценивает Вас, хотят измениться, намного более безопасно, чем выполнение его в другом порядке. Это лишает возможности update person set email = 'bob@bob.com' находиться в Вашем окне запроса, готовом быть выполненным неуместным нажатием клавиши, готовым испортить каждую строку в таблице.

Редактирование: Как другие сказали, запишите WHERE, пункт для Вашего удаляет перед записью DELETE.

13
ответ дан 2 revs 5 November 2019 в 17:27
поделиться

Как пример, я создаю SQL как это

--Update P Set
--Select ID, Name as OldName, 
    Name='Jones'
From Person P
Where ID = 1000

, я выделяю текст от конца до Выбора и выполняю тот SQL. Как только я проверяю, что это вытягивает запись, которую я хочу обновить, я поразил shift-up, чтобы выделить оператор Update и выполнить это.

Примечание, что я использовал псевдоним. Я никогда не обновляю имя таблицы explicity. Я всегда использую псевдоним.

, Если я делаю это в сочетании с транзакциями и откатом/фиксациями, я действительно, действительно в безопасности.

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

Мой № 1 способ быть осторожным с живой базой данных? Не касайтесь его.:)

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

, Неважно, то, как твердый Вы думаете сценарий, с которым Вы работаете, выполните его через цикл испытаний. Даже если "цикл испытаний" означает выполнять сценарий против Вашего собственного экземпляра базы данных, удостоверьтесь, что Вы делаете это. Намного лучше представить дефекты на Вашем локальном поле, чем продуктивная среда.

11
ответ дан Gabriel Isenberg 5 November 2019 в 17:27
поделиться
  1. Проверка, перепроверьте и проверьте снова любой statment, который делает обновления. Даже если Вы будете думать, что просто делаете простое обновление отдельного столбца, рано или поздно Вы не будете иметь достаточного количества кофе и забудете 'где' пункт, уничтожая целую таблицу.

Пара других вещей я нашел полезными:

я 've нашел, что эти 3 вещи помешали мне причинять любой серьезный вред.

6
ответ дан dmercer 5 November 2019 в 17:27
поделиться
  • Никто не хочет резервное копирование, но все кричат для восстановления
  • , Создают Ваш DB со ссылками внешнего ключа, потому что Вы должны:
  • делают его максимально трудно для себя для обновления/удаления данных и уничтожения структурной целостности / что-то еще с тем
  • , Если возможно, работают на системе, где необходимо фиксировать изменения перед постоянным хранением их (т.е. деактивируйте автоматическую фиксацию при восстановлении дб)
  • Попытка определить классы проблемы так, чтобы Вы получили понимание, как зафиксировать без проблемы
  • , Получают стандартную программу в игре резервных копий в базу данных, всегда имеют вторую базу данных по тестовому серверу под рукой, таким образом, можно просто работать над тем
  • , поскольку помните: , Если что-то перестало работать полностью, необходимо быть в порядке снова с такой скоростью, как любое возможное

ну, это обо всем, о чем я могу думать теперь. Возьмите полужирные проходы, и Вы видите то, что является № 1 для меня.;-)

6
ответ дан 4 revs, 2 users 91% 5 November 2019 в 17:27
поделиться

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

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

Если Вы используете Oracle или другую базу данных, которая поддерживает ее, проверьте свои изменения прежде, чем сделать ФИКСАЦИЮ.

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

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

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

Проверьте дважды, фиксация однажды!

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

Скопируйте или выведите базу данных перед запуском.

2
ответ дан Lou Franco 5 November 2019 в 17:27
поделиться

Для прибавления к какой сказанный Wayne запишите Ваш WHERE перед именем таблицы в DELETE или UPDATE оператор.

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

СОЗДАЙТЕ РЕЗЕРВНУЮ КОПИЮ СВОИХ ДАННЫХ. Изученный, что один твердый способ работать с базами данных клиентов регулярно.

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

Всегда добавляйте пункт использования.

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

Мое правило (как разработчик приложения): не касайтесь его! Это - то, для чего обученные DBAs. Heck, я даже не хочу разрешение коснуться его.:)

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

Различные цвета на среду: мы имеем, устанавливают нашего разработчика PL\SQL (IDE для Oracle) так, чтобы, когда Вы входите в систему к производственному DB, все окна были в ярком красном. Некоторые пошли до присвоения различного цвета для dev и теста также.

2
ответ дан Doron Yaacoby 5 November 2019 в 17:27
поделиться

Удостоверьтесь, что Вы определяете где пункт при удалении записей.

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

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

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

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

1
ответ дан Brian Vander Plaats 5 November 2019 в 17:27
поделиться
Другие вопросы по тегам:

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