Ковыряюсь я с .NET.
Есть база данных (myDB1)
В коде мне нужно было построить динамически Update Statement типа
Update MyTable
Set field1='value1', field2='value2'
Where field3=keyID
В дебагере я увидела ошибку и остановила приложение. К этому моменту у меня уже была построена строка
Update MyTable
Set field1='value1', field2='value2'
(то бишь без Where clause).
Так вот по каким-то непонятным для меня причинам этот statement все равно выполнился и в итоге у меня в огромной таблице обновились поля field1 и field2 во всех строках, не смотря на то, что я остановила приложение и SQL строка была внутри System.Text.StringBuilder и ни каких Execute statement я не выполняла.
Теперь мне надо как-то все это вернуть обратно.
Есть другая база данных с той же структурой (myDB2).
Можно ли составить SQL statement, чтобы обновить field1 i field2 в myDB1 значениями field1 i field2 из таблицы с тем же именем, но из myDB2?
Полазила по help-у для Update statement, но там нет примера для манипуляций с двумя базами данных.
DTS использовать не могу, ибо появятся дупликаты, а удалить испорченные строки тоже не могу, ибо на них ссылается еще много всего.
Спасите, помогите пожалуйста.
Спецы по T-SQL Help!!!
-
- Уже с Приветом
- Posts: 5771
- Joined: 02 Dec 1999 10:01
- Location: Saint-Petersburg --> Bellevue, WA
-
- Уже с Приветом
- Posts: 1407
- Joined: 07 Jan 2003 19:51
- Location: НорКа
-
- Уже с Приветом
- Posts: 5669
- Joined: 13 Oct 2000 09:01
- Location: East Bay, CA
Re: Спецы по T-SQL Help!!!
[del]
упс вам уже ответили
упс вам уже ответили
-
- Уже с Приветом
- Posts: 956
- Joined: 04 Mar 2002 10:01
Re: Спецы по T-SQL Help!!!
AnyaGal wrote:Update MyTable
Set field1='value1', field2='value2'
(то бишь без Where clause).
Так вот по каким-то непонятным для меня причинам этот statement все равно выполнился и в итоге у меня в огромной таблице обновились поля field1 и field2 во всех строках, не смотря на то, что я остановила приложение и SQL строка была внутри System.Text.StringBuilder и ни каких Execute statement я не выполняла.
Как исправить вам ответили, а что касается магического выполнения апдейта, то чудес не бывает, и вполне вероятно у вас, к примеру, в watch окне сидело
sqlCommand.Execute(), которая благополучно выполнилась при останове. (сам как-то попал, дрогнула рука и попало что-то вроде stream.Read(). Потом я пошел в цикле чтения по шагам и изумленно смотрел на эффекты
-
- Уже с Приветом
- Posts: 5771
- Joined: 02 Dec 1999 10:01
- Location: Saint-Petersburg --> Bellevue, WA
-
- Уже с Приветом
- Posts: 5771
- Joined: 02 Dec 1999 10:01
- Location: Saint-Petersburg --> Bellevue, WA
Re: Спецы по T-SQL Help!!!
\IA72 wrote:AnyaGal wrote:Update MyTable
Set field1='value1', field2='value2'
(то бишь без Where clause).
Так вот по каким-то непонятным для меня причинам этот statement все равно выполнился и в итоге у меня в огромной таблице обновились поля field1 и field2 во всех строках, не смотря на то, что я остановила приложение и SQL строка была внутри System.Text.StringBuilder и ни каких Execute statement я не выполняла.
Как исправить вам ответили, а что касается магического выполнения апдейта, то чудес не бывает, и вполне вероятно у вас, к примеру, в watch окне сидело
sqlCommand.Execute(), которая благополучно выполнилась при останове. (сам как-то попал, дрогнула рука и попало что-то вроде stream.Read(). Потом я пошел в цикле чтения по шагам и изумленно смотрел на эффекты
Я правда не понимаю как это произошло.
SQL строка строится в одной процедуре, которая потом должна была вызвать следующую процедуру, где и былa Execute командa. Так до вызова этой второй процедуры даже и не дошло, я остановила дебагер раньше.
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
Re: Спецы по T-SQL Help!!!
AnyaGal wrote:Так до вызова этой второй процедуры даже и не дошло, я остановила дебагер раньше.
Товарищ ! Помни - поезд мгновенно остановить невозможно ! (c) плакат
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 5771
- Joined: 02 Dec 1999 10:01
- Location: Saint-Petersburg --> Bellevue, WA
Re: Спецы по T-SQL Help!!!
Dmitry67 wrote:AnyaGal wrote:Так до вызова этой второй процедуры даже и не дошло, я остановила дебагер раньше.
Товарищ ! Помни - поезд мгновенно остановить невозможно ! (c) плакат
Нет серьезно, можно ли этого избежать?
Сегодня то же самое происходит, SQL statments выполняются, правда без таких последствий (сейчас я с Insert-ом балуюсь , то есть просто лишние строки появляются )
Их найти и удалить конечно проще, но все равно достает, честно говоря.
Чего-то раньше в Visual Studio 6 я таких фичей не замечала.
Может это .NET просто такой быстрый, что не хочет останавливаться там где его просят.
-
- Уже с Приветом
- Posts: 4468
- Joined: 21 Sep 2000 09:01
- Location: Sammamish, WA
Re: Спецы по T-SQL Help!!!
AnyaGal, если Вы отлаживаетесь на живых данных (чего делать, разумеется, не стоит - но это Вы и без меня знаете), то хотя бы используйте явные транзакции (или включите опцию, автоматически запускающую неявную транзакцию) и всегда оставляйте себе возможность сделать rollback если что-то пошло не так.
Cheers
-
- Уже с Приветом
- Posts: 1490
- Joined: 24 Jan 1999 10:01
- Location: Russia -> village in WA
Re: Спецы по T-SQL Help!!!
Мне смутно кажется, что я такое поведение видел. Вообще, хорошо было бы посмотреть код.AnyaGal wrote:Нет серьезно, можно ли этого избежать?
Сегодня то же самое происходит, SQL statments выполняются, правда без таких последствий (сейчас я с Insert-ом балуюсь , то есть просто лишние строки появляются )
Их найти и удалить конечно проще, но все равно достает, честно говоря.
Чего-то раньше в Visual Studio 6 я таких фичей не замечала.
Может это .NET просто такой быстрый, что не хочет останавливаться там где его просят.
Я обычно предпочитаю не останавливать код "стопом". А обходить часть кода установкой следующего исполняемого оператора, если вдруг вижу, что в коде что-то не то. Обошел, закрыл программу "правильно", исправил, запустил.
-
- Уже с Приветом
- Posts: 5771
- Joined: 02 Dec 1999 10:01
- Location: Saint-Petersburg --> Bellevue, WA
Re: Спецы по T-SQL Help!!!
tengiz wrote:AnyaGal, если Вы отлаживаетесь на живых данных (чего делать, разумеется, не стоит - но это Вы и без меня знаете), то хотя бы используйте явные транзакции (или включите опцию, автоматически запускающую неявную транзакцию) и всегда оставляйте себе возможность сделать rollback если что-то пошло не так.
Конечно данные не "живые", но все равно это тестовая база данных и ее пользуются другие девелоперы и тестеры.
Не могли бы Вы пояснить подробнее, какую опцию включить?
Dmitry S wrote:Мне смутно кажется, что я такое поведение видел. Вообще, хорошо было бы посмотреть код.
Я обычно предпочитаю не останавливать код "стопом". А обходить часть кода установкой следующего исполняемого оператора, если вдруг вижу, что в коде что-то не то. Обошел, закрыл программу "правильно", исправил, запустил.
Если это помогает, то возможно стоит приобрести такую же привычку.
-
- Уже с Приветом
- Posts: 4468
- Joined: 21 Sep 2000 09:01
- Location: Sammamish, WA
Re: Спецы по T-SQL Help!!!
AnyaGal wrote:Не могли бы Вы пояснить подробнее, какую опцию включить?
MSDN Online - Transact-SQL Implicit Transactions
MSDN Online - SET IMPLICIT_TRANSACTIONS {ON | OFF}
Cheers