Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» Microsoft SQL SERVER

Автор: bigsloth
Дата сообщения: 16.11.2009 12:22
Le_Cri
Если у вас простая (SIMPLE) модель восстановления - рост журнала транзакций вызван наличием незавершенной транзакции. Используйте DBCC OPENTRAN
Если модель восстановления полная (FULL) или с неполным протоколированием (BULK-LOGGED), причина, скорее всего в том, что вы не делаете резервные копии журнала транзакций. Регулярное резервное копирование избавит вас от необходимости вручную уменьшать размер. Если бэкапы делаются, а журнал растет - проблема, возможно, так же в незаврешнных транзакциях. Хотя и может быть вызвана проблемами с репликацией, зеркалированием и прочим.
Для того, чтобы уменьшить размер журнала используйте следующее:
BACKUP LOG [your_db] WITH TRUNCATE_ONLY
use [your_db]
DBCC SHRINKFILE (your_log_logical_name, needed_size, TRUNCATEONLY)
Только учтите, что это прервет цепочку восстановления, если вы, конечно, делаете, бэкапы журнала.
Автор: M_Volkov
Дата сообщения: 16.11.2009 12:41
Le_Cri
c 2000-м давно не работал, пишу для 2008, но суть та же:
1. Прежде чем сжимать базу, надо сделать бэкап журнала транзакций:
Выбираешь нужную базу, делаешь "Задачи/Создать резервную копию...", тип резервной копии выбираешь "Журнал транзакций" (это быстрее, не поможет - "Полная")
2. Сжатие: делаешь "Задачи/Сжатие/База данных". Смотришь "Доступное свободное место" %, и в "Максимальное доступное свободное место после сжатия" вводишь половину (для начала) этого значения. Сжимаешь...
3. Открываешь базу в обычном режиме, ждешь 15-20 мин. (зависит от объема), должна произойти реорганизация базы - выделенное свободное место для транзакций должно сжаться, уменьшиться файл "base"_log.ldf
Далее повторяешь с уменьшением "Максимальное доступное свободное место после сжатия"... и так до 5-10%, меньше не надо - упадет производительность.

Добавлено:
bigsloth правильно советует, настрой в заданиях регулярный бэкап журнала транзакций (каждые 2-3 часа), а на ночь - полный бэкап (до кучи и сжатие можно задать)... проблемы со сжатием тогда не будет.
Автор: Serg0FFan
Дата сообщения: 18.11.2009 10:01
Уважаемые, помогите советом.
Есть Windows Server 2008 R2 Enterprise, хочу установить SQL Server 2008 SP1 x86 на него, ругается что нужен .NET Framework 3.5 SP1
Но 3.5 вроде как уже присутствует в R2? Что делать?
Автор: Core
Дата сообщения: 18.11.2009 10:31
по умолчанию в R2 он не ставится - ручками потом добовляется
Автор: M_Volkov
Дата сообщения: 18.11.2009 10:39
Serg0FFan

Цитата:
ругается что нужен .NET Framework 3.5 SP1

А конкретно, как? Если при проверке пишет: "Безопасность приложений Microsoft .NET Неприменимо", то не обращай внимания... как-то я спрашивал тут... тишина...
Меня удивляет твоя комбинация х64 ОС с х86 SQL!?
Автор: Serg0FFan
Дата сообщения: 18.11.2009 11:42
M_Volkov
не, не так ругается, требует просто 3.5 SP1 и все тут.
Комбинация... а может в ней дело?
Да забыл дистриб из дома притащить под x64, но зудит опробовать, вот решил на том что есть: х86
Автор: Le_Cri
Дата сообщения: 20.11.2009 13:06
M_Volkov
bigsloth
Спасибо, ваши советы помогли.
Разрешите ещё у вас проконсультироваться касательно настройки бэкапа.
как сделать, что бы после полного бэкапа выполнялось сжатие
Автор: Serg0FFan
Дата сообщения: 20.11.2009 14:33
M_Volkov
Спасибо за понимание Версия х64 установилась на ура, теперь следующий вопрос: как установить минимальную
версию сабжа, чтобы взлетела база под 1С Предприятие 8.1 на нём? Спасибо.
Автор: M_Volkov
Дата сообщения: 20.11.2009 14:40
Le_Cri
Да я сам то не sa, а 1С-ник, но там, в SQL, ничего сложного, настраивается как любое назнаненное задание. Делаешь задания для для одной базы (например, Tune - Торговля) получаешь примерно следующее на языке SQL (я его не знаю, только чуть-чуть):
1. Периодическое резервное копирование журналов транзакций (каждые 2-3 часа)
BACKUP LOG [Tune] TO [TuneLog] WITH NOINIT , NOUNLOAD , NAME = N'Tune Log', NOSKIP , STATS = 10, DESCRIPTION = N'Резервное копирование журнала транзакций БД Торговля', NOFORMAT, NO_TRUNCATE
2. Создание полных резервных копий БД (ночью)
BACKUP DATABASE [Tune] TO [TuneFull] WITH INIT , NOUNLOAD , RETAINDAYS = 1, NAME = N'Tune Full', NOSKIP , STATS = 10, DESCRIPTION = N'Полная резервная копия БД Торговля', NOFORMAT
3. Сжатие БД (ночью)
DBCC SHRINKDATABASE (N'Tune', 10,TRUNCATEONLY)

Потом увеличиваешь число шагов по количеству баз, копируешь в них эту же строку, только с заменой имен баз. Создание полных резервных копий и Сжатие БД я в одно задание объединил, разнес по шагам.

Добавлено:
Serg0FFan

Цитата:
как установить минимальную версию

в смысле Standard или Enterprise? Это зависит, сколько памяти хочешь задействовать... А по составу компонент, большого выбора и нет - всего одну галочку снять можно, я не рискнул... Когда Cumulative update package 4 for SQL Server 2008 Service Pack 1 ставил, было предложено SharePoint поставить, но для 1С Предприятие 8.1 он не нужен, в 1С Предприятие 8.2 вроде бы понадобится, там Web и ThinClient (Тонкий клиент) в платформу встроен...
Автор: Serg0FFan
Дата сообщения: 20.11.2009 15:51
M_Volkov
Понял, спасибо. Получается надо Enterprise ставить, чтобы использовать больше 4 гигов.
Автор: bigsloth
Дата сообщения: 23.11.2009 05:46
Le_Cri
если вы базу один раз сжали, а она на следующий день снова выросла - не сжимайте, позвольте SQL Server'у самому определить сколько места для хранения данных ему потребуется. Автоприращение файла данных (как, впрочем, и журнала транзакций) считается довольно затратной по ресурсам операцией.

Serg0FFan
Standard тоже поддерживает файлы данных > 4GB. Enterprise может понадобиться в том случае, если БД очень большая и понадобится секционирование, online-перестройка индексов и прочее.
http://www.microsoft.com/Sqlserver/2005/en/us/compare-features.aspx
http://www.microsoft.com/Sqlserver/2005/en/us/enterprise-compare-editions.aspx
Автор: M_Volkov
Дата сообщения: 23.11.2009 08:36
bigsloth

Цитата:
Standard тоже поддерживает файлы данных > 4GB. Enterprise может понадобиться в том случае...

Это высказывание справедливо для 32-х разрядных систем, в частности Win2008 x86? И возможна ли комбинация Win2008 Standard c SQL2008 Enterprise (как для x86, так и для x64)?
Зачем такая странная комбинация... в соседней ветке обсуждается вопрос работы старого продукта 1Cv77 (не предназначенного для х64 систем), и похоже участники этого обсуждения 1С-ники озадачены работой только 1Cv77. А мне хотелось бы найти компромиссный вариант: оптимальная работа нового продукта 1Cv82 x64, и при этом сохранить работоспособность старого продукта 1Cv77 (пусть не оптимальную, лишь бы доступ был к архивным базам) в терминале!?
Автор: bigsloth
Дата сообщения: 23.11.2009 11:03
Для файлов данных справедливо. Ограничение на размер файлов данных, ЕМНИП, есть только в Express Edition.
Вопрос про связку Win2008 и SQL Server 2008 не совсем понял. Если будете ставить и то, и другое x64 (либо x86) - проблем не должно возникнуть. В противном случае не подскажу - наверное только эксперимент вам поможет (:.
Автор: M_Volkov
Дата сообщения: 23.11.2009 13:21
bigsloth

Цитата:
про связку Win2008 и SQL Server 2008 не совсем понял

1. Win2008 х86 Enterprise и SQL Server 2008 х86 Enterprise - есть сомнение, что будет использоваться (не только видеть) > 4GB
2. Win2008 х64 Standard и SQL Server 2008 х64 Enterprise - такая комбинация возможна, какое ограничение будет по памяти? (На Win2008 х64 Enterprise 1Cv77 в терминале точно не работает)
Автор: bigsloth
Дата сообщения: 23.11.2009 13:35
1. Никогда не сталкивался с PAE и AWE, но теоретически, должно помогать. По ссылке описание - как выбрать режим под имеющееся оборудование http://blogs.technet.com/beatrice/archive/2008/08/29/3gb-pae-and-awe-taking-away-some-confusion.aspx.
2. SQL Server увидит всю память, доступную Win2008. Standard, если верить википедии, увидит до 32-х гигабайт.
Автор: ManBot
Дата сообщения: 26.11.2009 13:11
Доброго времени суток, коллеги.
Надумали мы переходить с 2000 на 2008 SQL
Ставил раз -надцать... нужен хелп.

Итак, вводные данные:
OS: MS Win 2003EE R2 x86
SQL: Microsoft SQL Server 2008 x86

Скачал и установил предварительно:
1. msxml6_x86.msi
2. Windows Installer 4.5 Redistributable
3. dotnetfx35.exe (он докачивает до SP1 чегойта)

Аппаратная часть - всё гуд. Всего хватает. Для справки - на железе стоит VMWare vSphere...

Ставил с указанием разных учётных данных для запуска служб, вплоть до доменного Админа.
По итогу имею такие ошибки:

и


Прошу помочь разобраться с траблой... Ато даже потестить не получается.
Автор: raw1
Дата сообщения: 28.11.2009 07:10
Скажите пожалуйста, почему в шапке последний Service Pack - 2 для Microsoft SQL Server 2005, а не 3?
И можно ли установить сразу последний или обязательно в порядке очереди? Размер то вроде увеличивается с каждым номером.
Автор: sharerapid
Дата сообщения: 28.11.2009 09:41
raw1
SP - кумулятивный, т.е. для установки последнего наличие предыдущих не требуется.
Автор: Serg0FFan
Дата сообщения: 28.11.2009 10:35
Уважаемые, подскажите, кто сталкивался, какой минимальный набор компонентов MS SQL 2005 Enterprise RUS x86 необходимо установить для нормальной работы в 1С 8.1 под сабжем? Чтобы ничего лишнего не ставить и чтобы была установлена SQL Management Studio, так же была возможность делать мгновенные снимки баз, для дальнейшего резервного копирования?
Заранее спасибо.
Автор: M_Volkov
Дата сообщения: 02.12.2009 11:01
Serg0FFan
Если за Standard брать пол-литра, то чекушкой Express будет, а Enterprise - на литр тянет...
А по составу компонент, при установки Enterprise
Цитата:
большого выбора и нет - всего одну галочку снять можно, я не рискнул...
попробуй сам... только отпишись потом.

Добавлено:
Вообще-то я про SQL 2008 писал, а насчет SQL 2005 - не помню... По моему
Цитата:
...чтобы взлетела база под 1С Предприятие 8.1 на нём
от состава компонент не зависит... Ну, если только в 1С модули вставлять на языке SQL для оптимизации запросов.
Автор: Serg0FFan
Дата сообщения: 02.12.2009 21:13
M_Volkov
Поставил все, на всякий, потом по компонентно удалял не очень нужное.
Notification services например. Некоторые компоненты можно удалить не полностью а частично, кнопка Дополнительно и там крестиком указываешь что это не нужно. Visual Studio 2008 удалось "убрать" поставив "крестик" гдето в комопненте дрля рабочих станций (точно не помню как называется). Но так же и пропало чета там про surface, не знаю нужен он или нет. SQL Menegament Studio работает, все ок. Вот вопрос как мгновенные снимки базы делать? Большой вопрос. Есть идея, на лету (раз позволяет энтерпрайз эдишн), делать снимок базы и потом спокооооойненько, и не быыыстро дампить его на диск и далее уже удалять снимок этот. Т.е. получаем полностью рабочую копию базы и без всяких несоответсвий. Вот как бы реализовать это?
Автор: bigsloth
Дата сообщения: 03.12.2009 04:36
http://www.kodyaz.com/articles/create-sql2005-database-snapshot.aspx
А зачем вам делать бэкап со снапшота? SQL Server прекрасно умеет бэкапить базы при работе пользователей в них.. Львиная доля данных все равно будет копироваться с "основной" БД - значит, скорее всего, производительность дисковой подсистемы вы, таким образом, не улучшите..
Автор: Serg0FFan
Дата сообщения: 03.12.2009 11:04
bigsloth
А при копировании обычными средствами SQL 2005, не будет ситуации когда скопированная база будет не согласованна?
Т.е. в момент копирования кто-то внес изменения в базу затрагивающие таблицы которые уже были скопированы, но
без этих изменений, и таблицы которые копируются с изменениями (позже), такая ситуация возможна?
Копирую с помощью скрипта:
osql -Usa -P******* -i C:\Bin\1c\2\sqlscript.sql -o C:\Bin\1c\logs\dumps_and_shrink.log
Вот содержимое файла C:\Bin\1c\2\sqlscript.sql :

Код:
USE master
DECLARE @folder nvarchar(3000)
SET @folder = 'S:\!copy!\SQLBack\Tmp'
-- + CONVERT(varchar, GetDate(), 104)
DECLARE @path nvarchar(4000)

SET @path = @folder+'\work_firma_texno.bak'
BACKUP DATABASE work_firma_texno TO DISK = @path
DBCC shrinkdatabase(work_firma_texno);
CHECKPOINT;
BACKUP Log work_firma_texno WITH TRUNCATE_ONLY

SET @path = @folder+'\work_pk_texno.bak'
BACKUP DATABASE work_pk_texno TO DISK = @path
DBCC shrinkdatabase(work_pk_texno);
CHECKPOINT;
BACKUP Log work_pk_texno WITH TRUNCATE_ONLY

SET @path = @folder+'\zup_ooo_texno.bak'
BACKUP DATABASE zup_ooo_texno TO DISK = @path
DBCC shrinkdatabase(zup_ooo_texno);
CHECKPOINT;
BACKUP Log zup_ooo_texno WITH TRUNCATE_ONLY
Автор: bigsloth
Дата сообщения: 03.12.2009 12:20
При использовании команды BACKUP DATABASE вы всегда получаете согласованную копию. При начале бэкапа sql server сделает "пометку" в журнале транзакций о начале, при окончании - еще одну и допишет все изменения


Цитата:
SQL Server использует оперативный процесс резервного копирования, что позволяет создавать резервную копию базы данных во время ее использования. Во время резервного копирования можно производить большинство операций. Например, во время создания резервной копии разрешены инструкции INSERT, UPDATE и DELETE

http://msdn.microsoft.com/ru-ru/library/ms186865.aspx

Для создания бэкапов используйте maintenance plan (в узле Managment в SMSS). Там есть готовый блок "backup database" - можно выбрать какие базы и куда копировать, создавать расписание.
DBCC SHRINKFILE лучше не использовать. Только если у вас серьезные проблемы с жестким диском (точнее местом на нем). Операции автоувеличения файла данных, как и журнала транзакций, считаются очень затратными с точки зрения ресурсов.
Для того, чтобы журнал транзакций не рос - делайте его резервные копии, либо устанавливайте базе данных recovery model = simple, если у вас стоит full и резервное копирование журнала транзакций не производится - разницы никакой не будет, на какой-то момент времени вы не восстановитесь, только с последнего full-бэкапа.

+CHECKPOINT можете не вызывать. При выполнении BACKUP DATABASE\LOG он должен вызваться сам.
Автор: M_Volkov
Дата сообщения: 03.12.2009 13:10
Serg0FFan

Цитата:
Наверняка как то можно красиво это оформить штатными средствами SQL 2005 через планы и пр. Некогда разбираться...

Открой Агент SQL Server/Задания, "расставь галочки"... это проще, чем скрипты писать!
Даже не зная SQL языка, сценарии Transact-SQL для команд шага можно получить заранее. Например, делаешь полный бэкап базы в ручную, задал все параметры копирования, нажал кнопку "Сценарий" (возле "Справка") - сценарий команды готов! То же самое для бэкапа журнала транзакций, и сжатия базы. В расписаниях указываешь: для бэкапа журнала транзакций - каждые 2-3 часа, для полного бэкапа и сжатия - один раз ночью, можно задать одним заданием в два шага (сжатие может и не понадобиться, если бэкапы будут регулярные). Вроде я уже писал это, см. пред. стр...
Автор: Serg0FFan
Дата сообщения: 03.12.2009 13:30
bigsloth
Огромное спасибо
Еще вопрос: можно о "+" и "-" моделей full и simple рассказать?
Если у меня 3 базы и все переведу в simple, то чем мне это грозит?

Добавлено:
M_Volkov
Спасибо

Добавлено:
И еще вопрос к гуру На Windows Server 2003 (x86) + SP2 + последние хотфиксы, установил память 8Гб, в boot.ini добавил ключик /PAE, всю память видит, но!
SQL 2005 как то не особо активно её использует. Пик выделенной памяти системой больше 3.3Гб не превышает никогда. Я так понимаю что сабжу чем больше памяти тем лучше, так вот как бы его заставить использовать побольше памяти, чтобы зря не простаивала она в материнке
Автор: bigsloth
Дата сообщения: 03.12.2009 16:39

Цитата:
Еще вопрос: можно о "+" и "-" моделей full и simple рассказать?

Тут в трех словах не расскажешь, но я постараюсь.
Многие почему-то думают, что если использовать модель simple, то в журнал транзакций попадает намного меньше записей, чем при использовании модели full. Это не совсем верно, поскольку при модели восстановления simple (как и bulk-logged) в журнал транзакций не попадает очень малая часть операций - такие как SELECT .. INTO, либо, например, информация о ALTER INDEX .. REBUILD. Точнее не "не попадает", а попадает небольшая часть этой информации.
Самое большое отличие между full и simple то, что при использовании модели simplе, sql server сам очищает журнал транзакций, т.е. помечает неактивную часть журнала как "свободную" для повторного использования (при CHECKPOINT'e). При использовании модели восстановления full вам нужно заниматься этим самостоятельно (что вы и делали - BACKUP LOG WITH TRUNCATE_ONLY - просто усекали неактивную часть без, собственно, создания резервной копии). Т.е., если не хотите ничего менять - модель восстановления simple вас полностью устроит - лог вырастет до своего "оптимального" размера и остановится - будет использоваться циклически. Чтобы использовать "все прелести" модели восстановления full - делайте резервные копии журнала транзакций (каждые 30 мин\1 час\2\... - в зависимости от требований бизнеса).
При наличии full-бэкапа и следующих за ним резервных копий журнала транзакций вы можете восстановить БД на любой момент времени. Путем разворачивания полной резервной копии и "накатывания" сверху копий журнала транзакций, с указанием момента остановки. Процедуру лучше прочитать в BOL - я вряд ли смогу все точно описать .
Так что, если вас устроит потеря данных за день, в случае серьезного сбоя (поскольку полные бэкапы вы делаете раз в сутки), то можете ставить модель симпл и больше не вспоминать про журнал транзакций..


Цитата:
Пик выделенной памяти системой больше 3.3Гб не превышает никогда

А как вы проверяете? Если через диспетчер задач, то, говорят, что он может выдавать неверные данные. Попробуйте посмотреть в perfmon'e. Плюс, у вас, случайно, не стоит ограничение на использование оперативной памяти в настройках SQL Server?
Автор: Serg0FFan
Дата сообщения: 03.12.2009 16:51
bigsloth
в свойствах сервера, закладка Память:


Код: раздел Параметры памяти сервера
Использовать AWE для выделения памяти: 1 //не знаю нужно ли это, на всякий поставил, по дефолту стояло 0
Минимальный размер памяти сервера (Мб): 0
Максимальный размер памяти сервера (Мб): 2 147 483 647

раздел Прочие параметры памяти
Память для создания индекса (Кб, 0 = динамическая память)
Минимальный объем памяти для запроса (Кб): 1024
Автор: bigsloth
Дата сообщения: 04.12.2009 04:13

Цитата:
то при модели full, возможен вариант создания копии
как это делается на Windows Server 2003 например, с помощью стандартной утилиты Архивация данных?

Я, честно говоря, не знаю как работает "Архивация данных", но для создания бэкапов sql server лучше использовать сам sql server.


Цитата:
Вернее чуть чуть не так, отдельная ПОЛНАЯ копия базы и последующая накопительная копия журнала транзакций данной базы.

Да, примерно так. По ссылке описан процесс восстановления БД с использованием резервных копий журнала. Желательно хорошо представлять как они используются, чтобы не оказаться в ситуации когда есть и полные бэкапы, и резервные копии журналов, а восстановиться с них нельзя .
Плюс, даже в модели simple возможно создание дифференциальных бэкапов, которые являются как раз накопительными и в каждый следующий бэкап попадают ВСЕ изменения в БД, совершенные после создания full-бэкапа. Но восстановиться с них можно только на момент создания этого бэкапа (бэкап журнала транзакций созданного, например, в 8:00 позволит вам восстановиться и на 8:00, и на 7:39, если возникнет такая необходимость).


Цитата:
Что можно улучшить?

А вот тут уже не знаю. Память вы разрешаете использовать по-максимуму. Может быть sql server'у просто больше и не надо? Последите за счетчиком BufferManager: Buffer cache hit ratio. Если его значение стабильно >=90 (даже 99), то скорее всего проблемы нет и когда серверу потребуется больше памяти, он ее возьмет.
Автор: Akam1
Дата сообщения: 04.12.2009 08:17
Подскажите, пожалуйста, от чего примерно может разрастись системная база tempdb до 20Гб и самое главное - почему она не сжимается? SQL 2008.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Измерение скорости сети LAN - все программы


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.