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

Откуда:
Сообщений: 402
Здравствуйте . Не может ли мне кто - нибудь подсказать как на сервере SQL 2000 организовать на уровне триггера выгрузку данных в текстовый файл, которая должна происходить всякий раз при добавлении новой строки , или подскажите как это сделать лучше...
Заранее благодарю
9 сен 11, 09:58    [11251778]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
Добавить данные в таблицу,
а дальше
declare 
@cmd varchar(1000),
@result as int

set @cmd='bcp "select * from test.dbo.af" queryout c:\ttest.txt -t -C RAW -c -T'
set nocount off --подавляем вывод результирующих строк
EXEC @result= master..xp_cmdshell @cmd,no_output
if @result=0 print 'OK'
9 сен 11, 10:46    [11252147]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
Guf
Member

Откуда: Новосибирск
Сообщений: 659
Даниил Пакоv,

faq 1 Вывод во внешний файл XML запроса
faq 2 Вывод во внешний файл результатов запроса

А обязателно это делать именно в тригере? Может быть достаточно джоба, который будет выгружать новые данные с определенной переодичностью?
9 сен 11, 10:46    [11252150]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
Даниил Пакоv
Member

Откуда:
Сообщений: 402
Код приведенный выше , у меня не сработал... что это может значить?
9 сен 11, 11:21    [11252422]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Даниил Пакоv
Код приведенный выше , у меня не сработал... что это может значить?
Что надо почитать сообщение об ошибке.
9 сен 11, 11:28    [11252496]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
Даниил Пакоv
Member

Откуда:
Сообщений: 402
В том то и дело, что ошибка не возникает
9 сен 11, 11:55    [11252785]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
Glory
Member

Откуда:
Сообщений: 104751
Даниил Пакоv
В том то и дело, что ошибка не возникает

а происходит "зависание" ? потому что вызов bcp в триггере открывает новую сессию, которая обращается к записям, которые еще блокированны этим же триггером
9 сен 11, 12:04    [11252871]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
Даниил Пакоv
Member

Откуда:
Сообщений: 402
Нет зависание не происходит, просто мой код не работает, может ошибку сделал?

declare
@cmd varchar(1000),
@result as int

set @cmd='bcp "select top 100 * from dbo.РеестрКассовыхПлатежей" queryout c:\trest.txt -t -C RAW -c -T'
set nocount off --подавляем вывод результирующих строк
EXEC @result= master..xp_cmdshell @cmd,no_output
if @result=0 print 'OK' else
Print '...'

Где РеестрКассовыхПлатежей моя таблица
9 сен 11, 12:09    [11252928]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
а такая команда выполняется
master..xp_cmdshell 'dir C:\'

если нет, то это должно помочь
EXEC sp_configure 'show advanced options', 1 
GO 
RECONFIGURE
GO 
EXEC sp_configure 'xp_cmdshell', 1 
GO
RECONFIGURE 

автор
а происходит "зависание" ? потому что вызов bcp в триггере открывает новую сессию, которая обращается к записям, которые еще блокированны этим же триггером

Glory
Использовать CLR ?
9 сен 11, 12:09    [11252934]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
Glory
Member

Откуда:
Сообщений: 104751
Даниил Пакоv
Нет зависание не происходит, просто мой код не работает, может ошибку сделал?

т.е. вы специально подавили выпод сообощений от bcp, чтобы не знать, какая ошибка происходит ?
9 сен 11, 12:11    [11252948]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
Glory
Member

Откуда:
Сообщений: 104751
trew
автор
а происходит "зависание" ? потому что вызов bcp в триггере открывает новую сессию, которая обращается к записям, которые еще блокированны этим же триггером

Glory
Использовать CLR ?

а CLR что не откроет новую сессию ?
9 сен 11, 12:12    [11252954]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Даниил Пакоv, а где вы файл ищите? Надеюсь на сервере?
9 сен 11, 12:17    [11252994]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
Даниил Пакоv
Member

Откуда:
Сообщений: 402
master..xp_cmdshell 'dir C:\' работает, файл ищу конечно на сервере... :(
9 сен 11, 12:42    [11253170]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
sphinx_mv
Member [заблокирован]

Откуда:
Сообщений: 1672
trew

автор
а происходит "зависание" ? потому что вызов bcp в триггере открывает новую сессию, которая обращается к записям, которые еще блокированны этим же триггером

Glory
Использовать CLR ?

Я правильно понял, что в исходном вопросе звучало про SQL2000, а предлагаемый Вами CLR - Common Language Runtime?
Это в-общем случае, достаточно не тривиальная, но (в-принципе) реализуемая задача...
9 сен 11, 13:00    [11253320]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
Даниил Пакоv
Member

Откуда:
Сообщений: 402
Да, речь идет о sql 2000
9 сен 11, 13:11    [11253403]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31978
sphinx_mv
trew
пропущено...

Glory
Использовать CLR ?

Я правильно понял, что в исходном вопросе звучало про SQL2000, а предлагаемый Вами CLR - Common Language Runtime?
Это в-общем случае, достаточно не тривиальная, но (в-принципе) реализуемая задача...
Как же реализуемая, если таблица заблокирована :-)
9 сен 11, 13:12    [11253418]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31978
alexeyvg
sphinx_mv
Это в-общем случае, достаточно не тривиальная, но (в-принципе) реализуемая задача...
Как же реализуемая, если таблица заблокирована :-)
Это если из CLR вызывать bcp

А вообще конечно можно выгружать из CLR просто в коде на C#. Тогда можно использовать текущее соединение.

Однако задача странная. Лучьше, по моему, выгружать периодически в джобе.
9 сен 11, 13:14    [11253436]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
Даниил Пакоv
Member

Откуда:
Сообщений: 402
Кстати , при выполнении кода
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE

ругается так :
Configuration option 'show advanced options' changed from 0 to 1. Run the RECONFIGURE statement to install.
Server: Msg 15123, Level 16, State 1, Procedure sp_configure, Line 79
The configuration option 'xp_cmdshell' does not exist, or it may be an advanced option.

Valid configuration options are:

я так понимаю речь идет об отсуствии xp_cmdshell как установить?
9 сен 11, 13:34    [11253624]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
Даниил Пакоv,
USE [master]
go
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE 
9 сен 11, 13:43    [11253693]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
Даниил Пакоv
Member

Откуда:
Сообщений: 402
Все равно ругается
The configuration option 'xp_cmdshell' does not exist, or it may be an advanced option.
9 сен 11, 13:47    [11253722]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
Даниил Пакоv,

проверим версию
SELECT @@VERSION
9 сен 11, 13:55    [11253802]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
Даниил Пакоv
Member

Откуда:
Сообщений: 402
Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
9 сен 11, 13:58    [11253844]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
sphinx_mv
Member [заблокирован]

Откуда:
Сообщений: 1672
alexeyvg
sphinx_mv
пропущено...

Я правильно понял, что в исходном вопросе звучало про SQL2000, а предлагаемый Вами CLR - Common Language Runtime?
Это в-общем случае, достаточно не тривиальная, но (в-принципе) реализуемая задача...
Как же реализуемая, если таблица заблокирована :-)


Начнем с того, что непосредственно SQL2000 не поддерживает использование CLR. Для расширения его функциональности можно написать соотвествующую расширенную хранимую процедуру - нужно знать С/С++ и разобраться с SDK... При написании расширенных СП для 2000-го с использованием CLR (.NET) могут понадобится услуги профессионального шамана с бубном... "Давным-давно" какое-то количество экспериментов закончилось необходимостью правки заголовков у получившихся dll-ок... Эта идея показалась избыточным извращением и была благополучно похоронена...

И по поводу блокировок...
Для исходной постановки задачи - логирование изменений триггером нужна расширенная хранимая процедура, которая умеет писать в некоторый файл некоторый текст... В теле триггера пробежались по inserted/updated, слепили в нужном виде "колбасу" из полей, которые нужно залогировать, вызвали эту XP с именем файла и "колбасой" в качестве параметров, и на этом успокоились... :-)
9 сен 11, 14:04    [11253915]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
Даниил Пакоv,

В базе master дать роли public право на выполнение xp_cmdshell
9 сен 11, 14:10    [11253961]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных в текстовый файл  [new]
Даниил Пакоv
Member

Откуда:
Сообщений: 402
К сожелению, в базе master xp_cmdshell нет, подсказал бы кто, как установить...
9 сен 11, 14:27    [11254115]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить