Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать
netadmin.ws
Панель управления Регистрция свободна! Календарь Список пользователей Часто задаваемые вопросы Поиск по форуму Архив скриптов Главная   
Форум сетевых администраторов
Форум сетевых администраторов Форум сетевых администраторов » Базы данных » MySQL » Вопросы по MS SQL Server
Страницы (4): « 1 [2] 3 4 »
Предыдущая тема     Следующая тема
Автор
Тема    Новая тема     Ответить на эту тему
Viktor
Участник+
Средний рейтинг: 4.89 | Оценок: 19
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Jun 2002
Место проживания: Украина
Публикаций: 617
Статус: Viktor в оф-лайне
[сообщение #78308]

Ну это вряд ли...

__________________
Тест - проверка верности!

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 07-09-2005 13:30
Нажмите сюда для просмотра профайла Viktor Отправить Персональное сообщение Viktor Посетить домашнию страничку Viktor! Найти сообщения от Viktor Добавить Viktor в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
he][es
Участник+
Средний рейтинг: 4.07 | Оценок: 30
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: he][es в оф-лайне
[сообщение #78542]

Ещё один "затык" появился. Транзакции.
Сказали что они работают исключительно в одном "скрипте", те. даже не в одном соединении, а ещё уже... Т.е. Если я хочу соединиться с БД, начать транзакцию, послать несколько запросов, а потом отменить или подтвердить транзакцию, то этого сделать нельзя?.. (Ð_НÐ_)

__________________
Админ - вождь Апачей...

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 19-09-2005 17:11
Нажмите сюда для просмотра профайла he][es Отправить Персональное сообщение he][es Найти сообщения от he][es Добавить he][es в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Viktor
Участник+
Средний рейтинг: 4.89 | Оценок: 19
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Jun 2002
Место проживания: Украина
Публикаций: 617
Статус: Viktor в оф-лайне
[сообщение #78561]

quote:
Сказали что они работают исключительно в одном "скрипте", те. даже не в одном соединении, а ещё уже...

Брешут гады!

Не знаю как в ПХП, а в АСП все чудненько работает.

При создании сессии создаешь подключение к БД и сохраняешь его в переменной сессии.
В каждом скрипте используешь в качестве сушествующего соединения соединение из переменной сессии.
Для начала транзакции в ADO-соединении используется метод BeginTrans, для завершения CommitTrans, а для отмены RollbackTrans.

__________________
Тест - проверка верности!

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 20-09-2005 11:17
Нажмите сюда для просмотра профайла Viktor Отправить Персональное сообщение Viktor Посетить домашнию страничку Viktor! Найти сообщения от Viktor Добавить Viktor в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
he][es
Участник+
Средний рейтинг: 4.07 | Оценок: 30
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: he][es в оф-лайне
[сообщение #78563]

Во блин :/ Я так и делаю. При начале раб-ты скрипта создаю соединение, делаю кое какие выборки, потом говорю:
SET IMPLICIT_TRANSACTIONS ON; BEGIN TRANSACTION add_rashod;
набор запросов на вставку, выборку и т.п.
затем в Ð_НÐ_ говорю если чего то не так, то говори:
ROLLBACK TRANSACTION add_rashod;
Он говорит, а сервак ему огрызается:
nativecode=6401 - Cannot roll back add_rashod. No transaction or savepoint of that name was found.

Воот... И я чё то в непонятках.... Как быть?.. Куда копать?..

__________________
Админ - вождь Апачей...

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 20-09-2005 11:38
Нажмите сюда для просмотра профайла he][es Отправить Персональное сообщение he][es Найти сообщения от he][es Добавить he][es в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Viktor
Участник+
Средний рейтинг: 4.89 | Оценок: 19
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Jun 2002
Место проживания: Украина
Публикаций: 617
Статус: Viktor в оф-лайне
[сообщение #78568]

quote:
При начале раб-ты скрипта создаю соединение

И естественно при завершении скрипта соединение закрывается.

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

Ты используешь начало транзакции на стороне сервера (пересылка запросов серверу в чистом виде) я же использовал начало транзакции используя само соединение. И пока оно открыто транзакция продолжается.
quote:
Cannot roll back add_rashod. No transaction or savepoint of that name was found

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

__________________
Тест - проверка верности!

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 20-09-2005 13:22
Нажмите сюда для просмотра профайла Viktor Отправить Персональное сообщение Viktor Посетить домашнию страничку Viktor! Найти сообщения от Viktor Добавить Viktor в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
he][es
Участник+
Средний рейтинг: 4.07 | Оценок: 30
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: he][es в оф-лайне
[сообщение #78569]

quote:
И естественно при завершении скрипта соединение закрывается.

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

PHP:

if ($config['type_SQL'] == 'mssql') {
    
$result = $db->query('set dateformat Ymd');
    if (
DB::isError($result)) {
        die (
$result->getMessage());
    }
    
$result = $db->query('SET IMPLICIT_TRANSACTIONS ON; BEGIN TRANSACTION add_rashod;'); //SET AUTOCOMMIT=0; 
    
if (DB::isError($result)) { print 'trans beg err';
        die (
$result->getMessage());
    } else {
        print 
'trans beg ok ';
    }
} elseif (
$config['type_SQL'] == 'mysql') {
    
$result = $db->query('SET AUTOCOMMIT=0; START TRANSACTION;');
    if (
DB::isError($result)) {
        die (
$result->getMessage());
    }
}

    
// Здесь у меня куча всяких запросов выборок вставок...

if($count_ok == count($result_array['rashodi']) && $kol_vo == 1) {
    
$result = $db->query('COMMIT TRANSACTION add_rashod;');
    if (
DB::isError($result)) { print 'commit';
        die (
$result->getMessage());
    } else {
        
$parser->site_body .= '<h1>Commit</h1>';
    }
} else {
    
$result = $db->query('ROLLBACK TRANSACTION add_rashod;');
    if (
DB::isError($result)) { print 'rollback<pre>'; print_r($result);
        die (
$result->getMessage());
    } else {
        
$parser->site_body .= '<h1>ROLLBACK</h1>';
    }
}


Вот в чём весь затык то! Я бы понял если соединение прерывалось...
(кстати можно как нить посм. "номер" соединения текущего или что то на подобе SIDа, что бы при старте транзакции сравнить его с тем, что при конце?)

__________________
Админ - вождь Апачей...

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 20-09-2005 14:40
Нажмите сюда для просмотра профайла he][es Отправить Персональное сообщение he][es Найти сообщения от he][es Добавить he][es в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Viktor
Участник+
Средний рейтинг: 4.89 | Оценок: 19
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Jun 2002
Место проживания: Украина
Публикаций: 617
Статус: Viktor в оф-лайне
[сообщение #78584]

Я понял из твоих предыдущих сообщений, что тебе нужна транзакция в пределах сессии с вызовом различных ПХП скриптов (юзер работает с несколькими веб-страницами).

К последнему посту. Попробуй транзакцию без имени.

quote:
(кстати можно как нить посм. "номер" соединения текущего или что то на подобе SIDа, что бы при старте транзакции сравнить его с тем, что при конце?)

Для просмотра вложенности выполняемых транзакций можно использовать серверную переменную @@TRANCOUNT

Например, так
select @@TRANCOUNT

Для просмотра SIDа можно использовать запросы к системным таблицам или программу SQLView32.

__________________
Тест - проверка верности!

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 21-09-2005 13:09
Нажмите сюда для просмотра профайла Viktor Отправить Персональное сообщение Viktor Посетить домашнию страничку Viktor! Найти сообщения от Viktor Добавить Viktor в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
he][es
Участник+
Средний рейтинг: 4.07 | Оценок: 30
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: he][es в оф-лайне
[сообщение #78607]

Вообшем наз0ся ЧАЩЕ ОБНОВЛЯЙТЕ МАНЫ!.. Проблему решил слив новый ман по PEAR:: DB...
Теперь такой вопрос, нужно сделать "temporary table" к примеру на час... Такое реально? Или только в пределах соединения?..

__________________
Админ - вождь Апачей...

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 22-09-2005 10:26
Нажмите сюда для просмотра профайла he][es Отправить Персональное сообщение he][es Найти сообщения от he][es Добавить he][es в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Viktor
Участник+
Средний рейтинг: 4.89 | Оценок: 19
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Jun 2002
Место проживания: Украина
Публикаций: 617
Статус: Viktor в оф-лайне
[сообщение #78608]

quote:
Такое реально? Или только в пределах соединения?..

Оригинальный текст из хелпа...

Temporary Tables
You can create local and global temporary tables. Local temporary tables are visible only in the current session; global temporary tables are visible to all sessions.

Prefix local temporary table names with single number sign (#table_name), and prefix global temporary table names with a double number sign (##table_name).

SQL statements reference the temporary table using the value specified for table_name in the CREATE TABLE statement:

CREATE TABLE #MyTempTable (cola INT PRIMARY KEY)
INSERT INTO #MyTempTable VALUES (1)

If a local temporary table is created in a stored procedure or application that can be executed at the same time by several users, SQL Server has to be able to distinguish the tables created by the different users. SQL Server does this by internally appending a numeric suffix to each local temporary table name. The full name of a temporary table as stored in the sysobjects table in tempdb consists of table name specified in the CREATE TABLE statement and the system-generated numeric suffix. To allow for the suffix, table_name specified for a local temporary name cannot exceed 116 characters.

Temporary tables are automatically dropped when they go out of scope, unless explicitly dropped using DROP TABLE:

* A local temporary table created in a stored procedure is dropped automatically when the stored procedure completes. The table can be referenced by any nested stored procedures executed by the stored procedure that created the table. The table cannot be referenced by the process which called the stored procedure that created the table.


* All other local temporary tables are dropped automatically at the end of the current session.


* Global temporary tables are automatically dropped when the session that created the table ends and all other tasks have stopped referencing them. The association between a task and a table is maintained only for the life of a single Transact-SQL statement. This means that a global temporary table is dropped at the completion of the last Transact-SQL statement that was actively referencing the table when the creating session ended.

__________________
Тест - проверка верности!

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 22-09-2005 10:43
Нажмите сюда для просмотра профайла Viktor Отправить Персональное сообщение Viktor Посетить домашнию страничку Viktor! Найти сообщения от Viktor Добавить Viktor в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
he][es
Участник+
Средний рейтинг: 4.07 | Оценок: 30
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: he][es в оф-лайне
[сообщение #79849]

Возникла проблема с типами: необходимо числовое поле в 20 цифр, biging 19 (кажется) да ещё и не полных. Что делать? Юзать text?

__________________
Админ - вождь Апачей...

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 12-12-2005 03:14
Нажмите сюда для просмотра профайла he][es Отправить Персональное сообщение he][es Найти сообщения от he][es Добавить he][es в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Viktor
Участник+
Средний рейтинг: 4.89 | Оценок: 19
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Jun 2002
Место проживания: Украина
Публикаций: 617
Статус: Viktor в оф-лайне
[сообщение #79851]

Если тебе нужны 20 цифр, да еще и с начальными нулями, то однозначно CHAR(20).

__________________
Тест - проверка верности!

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 12-12-2005 09:48
Нажмите сюда для просмотра профайла Viktor Отправить Персональное сообщение Viktor Посетить домашнию страничку Viktor! Найти сообщения от Viktor Добавить Viktor в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
he][es
Участник+
Средний рейтинг: 4.07 | Оценок: 30
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: he][es в оф-лайне
[сообщение #79853]

Viktor дык это же не числовой формат... :/
Др. варианта нет?

__________________
Админ - вождь Апачей...

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 12-12-2005 13:56
Нажмите сюда для просмотра профайла he][es Отправить Персональное сообщение he][es Найти сообщения от he][es Добавить he][es в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Viktor
Участник+
Средний рейтинг: 4.89 | Оценок: 19
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Jun 2002
Место проживания: Украина
Публикаций: 617
Статус: Viktor в оф-лайне
[сообщение #79874]

Меня смутило твое

quote:
да ещё и не полных.

Я понял, что у тебя есть ведущие нули в числе.

Если их нет, то юзай DECIMAL [(p [, s])] или NUMERIC[(p [, s] )]

Типы DECIMAL и NUMERIC, в отличие от FLOAT и REAL, позволяют сохранять десятичные числа точно, без искажений. Допустимый интервал значений и точность определяются с помощью параметров р и s. Вы можете сохранять значения в интервале от (-10Е-38) до (+10Е+38) и использовать для этого от 2 до 17 байт.
Параметр р определяет точность, с которой можно сохранить десятичное число (т.е. р — это общее количество сохраняемых цифр, макс - 38). А параметр s определяет количество сохраняемых Цифр справа от десятичной точки (s должно быть меньше или равно р). Если опустить параметры р и s, то им будут присвоены стандартные значения (р=18, s=0).

В твоем случае DECIMAL (20).

__________________
Тест - проверка верности!

Сообщение было отредактировано Viktor 14-12-2005 в 09:14

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 14-12-2005 09:11
Нажмите сюда для просмотра профайла Viktor Отправить Персональное сообщение Viktor Посетить домашнию страничку Viktor! Найти сообщения от Viktor Добавить Viktor в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
polo
Администратор
Средний рейтинг: 4.77 | Оценок: 106
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус: polo в оф-лайне
[сообщение #79878]

а вообще для лучшей совместимости всегда хранят дату в unixtimestampe. Никогда не любил пользоваться бд функциями по работу с датами.

__________________
Всегда есть решение.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 14-12-2005 16:31
Нажмите сюда для просмотра профайла polo Отправить Персональное сообщение polo Посетить домашнию страничку polo! Найти сообщения от polo Добавить polo в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
he][es
Участник+
Средний рейтинг: 4.07 | Оценок: 30
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: he][es в оф-лайне
[сообщение #79925]

Viktor пасиба. Понял.
polo учту на будущее...

__________________
Админ - вождь Апачей...

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 20-12-2005 16:18
Нажмите сюда для просмотра профайла he][es Отправить Персональное сообщение he][es Найти сообщения от he][es Добавить he][es в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя

Страницы (4): « 1 [2] 3 4 »


Формат времени GMT. Текущее время 20:10.
Новая тема   Ответить на эту тему [ Версия для печати Печать | Отправить эту страницу другу/знакомому! Отправить | Получать уведомления об обновлении этой темы Подписка ] Предыдущая тема     Следующая тема
Навигация по форуму:
Оценка темы:

Правила форума:
Вы не можете создавать новые темы.
Вы не можете отвечать на существующие темы.
Вы не можете прикреплять файлы.
Вы не можете редактировать свои сообщения.
HTML теги выкл.
Спец. код вкл.
Смайлики вкл.
[IMG] тег выкл.
 

Page generated in 0.44313097 seconds (98.39% PHP - 1.61% MySQL) with 26 queries.


  Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать
©NetAdmin.ws, 2001-2026.
Powered by: vBulletin
Copyright ©2000, 2001, Jelsoft Enterprises Limited.