Доброго времени суток, Уважаемые..
вводные: 2к12(ОС)\907(сборка)\209(драйвер) + внешний sql2005(х32 на 2к8r2). ти каждый месяц создает(должен создавать) внешнюю базу по шаблону ti_11_2015.mdf, - база ti_12_2015.mdf создана не была(причина не обнаружена), биллингом использовалась предыдущая бд(ti_11_2015.mdf авто_созданная на 906 сборке), что привело к определенным последствиям.
необходимость: разделить данные базы ti_11_2015.mdf на две бд(как и должно быть)... может быть после этого разделения, отчеты, - худо-бедно, - начнут работать.
вопрос: каким одним(!) SQL запросом это(корректно разделить) можно сделать, если:
1. копирование данных из одной бд во вновь созданную(вручную) средствами "мастера импорта\экспорта sql" приводит к зависанию процесса на последней стадии(может проблема с ним, но данные, вроде, копируются и сохраняются, однако внутри новой базы есть ссылки на физические файлы источника копирования),
2. ручной(с помощью сценария "CREATE") перенос структуры бд в новую(создана вручную с нужным шаблонным названием в нужном месте) бд с последующим копированием содержимого всех таблиц базы источника средствами "мастера импорта\экспорта sql" приводит к уменьшению конечной бд до размеров в 25гб(к примеру: среднестатистическая месячная бд(для моей схемы) должна весить от 30 до 45гб(если очень грубо), база же "с двумя месяцами внутри" весит порядка 70гб), что может быть неверным(не уверен)..
согласно последнему варианту копирования данных выполняю удаление "лишних" данных внутри полученной бд запросом(ниже), имея ввиду что переменная @DateTo = N'30.11.2015 21:00:00' - указывает момент ДО которого данные должны удаляться(!):
в результате выполнения(достаточно быстрого даже для такого объема) получаем: в новой полученной бд сохранены данные ДО выбранного момента времени '30.11.2015 21:00:00', а не после(как, вероятно, и должно быть)... и как этот момент можно объяснить применительно к такому говорящему названию встроенной(!) хранимой процедуры: [dbo].[ClearDataOlderThatDate]([dbo].[очистка_данных_старее_выбранной_даты])?
вероятно в процедуре знак неверный(?):
и ее надо переименовать в [dbo].[ClearDataFollowingThatDate]?
и создавать рядом вторую дополнительную процедуру, с правильным знаком:
DmitryPC 2016-01-19 09:47:51
вводные: 2к12(ОС)\907(сборка)\209(драйвер) + внешний sql2005(х32 на 2к8r2). ти каждый месяц создает(должен создавать) внешнюю базу по шаблону ti_11_2015.mdf, - база ti_12_2015.mdf создана не была(причина не обнаружена), биллингом использовалась предыдущая бд(ti_11_2015.mdf авто_созданная на 906 сборке), что привело к определенным последствиям.
необходимость: разделить данные базы ti_11_2015.mdf на две бд(как и должно быть)... может быть после этого разделения, отчеты, - худо-бедно, - начнут работать.
вопрос: каким одним(!) SQL запросом это(корректно разделить) можно сделать, если:
1. копирование данных из одной бд во вновь созданную(вручную) средствами "мастера импорта\экспорта sql" приводит к зависанию процесса на последней стадии(может проблема с ним, но данные, вроде, копируются и сохраняются, однако внутри новой базы есть ссылки на физические файлы источника копирования),
2. ручной(с помощью сценария "CREATE") перенос структуры бд в новую(создана вручную с нужным шаблонным названием в нужном месте) бд с последующим копированием содержимого всех таблиц базы источника средствами "мастера импорта\экспорта sql" приводит к уменьшению конечной бд до размеров в 25гб(к примеру: среднестатистическая месячная бд(для моей схемы) должна весить от 30 до 45гб(если очень грубо), база же "с двумя месяцами внутри" весит порядка 70гб), что может быть неверным(не уверен)..
согласно последнему варианту копирования данных выполняю удаление "лишних" данных внутри полученной бд запросом(ниже), имея ввиду что переменная @DateTo = N'30.11.2015 21:00:00' - указывает момент ДО которого данные должны удаляться(!):
Код |
---|
<BR>USE [ti_12_2015]<BR>GO<BR><BR>DECLARE @return_value int<BR><BR>EXEC @return_value = [dbo].[ClearDataOlderThatDate]<BR> @ServerID = 1,<BR> @DateTo = N'30.11.2015 21:00:00'<BR><BR>SELECT 'Return Value' = @return_value<BR><BR>GO<BR><BR> |
в результате выполнения(достаточно быстрого даже для такого объема) получаем: в новой полученной бд сохранены данные ДО выбранного момента времени '30.11.2015 21:00:00', а не после(как, вероятно, и должно быть)... и как этот момент можно объяснить применительно к такому говорящему названию встроенной(!) хранимой процедуры: [dbo].[ClearDataOlderThatDate]([dbo].[очистка_данных_старее_выбранной_даты])?
вероятно в процедуре знак неверный(?):
Код |
---|
<BR>USE [ti_12_2015]<BR>GO<BR>/****** Объект: StoredProcedure [dbo].[ClearDataOlderThatDate] Дата сценария: 01/17/2016 12:01:27 ******/<BR>SET ANSI_NULLS ON<BR>GO<BR>SET QUOTED_IDENTIFIER ON<BR>GO<BR>ALTER PROCEDURE [dbo].[ClearDataOlderThatDate]<BR> @ServerID int,<BR> @DateTo datetime<BR>AS<BR>BEGIN<BR> SET NOCOUNT ON;<BR><BR> Delete from AdminGroupLog where ServerID = @ServerID and Time <strong>></strong> @DateTo<BR> Delete from AdminLog where ServerID = @ServerID and Time <strong>></strong> @DateTo<BR> Delete from AVLog where ServerID = @ServerID and Time <strong>></strong> @DateTo<BR> Delete from ContentRatingLog where ServerID = @ServerID and Time <strong>></strong> @DateTo<BR> Delete from CounterTrafficLog where ServerID = @ServerID and Time <strong>></strong> @DateTo<BR> Delete from ExtCounterLog where ServerID = @ServerID and Time <strong>></strong> @DateTo<BR> Delete from NetStatLog where ServerID = @ServerID and Time <strong>></strong> @DateTo<BR> Delete from ProxyLog where ServerID = @ServerID and Time <strong>></strong> @DateTo<BR> Delete from RatingLog where ServerID = @ServerID and Time <strong>></strong> @DateTo<BR> Delete from SearchQueriesLog where ServerID = @ServerID and Time <strong>></strong> @DateTo<BR> Delete from SMTPFltLog where ServerID = @ServerID and Time <strong>></strong> @DateTo<BR> Delete from SMTPSendLog where ServerID = @ServerID and Time <strong>></strong> @DateTo<BR> Delete from SMTPTraceLog where ServerID = @ServerID and Time <strong>></strong> @DateTo<BR> Delete from TariffLog where ServerID = @ServerID and Time <strong>></strong> @DateTo<BR> Delete from TerminsLog where ServerID = @ServerID and Time <strong>></strong> @DateTo<BR> Delete from UserBillLog where ServerID = @ServerID and Time <strong>></strong> @DateTo<BR> Delete from UserCounterLog where ServerID = @ServerID and Time <strong>></strong> @DateTo<BR> Delete from UserLog where ServerID = @ServerID and Time <strong>></strong> @DateTo<BR> Delete from UserStopSessLog where ServerID = @ServerID and Time <strong>></strong> @DateTo<BR> Delete from UserTrafficLog where ServerID = @ServerID and Time <strong>></strong> @DateTo<BR>END<BR> |
и создавать рядом вторую дополнительную процедуру, с правильным знаком:
Код |
---|
<BR>USE [ti_12_2015]<BR>GO<BR>/*** Объект: StoredProcedure [dbo].[ClearData<strong>Older</strong>ThatDateCorrect]Дата сценария: 01/17/2016 15:39:07***/<BR>SET ANSI_NULLS ON<BR>GO<BR>SET QUOTED_IDENTIFIER ON<BR>GO<BR>CREATE PROCEDURE [dbo].[ClearDataOlderThatDateCorrect]<BR> @ServerID int,<BR> @DateTo datetime<BR>AS<BR>BEGIN<BR> SET NOCOUNT ON;<BR><BR> Delete from AdminGroupLog where ServerID = @ServerID and Time <strong><</strong> @DateTo<BR> Delete from AdminLog where ServerID = @ServerID and Time <strong><</strong> @DateTo<BR> Delete from AVLog where ServerID = @ServerID and Time <strong><</strong> @DateTo<BR> Delete from ContentRatingLog where ServerID = @ServerID and Time <strong><</strong> @DateTo<BR> Delete from CounterTrafficLog where ServerID = @ServerID and Time <strong><</strong> @DateTo<BR> Delete from ExtCounterLog where ServerID = @ServerID and Time <strong><</strong> @DateTo<BR> Delete from NetStatLog where ServerID = @ServerID and Time <strong><</strong> @DateTo<BR> Delete from ProxyLog where ServerID = @ServerID and Time <strong><</strong> @DateTo<BR> Delete from RatingLog where ServerID = @ServerID and Time <strong><</strong> @DateTo<BR> Delete from SearchQueriesLog where ServerID = @ServerID and Time <strong><</strong> @DateTo<BR> Delete from SMTPFltLog where ServerID = @ServerID and Time <strong><</strong> @DateTo<BR> Delete from SMTPSendLog where ServerID = @ServerID and Time <strong><</strong> @DateTo<BR> Delete from SMTPTraceLog where ServerID = @ServerID and Time <strong><</strong> @DateTo<BR> Delete from TariffLog where ServerID = @ServerID and Time <strong><</strong> @DateTo<BR> Delete from TerminsLog where ServerID = @ServerID and Time <strong><</strong> @DateTo<BR> Delete from UserBillLog where ServerID = @ServerID and Time <strong><</strong> @DateTo<BR> Delete from UserCounterLog where ServerID = @ServerID and Time <strong><</strong> @DateTo<BR> Delete from UserLog where ServerID = @ServerID and Time <strong><</strong> @DateTo<BR> Delete from UserStopSessLog where ServerID = @ServerID and Time <strong><</strong> @DateTo<BR> Delete from UserTrafficLog where ServerID = @ServerID and Time <strong><</strong> @DateTo<BR>END<BR><BR> |