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

Откуда: Украина г. Хмельницкий
Сообщений: 628
Есть хранимая процедура:
CREATE PROCEDURE [dbo].[restore_db]
 @tBakFile CHAR(100),
 @tBakDate SMALLDATETIME,
 @tMn INT,
 @tYr INT
AS
--                                                 ВОСТАНОВЛЕНИ ВАК-ФАЙЛА НА DNSI2
RESTORE DATABASE DNSI2 FROM DISK =  @tBakFile WITH
MOVE 'DNSI' TO 'D:\SQL\DATA\DNSI2.mdf',
MOVE 'DNSI_Log' TO 'D:\SQL\DATA\DNSI2_Log.ldf',
REPLACE
--                                                 ОБНУЛЕНИЕ ФАЙЛОВ НА DNSI1
TRUNCATE TABLE DNSI1.dbo.table10150
TRUNCATE TABLE DNSI1.dbo.table10153
TRUNCATE TABLE DNSI1.dbo.table10857
TRUNCATE TABLE DNSI1.dbo.table469
DELETE FROM DNSI1.dbo.table_bakfile WHERE mn = @tMn AND yr = @tYr
--                                                     ОБРЕЗКА ЖЕРНАЛА ТРАНЗАКЦИЙ
DUMP TRANSACTION DNSI1 WITH NO_LOG
--                                                 КОПИРОВАНИЕ ДАННЫХ С DNSI2 НА DNSI1
INSERT INTO [DNSI1].[dbo].[table10150]([pr], [ik], [ich], [q], [upc], [p])
SELECT [pr], [ik], [ich], [q], [upc], [p] FROM [DNSI2].[dbo].[table10150]
--
INSERT INTO [DNSI1].[dbo].[table10153]([p], [kod_det], [z1], [z2], [z3], [z4], [z5], [z6], [z7])
SELECT [p], [kod_det], [z1], [z2], [z3], [z4], [z5], [z6], [z7] FROM [DNSI2].[dbo].[table10153]
--
INSERT INTO [DNSI1].[dbo].[table10857]([p], [i], [inn], [io])
SELECT [p], [i], [inn], [io] FROM [DNSI2].[dbo].[table10857]
--
INSERT INTO [DNSI1].[dbo].[table469]([kod_upak], [rez1], [kod_iz_ot], [rez2], [kod_iz_do], [rez3], [primen], [naim_izd], [pr_iz])
SELECT [kod_upak], [rez1], [kod_iz_ot], [rez2], [kod_iz_do], [rez3], [primen], [naim_izd], [pr_iz] FROM [DNSI2].[dbo].[table469]
--
DECLARE @tKst INT
SET @tKst = (SELECT COUNT(*) AS kol FROM [DNSI1].[dbo].[table10150])
INSERT INTO [DNSI1].[dbo].[table_bakfile]([bak_name], [bak_date], [kst10150], [mn], [yr])
VALUES(@tBakFile, @tBakDate, @tKst, @tMn, @tYr)

которую клиент запускает из FoxPro:
SQLEXEC(nKonHandle,'EXEC restore_db ?uX(1), ?uX(2), ?uX(3), ?uX(4)')

в результате выполднения клиент получает сообщение в виде ошибки:
Processed 73856 pages for database 'DNSI2', file 'DNSI' on file 1.
Processed 1 pages for database 'DNSI2', file 'DNSI_log' on file 1.
RESTORE DATABASE successfully processed 73857 pages in 23.979 seconds (25.231 MB/sec).

и получается процедура выполняется не полностью, а только включно до места:
RESTORE DATABASE DNSI2 FROM DISK =  @tBakFile WITH
MOVE 'DNSI' TO 'D:\SQL\DATA\DNSI2.mdf',
MOVE 'DNSI_Log' TO 'D:\SQL\DATA\DNSI2_Log.ldf',
REPLACE

Раньше у нас SQL-сервер был 2000, и всё работало нормально, такие проблемыв начались после порехода на SQL-сервер 2005. Что можете посоветовать? В чём может быть причина? RESTORE DATABASE то вроди проходит...
4 янв 13, 15:18    [13722700]     Ответить | Цитировать Сообщить модератору
 Re: Возвращение сообщения клиенту  [new]
?
Guest
а где сообщение об ошибке-то?
тут приведено только, что база восстановилась, все ок.
а что есть DUMP TRANSACTION?
у меня 2008R2, в нем такого нет (БОЛ про него молчит).
а интернет обрезанный, не открывает страницы с поиском на DUMP TRANSACTION.
поищите в гугле на него,
может его и раньше 2008 упразднили
4 янв 13, 15:43    [13722751]     Ответить | Цитировать Сообщить модератору
 Re: Возвращение сообщения клиенту  [new]
Glory
Member

Откуда:
Сообщений: 104751
shanton
получается процедура выполняется не полностью, а только включно до места:

Вы так решили потому, что все остальные команды не вернули вам никаких сообщений ?

ЗЫ
"Processed 73856 pages" - это не ошибка. Это информационное сообщение
4 янв 13, 16:03    [13722800]     Ответить | Цитировать Сообщить модератору
 Re: Возвращение сообщения клиенту  [new]
shanton
Member

Откуда: Украина г. Хмельницкий
Сообщений: 628
Glory
ЗЫ
"Processed 73856 pages" - это не ошибка. Это информационное сообщение

Меня смущает то, что в результате выполнения этой процедуры клиент получает это сообщение, чего раньше, на 2000 сервере, не было, процедура выполнялась полностью - востановление и копирование данных с одной базы в другую. А счас, востановление проходит, возвращается сообщение и всё, на этом процедура заканчивает своё выполнение, данные в таблицах DNSI1 не появляються, таблицы пустые, хотя в DNSI2 всё на месте. Может в настройках сервера где-то надо галочку поставить, чтобы информационные сообщения не возвращались клиенту?
4 янв 13, 17:30    [13723067]     Ответить | Цитировать Сообщить модератору
 Re: Возвращение сообщения клиенту  [new]
Glory
Member

Откуда:
Сообщений: 104751
shanton
Меня смущает то, что в результате выполнения этой процедуры клиент получает это сообщение, чего раньше, на 2000 сервере, не было,

Сообщение было всегда.

shanton
процедура выполнялась полностью -

Еще раз - почему вы решили, что сейчас процедура выполняется не полностью ?
Каким способом вы мониторили ход выполнения процедуры ?
4 янв 13, 17:40    [13723097]     Ответить | Цитировать Сообщить модератору
 Re: Возвращение сообщения клиенту  [new]
shanton
Member

Откуда: Украина г. Хмельницкий
Сообщений: 628
Glory,

Сообщение было всегда, но клиент его не получал.
В процедуры есть часть кода:
--                                                 КОПИРОВАНИЕ ДАННЫХ С DNSI2 НА DNSI1
INSERT INTO [DNSI1].[dbo].[table10150]([pr], [ik], [ich], [q], [upc], [p])
SELECT [pr], [ik], [ich], [q], [upc], [p] FROM [DNSI2].[dbo].[table10150]
--
INSERT INTO [DNSI1].[dbo].[table10153]([p], [kod_det], [z1], [z2], [z3], [z4], [z5], [z6], [z7])
SELECT [p], [kod_det], [z1], [z2], [z3], [z4], [z5], [z6], [z7] FROM [DNSI2].[dbo].[table10153]
--
INSERT INTO [DNSI1].[dbo].[table10857]([p], [i], [inn], [io])
SELECT [p], [i], [inn], [io] FROM [DNSI2].[dbo].[table10857]
--
INSERT INTO [DNSI1].[dbo].[table469]([kod_upak], [rez1], [kod_iz_ot], [rez2], [kod_iz_do], [rez3], [primen], [naim_izd], [pr_iz])
SELECT [kod_upak], [rez1], [kod_iz_ot], [rez2], [kod_iz_do], [rez3], [primen], [naim_izd], [pr_iz] FROM [DNSI2].[dbo].[table469]
--

с чего видно что данные с таблиц БД DNSI2 копируются в таблицы БД DNSI1. После выполнения процедуры я смотрю, данные в таблицах БД DNSI2 есть, а в DNSI1 - нет. Если выполнить этот кусок в ручную, то данные с DNSI2 будут скопмрованы в DNSI1
4 янв 13, 17:59    [13723171]     Ответить | Цитировать Сообщить модератору
 Re: Возвращение сообщения клиенту  [new]
Glory
Member

Откуда:
Сообщений: 104751
shanton
Сообщение было всегда, но клиент его не получал.

Не обрабатывал, вы хотите сказать.

shanton
После выполнения процедуры я смотрю, данные в таблицах БД DNSI2 есть, а в DNSI1 - нет.

Отсутствие данных не означает, что команды именно не выполнялись.
4 янв 13, 18:02    [13723180]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить