Можно ли добавить строку из базы данных в текстовый файл на сервере? - PullRequest
0 голосов
/ 02 июня 2010

У меня есть база данных sql-server 2008, которая находится на главном сервере.

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

Мне нужно, чтобы каждая новая вставка в базу данных через любой терминал - на сервере это

строка будет вставлена ​​в текстовый файл (каждая строка)

я могу это сделать?

заранее благодарен

1 Ответ

0 голосов
/ 02 июня 2010

Я бы порекомендовал использовать триггер после вставки, чтобы сделать это, есть несколько хороших примеров:

http://msdn.microsoft.com/en-us/library/ms189799.aspx

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

В качестве примера чего-то, что я быстро набрал:

create TRIGGER dbo.productTrigger
    on dbo.Product
    after insert
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    declare @data nvarchar(255);

    DECLARE dataCursor CURSOR FAST_FORWARD FOR 
        select ProductCode from inserted;

    OPEN dataCursor
    FETCH NEXT FROM dataCursor
    INTO @data

    WHILE @@FETCH_STATUS = 0 BEGIN
        declare @cmd sysname;
        set @cmd = 'echo ' + @data + ' >> c:\test\var_out2.txt';
        exec master..xp_cmdshell @cmd, NO_OUTPUT;

        FETCH NEXT FROM dataCursor
        INTO @data
    END

    CLOSE dataCursor;
    DEALLOCATE dataCursor;
END

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

Еще одна вещь, которую нужно иметь в виду, это то, что вам нужно включить xp_cmdshell, так как по умолчанию SQL-сервер отключил его, это делается с помощью:

EXEC master.dbo.sp_configure 'show advanced options', 1

RECONFIGURE

EXEC master.dbo.sp_configure 'xp_cmdshell', 1

RECONFIGURE
go

И, наконец, последнее, что я заметил, это то, что когда я получал эхо-сигнал для c: \ var_out2.txt, он давал мне «Отказано в доступе», однако, когда я менял его на c: \ test \ var_out2.txt, он работал нормально. , Так что имейте это в виду тоже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...