|
Страница 1 из 4
1. Что такое SQL Server Enterorise Manager? 2. Что такое QA? 3. Что такое BOL? 4. Какие особенности 1С при доступе к MS SQL Server 2000? 5. Как установить или конвертировать конфигурацию с dbf версии в SQL версию базы данных? 6. Как изменить тип авторизации доступа к SQL Server? 7. Как создать базу для 1С на SQL Server? 8. Как поменять владельца базы SQL? 9. Как переиндексировать базу на MS SQL Server? 10. Как проверить (восстановить) базу на MS SQL Server средствами сервера 11. Как упаковать (зашринковать) базу на MS SQL Server? 12. Как упаковать (дефрагментировать) индексы базы на MS SQL Server?
13. Как уменьшить рост журнала транзакций базы на MS SQL Server? 14. Как скопировать базу 1С, работающую с базой БД в формате MS SQL Server? 15. Как изменить место размещения файлов базы tempdb MS SQL Server? 16. Как узнать логин и пароль подключения 1С к MS SQL Server? 17. Как узнать размер таблиц в базе данных MS SQL Server 18. При старте 1С, или при попытке открытия конфигурации выдается сообщение "SQL State: 24000 Native: 0 Message: [Microsoft] [ODBC SQL Server Driver] Invalid cursor state" 19. При попытке монопольно войти в 1С или при записи конфигурации выдается сообщние "База данных не может быть открыта в однопользовательском режиме" 20. Как узнать какой сервис-пак установлен на SQL Server 2000 или SQL Server 2005 21. Как решить проблемы с памьятью. 1 - Windows Server не видит больше 4 GB ОЗУ, 2 SQL Server не может использовать больше 2 GB. 22. Медленно работает 1С по сети с базой на SQL Server 23. После установки на SQL Server 2000 Service Pack 4 SQL стал медленне работать и меньше загружать память 24. После установки на SQL Server 2000 проведение документов замедлилось 25. Не могу подключиться к SQL серверу 26. По каким то причина SQL Server очень медленно работает 27. При попытке подключения к SQL2005 выдается сообщение "Требуется ms sql server версии 6.5 + service pack 5a или более старшая версия" 28. Как подключиться к SQL2005 по IP адресу а не по имени сервера 29. Как получить имя пользователя, который занимает много процессорного времени SQL-Server 30. Как сделать чтобы 1С подключался к SQL не под одним логином (SQL аутентификация), а под логинами Windows (Windows аутотентификация) 31. Работа 1С v77 под Vista и MS SQL 2005 32. При подключении 1С возникате ошибка "SQL State 42000. Native 7202. ... SQL Server Could not find serve 'ServerName' ..." 33. Как создать дополнительные индексы для таблиц 34. Резервная копия базы SQL и MD-файла 35. Как разрешить в SQL Server 2005 использование xp_cmdshell 36. Если вы не нашли желаемого ответа 1. Что такое SQL Server Enterorise Manager? Это приложение с графическим интерфейсом для администрирования и настройки MS SQL Server 2000, а также управления серверами и базами данных MS SQL. Запускается или через меню Пуск:: Программы - Microsoft SQL Server - Enterprise Manager (в случае стандартной установки группы прогамм MS SQL Server 2000). Или же через стандартную консоль Управление компьютером (Computer Management). 2. Что такое QA? QA - Query Analyzer - приложения для работы с базами данных SQL на языке Transact SQL. Запускается или с пункта меню "Программы - Microsoft SQL Server - Query Analyzer" (в случае стандартной установки группы прогамм MS SQL Server 2000). Другим способом является запуск из SQL Server Enterorise Manager через меню Tools. Также можно запустить через командную строку, выполнив "Пуск - Выполнить - isqlw.exe". 3. Что такое BOL? BOL - SQL Server Books Online - Справочное руководство по языку Transact-SQL (и не только). Вызвать можно или с Query Analyzer нажав Shift+F1 (или через меню Help - Transact-SQL Help). Или же через меню Пуск: Программы - Microsoft SQL Server - Books Online (в случае стандартной установки группы прогамм MS SQL Server 2000). 4. Какие особенности 1С при доступе к MS SQL Server 2000? В случае работы 1С с форматом базы MS SQL все данные можно условно разделить на 2 логичные части: 1 - хранящиеся в базе данных MS SQL Server; 2 - хранящиеся в виде файлов, необходимых для работы конфигурации 1С. С первым типом файлов 1С работает c MS SQL Server посредством ODBC, большая часть запросов, посылаемых 1С к серверу храниться в файле BkEnd.dll. Некоторые хранимые процедуры для работы с таблицами базы данных хранятся в файле 1Cv7.DDS (в каталоге программы). Со вторым типом данных 1С работает непосредственно как с файлами. Эти файлы, хранятся в каталоге базы данных. Основные с них это: 1Cv7.MD - файл с метаданными, в нем храниться все то что можно посмотреть в Конфигураторе, 1Cv7.DDS - файл описание метаданных, в этом файле хранится описание таблиц базы данных MS SQL Server, а также хранимые процедуры, 1Cv7.DBA - файл с описанием настроек доступа к MS SQL Server-у, имя сервера, логин и пароль, usrdef\users.usr - файл описания пользователей 1С. Как видно, даже при работе с базой в формате MS SQL Server, для работы с базой данных надо указывать и каталог базы данных как в случае и с dbf-форматом базы данных для хранения файлов, в которых описана конфигурация и в которых храниться описание данных и доступа к базе. Это с одной стороны заводит в заблуждение, что для работы с форматом MS SQL Server вся база храниться на сервере, на самом деле на сервере хранятся только данные, а метаданные хранятся в виде файла, отдельно. Это оплошность 1С исправила в версии 8.0, но в 7.7 приходиться работать с тем что есть. 5. Как установить или конвертировать конфигурацию с dbf версии в SQL версию базы данных? 1. Надо иметь приложение 1С, поддерживающую работу с SQL Server. Рекомендуется использовать релизы 15 или 25 (15 более медленный, и не поддерживает конвертацию данных в 1С 8.0). Основные отлияия SQL версии приложения 1С, это название запускаемого файла 1cv7s.exe и характерное окно выбора формата хранения данных, где можно выбрать форматы: Файлы *.DBF;*CDX или MS SQL Server. 2. Еслу уже имеется база (с какими то заполненными данными), то предварительно надо выгрузить эти данные. Это делается из меню Конфигуратора: Администрирование - Выгрузить данные. 3. Создать базу в SQL Server Enterorise Manager. Закрыть SQL Server Enterorise Manager. 4. Создать базу в 1С в режиме Конфигуратора, выбрать тип хранения данных - MS SQL Server. 5. Создать в Конфигураторе пользователя. 6. Определить параметры доступа к MS SQL Server с Конфигуратора: Меню - Администрирование - Параметры базы данных SQL... . 7. Выполнить загрузку данных, елси есть выгрузка: Меню - Администрирование - Загрузить данные. 8. Если данных нет - создать метаданные конфигурации или загрузить измененую конфигурацию. Необходимо учитывать, что при стечении некоторых обстоятельств, данные могут не загружаться в MS SQL Sever (например длинные строки в отборах или дубли данных в индексных полях), для таких случаев описание будет отдельное, или же можно поискать в интернете описание подобных ошибок. 6. Как изменить тип авторизации доступа к SQL Server? Вся проблема в том, что 1С подключается к MS SQL Server только под логином SQL и авторизацией MS SQL Server а Windows. Если при установке был выбран режим авторизации только Windows (Windows only) - то подключиться 1С к базе в таком случае не сможет. Для того чтобы изменить тип авторизации надо открыть SQL Server Enterorise Manager, развернуть в левом углу группу "Concole Root - Microsoft SQL Servers", развернуть SQL Server Group, выбрать необходимый сервер (соответствует или имени компьютера или (local) - для локального сервера). Если серверов нет - надо зарегистрировать новый сервер, выбрав из меню Action - New SQL Server Registration... . После выбора сервера надо через меню Action выбрать пункт меню Properties (или через контекстное меню). В появишемся окне "SQL Server Properties (Configure)" надо перейти на закладку Security, в группе Security изменить Authentication на SQL Server and Windows. Перезапустить сервис (Управление комьютером - сервисы и приложения - сервисы - MSSQLSERVER - перезапустить), или перегрузить компьютер с установленным MS SQL Server. 7. Как создать базу для 1С на SQL Server Есть как минимум 2 способа создания базы. 1 - посредством графического интерфейса SQL Server Enterorise Manager. Для создания базы, необходимо выбрать сервер, на котором будет создана база. Установить курсор на Databases, выбрать через контекстное меню или через меню Action пункт "New database...". На закладке General ввести имя базы (например base_1c), на закладке Data Files скорректировать путь на файл данных (поле location), точно также на закладке Transaction Log можно скорректировать путь для файла транзакций. Опыт показывает, что если эти 2 файла (данных и транзакций) хранятся на разных физических дисках - то скрость системы повышается (при условии что скорость дисков также сопоставима). Второй метод - выполнив инструкцию на языке Transact-SQL (например с QA) Код: CREATE DATABASE [base_1c] ON (NAME = N'base_1c_Data', FILENAME = N'D:\SQLDATA\base_1c_Data.MDF' , SIZE = 10, FILEGROWTH = 10%) LOG ON (NAME = N'base_1c_Log', FILENAME = N'D:\SQLDATA\base_1c_Log.LDF' , SIZE = 2, FILEGROWTH = 10%) COLLATE Cyrillic_General_CI_AS | где base_1c - имя базы данных, D:\SQLDATA\ - путь к каталогу файлов базы данных и файла тразакций. 8. Как поменять владельца базы SQL Доступ к базе с 1С возможен только под владельцем базы. для того чтобы поменять влядальце, надо в QA выполнить следующий код: Код: use base_1c EXEC sp_changedbowner 'user1c' | где base_1c - имя базы данных, user1c - имя пользователя, котороый должен стать владельцем базы. 9. Как переиндексировать базу на MS SQL Server Данная информация находилась по адресу: http://www.perlscript.ru , сейчас находится по адресу: http://www.softpoint.ru Чтобы произвести переиндексацию необходимо выполнить такой запрос (например в QA): Код: USE base_1c EXEC _1sp_DBReindex | где base_1c - имя базы данных. Если хранимой процедуры _1sp_DBReindex нет в базе данных (база не 1С), то можно выполнить такой код (это и есть код хранимой процедуры _1sp_DBReindex): Код: USE base_1c DECLARE @TableName char(32) DECLARE SysCur CURSOR FOR SELECT name FROM sysobjects WHERE type='U' OPEN SysCur FETCH NEXT FROM SysCur INTO @TableName WHILE @@FETCH_STATUS=0 BEGIN DBCC DBREINDEX(@TableName) FETCH NEXT FROM SysCur INTO @TableName END CLOSE SysCur DEALLOCATE SysCur | где base_1c - имя базы данных. Соответсвенно код для создания хранимой процедуры: Код: if exists (select * from sysobjects where id = object_id('dbo._1sp_DBReindex') and sysstat & 0xf = 4) drop procedure dbo._1sp_DBReindex CREATE PROCEDURE _1sp_DBReindex AS SET NOCOUNT ON DECLARE @TableName char(32) DECLARE SysCur CURSOR FOR SELECT name FROM sysobjects WHERE type='U' OPEN SysCur FETCH NEXT FROM SysCur INTO @TableName WHILE @@FETCH_STATUS=0 BEGIN DBCC DBREINDEX(@TableName) FETCH NEXT FROM SysCur INTO @TableName END CLOSE SysCur DEALLOCATE SysCur | 10. Как проверить (восстановить) базу на MS SQL Server средствами сервера Инофрмация находится по адресу: http://www.1csql.ru/materials/faq/admin.html Проверку логической целостности нужно выполнять штатными средствами 1С:Предприятия (Тестирование и исправление ИБ). В случае, если такую проверку не удается выполнить, следует проверить физическую целостность БД средствами MS SQL. Для проверки целостности средствами MS SQL нужно выполнить следующую команду:
Код: DBCC CHECKDB ('<имя базы>',REPAIR_REBUILD) | Перед выполнением этой команды нужно базу данных перевести в режим "single user":
Код: sp_dboption '<имя базы>','single user',true | В процессе работы DBCC CHECKDB могут быть обнаружены ошибки и часть может быть сразу же исправлена. Если ошибки остались, то по всей видимости их нельзя восстановить без потери некоторых данных. В этом случае нужно запустить DBCC CHECKDB с параметром REPAIR_ALLOW_DATA_LOSS (перед запуском желательно сделать копию файлов базы данных).
Код: DBCC CHECKDB ('<имя базы>',REPAIR_ALLOW_DATA_LOSS) | После выполнения DBCC CHECKDB нужно не забыть вернуться в нормальный режим (выйти из режима "single user"):
Код: sp_dboption '<имя базы>','single user',false | Переиндексацию базы данных на MS SQL не нужно делать так часто, как в случае с DBF-версией 1С:Предприятия (например, при аварийном завершении работы пользователя). MS SQL автоматически поддерживает индексы в актуальном состоянии. Пересоздавать индексы имеет смысл в одном из следующих случаев:
1) Индекс физически поврежден. Это случается довольно редко и для восстановления нужно использовать вышеупомянутый DBCC CHECKDB. 2) Страницы индекса сильно фрагментированы и требуется их упорядочить. 3) Нужно изменить степень заполнения индексных страниц (fill factor). 4) Требуется изменить тип индекса (кластерный/некластерный). При использовании 1С это обычно неактуально. Переиндексация была рассмотрена в 9 пункте.
11. Как упаковать (зашринковать) базу на MS SQL Server Упаковать базу данных можно или с помощью графического интерфейса приложения SQL Server Enterorise Manager, или с помощью выполнения кода (например с QA). Первый случай выполняется посредством вызова контекстного меню на необходимой базе и выбора All Tasks - Shrink Database... . Второй случай опишем несколько подробнее. В приведенном коде выполняется 4 строки кода. 1 строка - усечение всей базы. 2 строка - усечение только DATA файла до размера 101 мб. 3 строка - усечение только файла транзакций до размера 0 мб (несколько килобайт). 4 - строка - очистка журнала транзакций (иногда файл транзакций усечь невозможно, по причине заисших открітіх транзакций, выполнение этой команды должно привести до полной очистки журнала транзакций). Код: DBCC shrinkdatabase(N'base_1c', TRUNCATEONLY ) use [base_1c] DBCC SHRINKFILE (N'base_1c_Data', 101) use [base_1c] DBCC SHRINKFILE (N'base_1c_Log', 0) DUMP TRANSACTION base_1c WITH TRUNCATE_ONLY | где base_1c - имя базы данных. Если приведенный више код не привел к требуемым результатам, можно попробовать выполнить следующий код: Код: use [base_1c] BACKUP LOG base_1c WITH TRUNCATE_ONLY GO DUMP TRANSACTION base_1c WITH no_log GO CHECKPOINT GO DBCC SHRINKFILE(base_1c_log,2) GO DBCC SQLPERF (logspace) | где base_1c - имя базы данных. Последняя строка - получение таблицы с информацией о занимаемом месте и свободном метсе в файле транзакций. 12. Как упаковать (дефрагментировать) индексы базы на MS SQL Server Данная информация находилась по адресу: http://www.perlscript.ru , сейчас находится по адресу: http://www.softpoint.ru Хотя SQL Server и следит за скоростью работы индексов, но все же есть часть работы, которую придеться делать вручную для повышения производительности доступа к данным. К этим работам относится и упаковка индексов внутри базы SQL Server. Для выполнения упаковки предусметрена команда DBCC INDEXDEFRAG. Эта команда позволяет дефрагментировать каждый индекс, причем не блокируя данные, что позволяет делать это почти прозрачно для пользователей (почти, так как системные ресурсы для этой операции все равно требуются и возможно, что работа пользователей может значительно замедлиться). Также дефрагментация индексов может привести к уменьшению занимаемого места таким индексом (это будет временным уменьшением, так как при дальнейшей работе SQL Server все равно увеличит место занимаемое индексами). Чтобы произвести переиндексацию необходимо выполнить такой запрос (например в QA): Код:
|