2016-08-06 2 views
0

Я уверен, что это, вероятно, SQL 101, но поиски Google продолжают находить записи о создании логинов. Позвольте мне дать краткий обзор.Создание файлов журнала в SQL Server 2012

Я перешел в SQL-отчеты из общей ИТ-поддержки в результате необходимости более подробных отчетов, чем могут предоставить наши системы. Моя компания управляет центрами досуга, и мы очень используем 3 системы управления досугом на 70 сайтах. Все 3 основаны на SQL, но выполняют ту же работу по-разному. Я создал множество отчетов в SSRS, но 2 или 3 я сделал, что доступ ко всем системам очень, очень трудоемкий, и только одна ссылка вниз означает, что весь отчет недоступен.

Запрос на отправку данных третьим лицам для целей маркетинга заставил нас наконец-то взглянуть на централизованную передачу данных из всех систем, чтобы облегчить отчетность. Всего будет только 2 таблицы - 1 для деталей членства и один для действий. Я проделал большую часть создания представления, которое выводит одну и ту же информацию из каждой из трех систем и настраивает центральную базу данных, чтобы вернуть данные. У меня будет хранимая процедура, запущенная в каждой системе, которая будет заполнять таблицу записями с предыдущего дня. Затем на центральном сервере будет задание, которое скопирует данные из этих таблиц и удалит их после переноса. Пока что (относительно) просто.

Проблема в том, что центральный сервер будет пытаться получить данные из более чем 60 серверов - все с их собственными сетевыми ссылками. Некоторые сайты удалены с плохими DSL-соединениями, поэтому будут случаи, когда некоторые данные не могут быть скопированы запланированным заданием. Я рад, что задание агента SQL может иметь эти шаги, а одно сбойное соединение не остановит весь процесс, но я обеспокоен тем, что устранение неполадок, когда что-то пойдет не так, будет сложно, если я не получу какой-то журнал.

Хранимые процедуры, хотя сложные SQL-мудрые - это просто обновления/вставки записей. Что было бы полезно, так это то, что задание обновления записывает в файл журнала, сообщая, что оно затронуло 20 строк. И вложенное задание затронуло 100 строк. Основные вещи, но я понятия не имею, как я это делаю. Что также было бы полезно, это какое-то предупреждение, когда один из шагов выходит из строя. Агент SQL поможет, но я хочу построить как можно большую устойчивость, пока я на третьем уровне сервера, прежде чем перейти к серверу на 60+.

Любые указатели в правильном направлении были бы очень признательны. Мои навыки SQL изучаются самостоятельно (с большим количеством справки по переполнению стека!), И хотя за последние пару недель я много узнал о создании сложных представлений и запросов, большинство моих SQL-запросов были только для SSRS, так что все это новый для меня.

Большое спасибо.

ответ

0

output clause предоставит вам то, что вы хотите для регистрации. То, что он позволяет вам делать, - это захватить то, что делает ваше заявление. Ниже приведен пример того, как выполнять обновление и фиксировать изменения в таблице ведения журнала.

Что касается обработки ошибок и устойчивости, я бы рассмотрел использование SSIS для выполнения вашего ETL. SSIS предоставляет вам гораздо более надежный набор функций для обработки ошибок.

-- Create Temp Tables 
CREATE TABLE #myLog 
(
    id int, 
    oldVal int, 
    newVal int 
); 

CREATE TABLE #myTable 
(
    id int, 
    val int 
); 

-- Add Values to #myTable 
INSERT INTO #myTable VALUES 
(1, 1234), 
(2, 1234); 

-- Output Contents of #myTable 
SELECT * FROM #myTable; 

-- Update #myTable & Capture Changes 
UPDATE #myTable 
SET val = 12345 
OUTPUT 
    inserted.id, 
    deleted.val, 
    inserted.val 
    INTO #myLog 
WHERE id = 2 

-- Output Contents of #myTable and #myLog 
SELECT * FROM #myTable 
SELECT * FROM #myLog 

-- Drop Temp Tables 
DROP TABLE #myLog 
DROP TABLE #myTable 
+0

Большое спасибо - дает мне только информацию, чтобы начать копаться вокруг, которую я искал. – DaveBulwer

+0

Подумал о концепции, и теперь у вас есть хорошая таблица журналов со списком уникальных ссылок и были ли они вставлены или обновлены вместе с датой и временем. Только то, что я хотел - еще раз спасибо. Просто жаль, что это не позволит мне дать вам репутацию, поскольку я недостаточно высоко. – DaveBulwer

Смежные вопросы