Постоянно теряется, поэтому утаскиваю на память. Пригодится.
(http://myscrapbook.narod.ru/sb/Archive/data/20090515074631/index.html если и отсюда уйдет - искать по названию статьи)
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. Если вы не нашли желаемого ответа
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 приходиться работать с тем что есть.
С первым типом файлов 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 (например длинные строки в отборах или дубли данных в индексных полях), для таких случаев описание будет отдельное, или же можно поискать в интернете описание подобных ошибок.
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)
Код:Второй метод - выполнив инструкцию на языке 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 |
8. Как поменять владельца базы SQL
Доступ к базе с 1С
возможен только под владельцем базы. для того чтобы поменять влядальце,
надо в QA выполнить следующий код:
Код:use base_1c EXEC sp_changedbowner 'user1c' |
9. Как переиндексировать базу на MS SQL Server
Данная информация
находилась по адресу: http://www.perlscript.ru
, сейчас находится по адресу: http://www.softpoint.ru
Чтобы произвести переиндексацию необходимо выполнить такой запрос (например в QA):
Код:Чтобы произвести переиндексацию необходимо выполнить такой запрос (например в QA):
USE base_1c EXEC _1sp_DBReindex |
Если хранимой
процедуры
_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 |
Соответсвенно код
для создания хранимой процедуры:
Код: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 - строка - очистка журнала транзакций (иногда файл транзакций усечь невозможно, по причине заисших открітіх транзакций, выполнение этой команды должно привести до полной очистки журнала транзакций).
Код:Первый случай выполняется посредством вызова контекстного меню на необходимой базе и выбора 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 |
Если приведенный
више код не привел к требуемым результатам, можно попробовать выполнить
следующий код:
Код: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) |
12. Как упаковать (дефрагментировать) индексы базы на MS SQL Server
Данная информация
находилась по адресу: http://www.perlscript.ru
, сейчас находится по адресу: http://www.softpoint.ru
Хотя SQL Server и следит за скоростью работы индексов, но все же есть часть работы, которую придеться делать вручную для повышения производительности доступа к данным. К этим работам относится и упаковка индексов внутри базы SQL Server. Для выполнения упаковки предусметрена команда DBCC INDEXDEFRAG. Эта команда позволяет дефрагментировать каждый индекс, причем не блокируя данные, что позволяет делать это почти прозрачно для пользователей (почти, так как системные ресурсы для этой операции все равно требуются и возможно, что работа пользователей может значительно замедлиться). Также дефрагментация индексов может привести к уменьшению занимаемого места таким индексом (это будет временным уменьшением, так как при дальнейшей работе SQL Server все равно увеличит место занимаемое индексами).
Чтобы произвести переиндексацию необходимо выполнить такой запрос (например в QA):
Код:Хотя SQL Server и следит за скоростью работы индексов, но все же есть часть работы, которую придеться делать вручную для повышения производительности доступа к данным. К этим работам относится и упаковка индексов внутри базы SQL Server. Для выполнения упаковки предусметрена команда DBCC INDEXDEFRAG. Эта команда позволяет дефрагментировать каждый индекс, причем не блокируя данные, что позволяет делать это почти прозрачно для пользователей (почти, так как системные ресурсы для этой операции все равно требуются и возможно, что работа пользователей может значительно замедлиться). Также дефрагментация индексов может привести к уменьшению занимаемого места таким индексом (это будет временным уменьшением, так как при дальнейшей работе SQL Server все равно увеличит место занимаемое индексами).
Чтобы произвести переиндексацию необходимо выполнить такой запрос (например в QA):
USE base_1c DECLARE @MyTable varchar(32) DECLARE @MyIndex varchar(32) DECLARE MyCursor CURSOR FOR SELECT o.name, i.name FROM sysobjects o INNER JOIN sysindexes i ON o.id = i.id WHERE (o.xtype = 'U') AND (INDEXPROPERTY(i.id, i.name, 'isStatistics') = 0) AND (i.dpages > 0) ORDER BY o.name, i.indid OPEN MyCursor FETCH NEXT FROM MyCursor INTO @MyTable, @MyIndex WHILE @@FETCH_STATUS=0 BEGIN PRINT 'Дефрагментация индекса '+@MyIndex+' из таблицы '+@MyTable DBCC INDEXDEFRAG (0,@MyTable,@MyIndex) FETCH NEXT FROM MyCursor INTO @MyTable, @MyIndex END CLOSE MyCursor DEALLOCATE MyCursor |
13. Как уменьшить рост журнала транзакций базы на MS SQL Server
Данная информация находилась по адресу: http://www.perlscript.ru , сейчас находится по адресу: http://www.softpoint.ru .Для того чтобы файл транзакций не рос очень стремительно, надо в свойствах базы данных установить режим "Simple" поля Recovery закладки Options окна свойств базы данных.
14. Как скопировать базу 1С, работающую с базой БД в формате MS SQL Server?
Есть как минимум 3 способа это сделать.- Сделать выгрузку/загрузку в режиме Конфигуратора. Этот способ наиболее длительный, и в тоже время делать эту процедуру можно делать лишь тогда, когда другие пользователи не работают в 1С с требуемой базой. Методика того как это делается подробно описана в литературе, поставляемой с коробоынми вариантами 1С. Отмечу лишь что технология загрузки почти ничем не отличается от описанной в пункте 5 "Как установить или конвертировать конфигурацию с dbf версии в SQL версию базы данных" методики.
- Скопировать каталог базы данных 1С и скопировать файлы базы данных SQL. Этот способ является наименее временизатратным (тратится время только на дисковые операции копирования). Но выполнять его также можно лишь тогда, когда с базой 1С никто не работает. Описание процесса:
- скопировать каталог базы данных 1С;
- сделать Detach Database. Заходим в Enterprise Manager, выбираем необходимый сервер и базу данных. Вызываем контекстное меню (или меню Action главного меню) - Tools - All Tasks - Detach Database ...:
- скопировать файлы базы SQL (mdf, ldf).
- сделать Atach Database для отключенной базы ранее. Заходим в Enterprise Manager, выбираем необходимый сервер и становимся на ветку дерева Databases. Вызываем контекстное меню (или меню Action главного меню) - Tools - All Tasks - Atach Database ...:
- в появившемся окне в поле "MDF file of database to atach:" надо внести полный путь к файлу MDF базы данных (или выбрать этот файл нажав на кнопку выбора файла слева от этого поля).
- сделать Atach Database для новой базы. Заходим в Enterprise Manager, выбираем необходимый сервер и становимся на ветку дерева Databases. Вызываем контекстное меню (или меню Action главного меню) - Tools - All Tasks - Atach Database ...:
- в появившемся окне:
-
1 - выбераем место положения скопированного файла MDF; 2 - задаем новое
имя для базы данных (обязательно); 3 - при желании указываем кто будет
владельцем (db_owner) базы данных (под каким логином будет 1С
соединятся с базой данных SQL)
- в режиме Конфигуратора подключаемся к скопрированному каталогу БД. Входим в меню Администрирование - Парамтеры базы данных SQL и в появившемся окне в поле "База данных" необходимо внести новое имя базы данных, а при условии изменения владельца базы данных указать и имя нового владельца в поле "Пользователь".
- Сделать
Backup/Restore Database...
средствами SQL. Этот процесс длительне чем второй, но бвстрее чем
первый. К тому же делать процедуру Backup можно и тогда, когда с базой
работают пользователи. Процедура Backup-а несложная, поэтому информация
предствалена вкратце. Заходим в Enterprise
Manager, выбираем необходимый сервер и базу данных. Вызываем
контекстное меню (или меню Action главного меню) - Tools - All Tasks -
Backup Database. В появившемся окне SQL server Backup на вкладке
General в группе Destination надо выбрать путь, куда будет сохранена
база данных. Если в списке Backup To нет ни одной записи - надо
добавить ее с помощmю кнопки Add вызвать окно "Select Backup
Destination" и в нем указать файл, куда необходимо сохранить базу.
Необходимо учесть, что путь является полным и должен включать и имя
файла. После заполнения необходимых полей жмем кнопку OK в окне "SQL
Server Backup - ...". А вот процедура восстановления требует более
детального рассмотрения. На первой закладке выбераем "From Device", а
также в поле "Devices" выбираем файл, с которого надо восстановить
данные:
15. Как изменить место размещения файлов базы tempdb MS SQL Server
Данная информация находилась по адресу: http://www.perlscript.ru , сейчас находится по адресу: http://www.softpoint.ru .Очень часто SQL Server устанавливается по умолчанию и все системные базы (в том числе и база временных таблиц) размещается на системном диске. После установки изменить расположение файлов базы tempdb с помощью графического интерфейса SQL Server Enterorise Manager - не предоставляется возможным, но это можно реализовать с помощью выполнения SQL кода с того же QA.
Код:
USE master GO ALTER DATABASE TEMPDB MODIFY FILE (NAME='tempdev', FILENAME='D:\SQLDATA\tempdb.mdf') GO ALTER DATABASE TEMPDB MODIFY FILE (NAME='templog', FILENAME='D:\SQLDATA\templog.ldf') GO |
16. Как узнать логин и пароль подключения 1С к MS SQL Server
К сожалению автор этой идеи неизвестен.Эти данные храняться в файле 1Cv7.DBA. Этот файл привязан к файлу usrdef\users.usr (вот поэтому и надо создать хотя бы одного пользователя в конфигураторе), и если вдруг надо будет изменить этот файл (ну например кто то забыл пароль администратора) и это сделать в другой базе, то привязка потеряется, и информацию о параметрах подключения 1С к SQL Server прочесть уже не удастся. Решение этой проблемы как всегда простое - все данные по доступу к SQL Server хранятся в файле 1Cv7.DBA. Они там не в октрытом виде, но и не зашифрованы 128 битным ключом по методу md5. Вся защита основана на простеньком XOR. Если у кого есть желание, можете сами написать метод шифрования, только вот зачем, если есть уже говотовые решения.
Код:
Function XOR(Val
ParA, Val ParB) Res = 0; Koef = 1; For BitNumber = 1 To 8 Do BitA = ParA % 2; BitB = ParB % 2; ParA = Int(ParA / 2); ParB = Int(ParB / 2); BitC = (BitA + BitB) % 2; Res = Res + BitC * Koef; Koef = Koef * 2; EndDo; Return Res; EndFunction // индексы значений с списке // server = 2, db = 4, uid = 6, pwd = 8, checksum = 10 Function ConnectionString() export Var SQLKeyCode[36], ConnectCode[200]; ConnectFile = IBDir() + "1Cv7.DBA"; If FS.ExistFile(ConnectFile) = 0 Then Message("Это не SQL - база!", "!"); Return (0); EndIF; FSO = CreateObject("Scripting.FileSystemObject"); F = FSO.OpenTextFile(ConnectFile, 1); ConnectLen = 0; While F.AtEndOfStream = 0 Do ConnectLen = ConnectLen + 1; ConnectCode[ConnectLen] = Asc(F.Read(1)); EndDo; F.Close(); FSO = 0; SQLKey = "19465912879oiuxc ensdfaiuo3i73798kjl"; For i = 1 To 36 Do SQLKeyCode[i] = Asc(Сред(SQLKey, i, 1)); EndDo; Connect = ""; For i = 1 To ConnectLen Do Connect = Connect + Chr(XOR(ConnectCode[i], SQLKeyCode[(i - 1) % 36 + 1])); EndDo; vl=createobject("ValueList"); Connect=StrReplace(Connect,"{",""); Connect=StrReplace(Connect,"}",""); vl.fromSeparatedString(Connect); return (vl); EndFunction if ExclusiveMode()=0 then if FS.ExistFile(IbDir()+"1cv7.dds")=1 then constr=ConnectionString(); if ConStr<>0 then server=constr.getValue(2);database=constr.getValue(4);uid=constr.getValue(6); pwd=constr.getValue(8); |
17. Как узнать размер таблиц в базе данных MS SQL Server
Автор этой разработки Антон Гусев, первоначально она была размещена на сайте http://www.perlscript.ru. Для работы с 1С++ были внесены незначительные изменения. Обработку можно скачать здесь. Результат выполнения вот:18. При старте 1С, или при попытке открытия конфигурации выдается сообщение "SQL State: 24000 Native: 0 Message: [Microsoft] [ODBC SQL Server Driver] Invalid cursor state"
Такое сообщение в моей практике встречалось при попытке подключиться к базе SQL под логином, отличным от владельца (DB OWNER). Надо или поменять имя пользователя в настройках Параметры базы данных SQL, или поменять владельца базы (8 пункт на этой страничке). Также такое ссобщение может появлятся при некорректном завршении предыдущего монопольного подключения (например в момент реструктуризации базы), в таком случае обычно помогает restart SQL сервера.19. При попытке монопольно войти в 1С или при записи конфигурации выдается сообщние "База данных не может быть открыта в однопользовательском режиме"
Причиной такого поведения 1С есть невозможность захватить базу данных в монопольном режиме (так называемый режим Single User). Это может произойти по нескольким причинам. 1 - есть другое приложение, которое в данный момент подключено к базе, которая является базой SQL для 1С. в таком случае это приложение надо или закрыть или же открыть в нем другую базу (например в Query Analiser-е использовать команду USE Master). Если таким приложений нет (которые явно могли присоединиться к базе), можно попробовать остановить и снова запустить SQL Server (или перегрузить сервер, на котором находиться SQL база и SQL сервер). 2 - произошел сбой во время работы с базой данных в монопольном редиме с аварийным отключением соединения. При таком стечении обстоятельств, перезапуск SQL сервера не поможет. Необходимо удалять ссылки на зависшые процессы. Чтобы этого не делать, можно отключить базу (сделать Detach) и обратно подключить под другим именем (поле Attach as), после чего надо изменить настройки подключения и в Конфигураторе для текущей базы 1С (в качестве базы SQL указать базу с новым именем).20. Как узнать какой сервис-пак установлен на SQL Server 2000 или SQL Server 2005
Первоисточник: http://support.microsoft.com/default.aspx?scid=kb;en-us;q321185Для получения информации о релизе можно выполнить такой запрос в QA:
Код:
SELECT @@VERSION |
Результат:
Microsoft
SQL Server 2000 - 8.00.2039 (Intel X86)
May 3 2005
23:18:38 Copyright (c) 1988-2003 Microsoft
Corporation Developer
Edition on Windows NT 5.1 (Build 2600: Service Pack 2) |
Вот таблички для SQL 7.0, 2000 и 2005 (RTM -Release To Manufacturing):
Для SQL 7.0:
7.00.1063 | SQL Server 7.0 SP4 |
7.00.961 | SQL Server 7.0 SP3 |
7.00.842 | SQL Server 7.0 SP2 |
7.00.699 | SQL Server 7.0 SP1 |
7.00.623 | SQL Server 7.0 RTM |
Для SQL 2000:
8.00.194 | SQL Server 2000 RTM |
8.00.384 | SQL Server 2000 SP1 |
8.00.534 | SQL Server 2000 SP2 |
8.00.760 | SQL Server 2000 SP3 |
8.00.760 | SQL Server 2000 SP3a |
8.00.2039 | SQL Server 2000 SP4 |
8.00.2040 | SQL Server 2000 SP4+HotFix |
(Информация получена с http://sql.ru/forum/actualthread.aspx?bid=1&tid=136531&hl=microsoftversion).
Для SQL 2005:
9.00.1399.06 | SQL Server 2005 RTM |
9.00.2047.00 | SQL Server 2005 SP1 |
9.00.3042.00 | SQL Server 2005 SP2 |
Для получения других свойств (релиз, редакция) установленного SQL сервера можно воспользоваться таким запросом:
Код:
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY('productlevel'), SERVERPROPERTY('edition') |
Вот пример работы такого запроса:
Для SQL 2000:
8.00.2039 | SP4 | Developer Edition |
Для просмотра информации о более старых версиях SQL Server можно воспользоваться вот этой ссылкой: http://vyaskn.tripod.com/sqlsps.htm
Для получение отлельно версии платформы SQL Servrer и номера релиза, можно, к примеру, воспользоваться вот таким скриптом:
Код:
DECLARE @version int, @build int SELECT @version = @@microsoftversion / 0x01000000, @build = cast(@@microsoftversion as binary(2)) raiserror('@version = %d, @build = %d', 0, 1, @version, @build) |
Код:
exec xp_msver |
21. Как решить проблемы с памьятью. 1 - Windows Server не видит больше 4 GB ОЗУ, 2 SQL Server не может использовать больше 2 GB.
Проблемы с 32 разрядными Windows Server и поддержкой больше 4 GB ОЗУ рассмотрена в этой статье http://support.microsoft.com/?id=283037. Описание технологии: http://www.microsoft.com/technet/prodtechnol/windowsserver2003/ru/library/ServerHelp/32da8fd0-23f4-4dd4-b5f0-f2b45bb042b3.mspx?mfr=trueС этой проблемой сталкиваются те, у которых на сервере более 4 GB ОЗУ.
Вкратце, для работы с памьятью более 4 GB понадобятся такие операционные сситемы:
Microsoft Windows 2000 Advanced Server,
Microsoft Windows 2000 Datacenter Server,
Microsoft Windows Server 2003 Enterprise Edition,
Microsoft Windows Server 2003 Datacenter Edition.
Для работы с памятью более 4 GB в файле c:\boot.ini надо в строке где есть параметр /fastdetect добавить параметр /PAE
Для возможности использования одним процессом более 2 GB в файле c:\boot.ini надо в строке где есть параметр /fastdetect добавить параметр /3GB.
Вот например как может выглядеть отредактированная строка в boot.ini:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /PAE /3GB /fastdetect
Необходимо отметить что для того чтобы SQL сервер использовал больше 2 GB ОЗУ указывать ключ /3GB указывать необязательно. Почему, рассмотрено чуть ниже.
Проблема с SQL Server (2000, 7.0) и сипользованием болше 2 GB ОЗУ. В самом SQL Server есть возможность использование расширенной памяти больше 2 GB. Следует отметить что для использования SQL сервером больше 2 GB памяти необходимо использовать или Enterprise Edition или Developer Edition SQL Server. Для поддержки SQL Server памяти свыше 2 GB, он использует технологию Address Windowing Extensions (AWE). Подробное описание находиться в этой статье : http://www.support.microsoft.com/?id=274750 . А в от в этом топика форума SQL.RU находиться обсуждение целесообразности использования этого параметра:: http://www.sql.ru/forum/actualthread.aspx?bid=1&tid=137853&pg=1 . Отмечу лишь то, что замедления работы системы и SQL сервера я не заметил, включив этот режим. Также надо отметить что для повышения производительности следует отклжючить файл подкачки для Windows. Это приведет к тому, что неисопльзуемая память не будет высвобождаться на диск, а в случае запроса к высвобожденным ресусрам не будут производиться опреации чтени с диска. Но для такой операции необходимо достаточное количество оператвиной памяти на сервере. На вопрос сколько надо пямяти для SQL сервера нет точного ответа, есть лишь рекомендации. Так например, елси работа ведеться только с одной базой, то надо выделить под SQL сервер приблизительно сколько памяти, сколько занимают файли базы данных на диске (но желательно процентов на 10-15%). Также надо отметить что при использовании AWE для SQL сервера сам рпоцесс sqlserver.exe не занимает больше места в памяти, память отводиться под кеш SQL сервера, т.е. фактически под данные базы данных.
Вот пример скрипта на языке Transact-SQL для включения режима AWE:
Код:
sp_configure 'show advanced options',
1 RECONFIGURE GO sp_configure 'awe enabled', 1 RECONFIGURE GO sp_configure 'max server memory', 6144 RECONFIGURE GO |
где: 6144 - размер памяти в мегабайтах, выделяемых SQL-серверу. Желательно это значение не устанавливать больше чем размер физической памяти, в противном случае при физическом резервированиия памяти под SQL SQL сервер не сможет стартовать.
22. Медленно работает 1С по сети с базой на SQL Server.
Одно из решений - правильно настроить сетевые протоколы для взаимодействия с SQL Server.http://www.1csql.ru/materials/faq/admin.html
Для такой настройки ODBC должен быть версии не ниже 3.5
С помощью утилиты Client Network Utility (CLICONFG.EXE) (Program - Microsoft SQL Server - Client Network Utility) необходимо настроить протокол общения с SQL сервером. По умолчанию "Default network library" установлен в "Named Pipes", надо установить в "TCP/IP" и добавить строку в Server alias configuration. Где, соответственно, указать псевдоним, имя сервера, протокол TCP/IP, порт (можно оставить без изменений, если на сервере порт не был изменен). Вот пример настройки:
23. После установки на SQL Server 2000 Service Pack 4 SQL стал медленне работать и меньше загружать память.
По заявлениям фирмы Microsoft есть такая проблема для 32-битной версии SQL Server 2000 SP4, для устранения этой проблемы надо скачать HotFix вот по этой ссылке:http://support.microsoft.com/default.aspx?kbid=899761
24. После установки на SQL Server 2000 проведение документов замедлилось
Эта проблема описана в этой статье:http://support.microsoft.com/?scid=kb;en-us;891553&spid=2852
Есть комерческое решение этой проблемы: http://www.softpoint.ru/article_id11.htm
Есть решение и с помощью 1С++ (метод ReconnectNative() класса ODBCRecordSet) но надо быть осторожным и закрывать все открытие окна объектов, а также обнулять глобальные переменные, в которых храняться ссылки на объекты (Справочники, документы, регистры, операции).
Также эта проблема уже решена в SQL Server 2005, но пока официальной поддержки 1С V77 SQL Server 2005 нет (1С не может правильно определить версию драйвера, но эта проблема решается патчингом BkEnd.dll, как это сделать будет рассмотрено в другой статье).
25. Не могу подключиться к SQL серверу
Проблема очень обширная, подробноее ее решение рассмотрено вот в этой статье:http://www.sql.ru/articles/mssql/2005/013001TtroubleshootingConnectivitySQLServer2000.shtml
26. По каким то причина SQL Server очень медленно работает
Решение этой проблемы может быть как совсем простое, так и очень сложное и требующее значительных затрат (как по времени, так и по другим ресурсам). Вот статья, рассказывающая как можно протетсировать компоненты сервера на скорость, а также методы устранения узких мест: http://www.sql.ru/articles/mssql/03121001PERF_COUNTERs.shtmlСо своего опыта добавлю, что для ускорения работы SQL Server необходимо отключить файл подкачки на том компьютере где он работает (но при этом надо минимум 2.5 GB ОЗУ). А при использовании технологии AWE - желательный объем ОЗУ - размер базы, с которой наиболее активно работают. Также, необходимо учесть, что при активной работе пользователей (например ввод за 12 часов от 2000 документов, или от 10000 транзакций (включая количество движений, т.е. записей в таблицы)), желательно чтобы SQL Server работал только с одной пользовательской базой. Также желательным будет использование RAID масивов (5 или 10 уровень) и хорошие RAID контроллеры (от 1000 у.е.). Также надо заметить, что иногда может быть полезным разделить систему и SQL базу на разные физические диски, а также разделение файла данных (mdf) и файла транзакций (ldf) на разные диски (что может быть очень проблематичным при условии использования RAID-10).
27. При попытке подключения к SQL2005 выдается сообщение "Требуется ms sql server версии 6.5 + service pack 5a или более старшая версия"
Проблема существует в версии 7.7 вплоть до 25 релиза включительно. Проблема кроется в способе определения версии MS SQL Server. При попытке подклбчения к SQL 1С проверяет версию SQL Server, причем проверяет по содержимому системной таблици. Подробно описано как вот в этом топике: http://www.forum.mista.ru/topic.php?id=133392. Приведу текст запроса, по которому 1С определяет версиюКод:
select
504,c.name,c.description,c.definition from
master.dbo.syscharsets c where c.id = convert(tinyint,databasepropertyex ( db_name() , 'sqlcharset')) |
Но решение есть. Дело в том, что почти все запосы, которыми 1С обращается по ODBC к SQL Server хранятся в одной DLL, а именно в BkEnd.dll. При желании, можно изменить эту DLL и дать возможность 1С работать с SQL Server 2005.
Вкратце что надо сделать:
(пример приведен для 25-го релиза 1С V7.7)
- патчим bkend.dll
000D9C4A: 83 EB 000D9C4B: E8 15 000DB0B0: 83 EB 000DB0B1: E8 10 |
(для 26-го и 27-го релизов 1С V7.7)
000D9CCA: 83 EB 000D9CCB: E8 15 000DB130: 83 EB 000DB131: E8 10 |
- в свойствах базы данных на SQL Server ставим Compatibility Level SQL Server 2000(80)
28. Как подключиться к SQL2005 по IP адресу а не по имени сервера
Проблема в том, что при установке по умалочанию во всех редакциях кроме Enterprise Edition включается только протокол SharedMemory, необходимо включить еще и TCP/IP для доступа к серверу по сети. Для этого необходимо запустить приложение Programm - Microsoft SQL Server 2005 - Configuration Tools - SQL Server Configuration Manager и включить протококол TCP/IP:29. Как получить имя пользователя, который занимает много процессорного времени SQL-Server.
Очень часто приходиться сталкиваться с такой ситуацией, когда SQL-Server полностью или почти полностью занимает (загружает) процессор или дисковую подсистему во время работы. Для того чтобы выяснить кто из пользователей "загрузил" SQL-Server надо войти в SQL-Profiller и посмотреть какой из запросов (после его віполнения, т.е. в момент когда идет выполнение запроса, запрос в Profiler не попадает, а это знгачит что Profiler надо запустить до момента возникновения ситуации, которую надо отследить). Когда будет выявлен запрос, который занимет много процессорного времени (по колонке CPU, а также время его віполнения в милисекундах - колонка Duration), можно узнать его SPID в колонке SPID того же Profiler-а:
В этом окне видно, что выделенный запрос (который нас интересует) выполнен под SPID = 76. Теперь необходимо выполнить запрос для того чтобы получить имя пользователя и имя компьютера, с которого работает пользователь:
Код:
SELECT
spid,program_name, hostprocess,hostname, loginame FROM sysprocesses WHERE SPID = 76 |
Казалось бы все просто, смотрим значенеи поля loginame и видим пользователя. Но не все так просто, дело в том, что 1С работае с SQL-Server по SQL-Server аутентификации, а єто значит, что все пользователи 1С работают под одним логином SQL (обычно это sa). Поэтому решение надо искать в результатах других столбцов выборки.
Вот к примеру один из результатов запроса:
Так если пользователь с указанным SPID работает по сети (не посредством терминального сервера), то в поле hostname - можно увидеть с какого компьютера был послан запрос, ну и зная компьютер можно легко узнать а кто же там работал в требуемое время.
Если же пользователи работают с терминального сервера - ситуация усложняется, так как в поле hostname - будет имя сервера терминадов. В этом случае может помочь значение поля hostprocess. Именно под этим номером на клиентском компьютере (сервере терминалов) стартовал процесс 1cv7s.exe, и посмотрев в Task Manager-е список процессов на термианльном сервере можно найти от имени какого пользователя стартовал процесс и таким образом выясгить имя пользователя:
30. Как сделать чтобы 1С подключался к SQL не под одним логином (SQL аутентификация), а под логинами Windows (Windows аутотентификация).
Зачем это надо? В предыдущем пунтке этого FAQ-а (как получить имя пользователя, который занимает много проуессорного времени SQL-Server) было описан механизм получения имени пользователя по его SPID, эта довольно тривиальная задача на самом деле не совсем простая, и решить ее средствами самого SQL-Server не так просто. Ситуация меняется когда все пользователи будут подключаться к SQL серверу не по одному логину, а под своими Windows-логинами. Тогда сразу видно кто выполняет интересующий запрос.Реализовать подобное можно лишь изменив строку подключения 1С к SQL. Строка подключения 1С находится в файле BkEnd.dll. Для изменение строки подключения надо найти строку "SERVER=%s;UID=%s;PWD=%s;" и заменить на строку "SERVER=%s;UID=;PWD=; ". После чего все подключения 1С будет выполнять не под логином и паролем прописанным в полях окна "Параметры базы данных SQL", а под именем и правами Winndows. Эту процедуру следует делать с особой осторожностью, и после исправления BkEnd.dll надо обязательно внести список логинов Windows в в список логинов SQL-Server. Также необхомо пользователям дать права на базы 1С (а возможно и другие, если используются какие то дополнительные базы и обращение к им ведеться по OLE DB или ODBC) (за исключением случая пользователи принадлежат группе даминистраторов на сервере, где находится SQL-Server). Назначитт права можно віполнив ниже указанній скрипт для каждого пользователя и каждой базы:
Код:
use [master] exec sp_grantlogin N'Domain\User1' use [master] exec sp_defaultdb N'Domain\User1', N'base1' use [master] exec sp_addsrvrolemember N'Domain\User1', sysadmin use [base1] exec sp_dbcmptlevel N'base1' use [base1] exec sp_grantdbaccess N'Domain\User1', N'User1' use [base1] exec sp_addrolemember N'db_owner', N'User1' |
Где: 'Domain'-имя домена;
'User1'- имя пользователя;
'base1'-имя базы на SQL сервере.
Зачем давать права пользователям System Administrator строкой: exec sp_addsrvrolemember N'Domain\User1', sysadmin? Без этих прав пользователи также смогут работать с 1С, но вся проблема в том, как 1С работает с таблицей "_1SCONNECT". Так при первой загрузке 1С пытается выбрать строки с таблицы с блокировкой TABLOCKX HOLDLOCK, если блокировки нет - тогда 1С понимает что это первое подключение и удалчет все записи с таблицы, а также и саму таблицу, а потом снова создает. Но поскольку теперь работа ведется не под логином SA, то таблица создается не под dbo, а под именем логина. Для того чтобы устранить эту ошибку надо чтобы таблица создавалась под владельцем dbo, а для этого надо пользователям дать права sysadmin. К тому же если пользователь все таки вошел с отсутствием прав sysadmin, а потом пытается войти пользователь с правами sysadmin - то 1С понимает что это другое подключение и выводит сообщение о том что доступ к базе возможен только из одного каталога. Для решения такой проблемы - надо удалить таблицу "_1SCONNECT" у которой владелей не dbo, а пользователю дать права sysadmin.
Эту проблему можно обойти не давая всем пользователям права sysadmin, а достаточно лишь кому то одному, но главное условие, чтобы этот пользователь подключался к 1С первым (под ним проходила верификация).
Тепрь для просмотра кто сейчас работает с базой можно восспользоваться хранимой процедурой sp_who, но эта процедура не дает возможности отбирать подключения по имени базы и имени приложения, а также нет возможности видеть некоторые поля с информацией, скажем о загрузке процеесора или о количестве операций чтения/записи. Для получения требуемой инмормации можно сделать запрос к таблице sysprocesses, но для того чтобы не писать громоздкие запросы, можно восспользоваться хранимой процедурой, текст которой приведен ниже:
Код:
use master create procedure sp_who_1c --- аналогия sp_who, но с некоторыми рассширенніми возможностями @dbname varchar(100) = NULL -- Имя базы NULL - все базы ,@progname varchar(100) = NULL -- имя программы NULL - все программы ,@orderBy varchar(100) = 'loginame' -- столбцы сортировки as declare @textZP VarChar(1000) select @textZP = 'select spid, ecid, status=rtrim(status), loginame=rtrim(loginame), hostname=rtrim(hostname), program_name=rtrim(program_name), blk=convert(char(5),blocked), dbname = case when dbid = 0 then null when dbid <> 0 then db_name(dbid) end ,cmd ,cpu ,physical_io ,memusage ,login_time from master.dbo.sysprocesses where (spid >= 0 and spid <= 32767)' if (@dbname is NOT NULL) if (@progname is NOT NULL) select @textZP = @textZP + ' and ((db_name(dbid) = '''+isnull(@dbname,'')+''') and (dbid <> 0)) and upper(rtrim(program_name)) ='''+ upper(@progname)+'''' else select @textZP = @textZP + ' and ((db_name(dbid) = '''+isnull(@dbname,'')+''') and (dbid <> 0))' else if (@progname is NOT NULL) select @textZP = @textZP + ' and upper(rtrim(program_name)) ='''+ upper(@progname)+'''' select @textZP = @textZP + ' order by '+@orderBy --print @textZP EXEC (@textZP) return (0) |
Код:
exec sp_who_1c 'ruukki','1cv77','cpu desc' |
31. Работа 1С v77 под Vista и MS SQL 2005
Проблемы работы 1С под MS Vista можно разделить на 2 категории:- 1 - Работа в файловом варианте базы.
- 2 - Работа с базой в формате MS SQL.
В некторый случаях, дополнительно надо еще установить кодовую страницу для базы на "+Текущая системная установка". Это делается в режиме Конфигуратора:
"Меню - Администрирование - Кодовая страница таблиц ИБ... - "+Текущая системная установка"".
Надо быть осторожным при изменении кодовой страницы, если с базой работают по сети и у клиентов установлены разные версии ОС.
2. Для работы 1С с базами в формате MS SQL под MS Vista можно использовать как MS SQL 2000 так и MS SQL 2005. Хотя при установке SQL 2000 и выдается сообщение о необходимости установки более новой версии SQL Server, но установка и дальнейшая работа MS SQL Server 2000 проходит без особых проблем (пока не удалось заметить каких либо глюков). Надо только обратить внимание, что при установке SQL Server кодировка на уровне сервера может быть установлена отличная от Cyrillic_General_CI_AS, поэтому, желательно самому вручную поставить необходимую установку Collation в Cyrillic_General_CI_AS (кириллица регистронезависимая по возрастанию).
После установки надо поменять некоторые измененные системные файлы, иначе вы рискуете увидеть приблизительно такое сообщение "Для доступа к базе данных требуется ODBC-драйвер для MS SQL Server версии 3.50.0303 или старше".
Но если вы установили вашу ОС и не делали с ней никаких изменений в плане настройки безопасности, то даже работая под правами администратора или под логином администратора - вам не так просто будет скопировать файлы в папку System32. Итак, для начала надо с предыдущих версий ОС (например Windows XP или MS Server 2003) переписать вот эти 3 файла:
- sqlsrv32.dll
- sqlsrv32.rll
- odbcbcp.dll
После чего назначаете себе полный доступ на каталог (если такого доступа нет):
Теперь можно смело скопировать 3 ранее подготовленных файла и перезагрузить систему.
Но это еще не все, теперь Вам надо сделать то же самое что вы проделывали с файлом OrdNoChk.prm с 1 пункта, чтобы отключить проверку сортировки в режиме 1С:Предприятие. Выполнив такие изменения можно смело работать с 1С.
Но для режима 1С:Конфигуратор файла OrdNoChk.prm недостаточно, Все дело в том, что в режиме конфигуратора почему то 1С не обращает внимание на наличие этого файла (логично предположить), для того, чтобы вопрос о сортировке не возникал при изменении структуры базы в режиме Конфигуратора надо подправить файл BkEnd.dll (подсмотрено как это делает USP для более ранних релизов):
(для 26-го и 27-го релизов 1С V7.7)
по смещению 0018A6DD поменять значение с 75h на EBh (117 на 235) |
32. При подключении 1С возникате ошибка "SQL State 42000. Native 7202. ... SQL Server Could not find serve 'ServerName' ..."
Эта ошибка возникла при переименовании имени компьютера после установки экземпляра SQL Server, и происходит несоответсвии имени SQL сервера и прописанного экземпляра имени сервера в свойствах базы данных.
Вот пример как исправить эту ситуацию для сервера SQL 2005 (хотя в 2000 также эта команда должна работать):
sp_dropserver UA00560PCV GO sp_addserver dtuaiev0028, local GO |
где:
UA00560PCV - старое имя компьютера,
dtuaiev0028 - новое имя компьютера.
33. Как создать дополнительные индексы для таблиц
В 1С есть механизм управления индексами - это установка флажка "Сортировка" в свойствах реквизита. Но при этом индекс всегда создается как составной (напрмиер для справочников для каждого реквизита создается индекс с ROW_ID, с регистрами и того хуже, там один составной индекс по всем измерениям). Такие индексы полезны лишь тогда, когда все поля, что входят в индекс задействованы в запросе (напрмиерв условиях или в сортировках). Если же не все поля задействоаваны, тогда индекс не эфективен. Иногда помогает добавление своих индексов, скажем только по одному полю. Но если добавить индекс вручную, то 1С при следующей первой загрузке сделает верификацию и выдаст сообщение о нарушении структуры индексов и предложит запустить программу в монопльном режиме для восстановления. Решить проблему верификации можно несколькими способами, подаправить вручную харнимую процедуру, которую вызывает 1С (это системаня хранимая процедура sys.sp_statistics), но сделать такое изменение в SQL2005 будет не совсем просто. Второе решение - подправить файл, по кторому 1С проводит верификацию, а это файл 1Cv7.dds (1Cv7.dd для dbf версии). Но 1С этот файл каждый раз пересоздает при реструктуризации, и поэтому придется каждый раз вносить такие изменения после руструктуризации. Чтобы не делать такие изменения каждый раз вручную, есть компонента, которая использует OpenConf "Проект OpenConf (Открытый Конфигуратор)" Вот ссылка на первоисточник: Дополнительные индексы на таблицы БД SQL. Скачать файл можо вот по этой сслыке: ddx.zip34. Резервная копия базы SQL и MD-файла
Для выполнения резервного копирования базы SQL и сохранением файла конфигурации (1Cv7.md) можно создать задание (job) на SQL сервере с примерно такой инструкцией на языке Transact - SQL:
DECLARE @path VARCHAR(1000) -- путь бекапа SQL
DECLARE @path2 VARCHAR(1000) -- путь архива rar
DECLARE @CMDStr VARCHAR(1000) -- строка команды для архивирования
SET @path = 'E:\SQL_DB\backup\buh_cb_' + CONVERT(VARCHAR(8),Getdate(),112) + '_' + REPLACE(CONVERT(CHAR(19),Getdate(),108),':','_')
SET @path2 = @path + '.rar'
SELECT @path = @path + '.bak'
BACKUP database [buh_cb] TO disk = @path
SET @CMDStr = 'rar a -y -dh -ep -rr[5] ' + @path2 + ' ' + @path + ' E:\1CV77\URBD\CB\1Cv7.MD'
EXEC xp_cmdshell
@CMDStr
-- удалим SQL бекап, оставим только rar.
SET @CMDStr = 'del ' + @path
EXEC xp_cmdshell
@CMDStr
GO
35. Как разрешить в SQL Server 2005 использование xp_cmdshell
Для включения возможности работы некоторых хранимых процедур и функций доступа в SQL 2005 предусмотрено приложение SQL Server Surface Area Configuration. Его можно открыть с меню программ Microsoft SQL Server 2005 - Configuration Tools - SQL Server Surface Area Configuration. В появившемся окне надо выбрать "Surface Arrey Configuration for Feature", затем включить необходимое значение и нажать кнопку Применить (Apply).36. Если вы не нашли желаемого ответа
Можете воспользоваться поиском на таких сайтах:http://thebeautiful.narod.ru/1csql.htm
http://www.sinor.ru/~my1c/knowhow.html
http://www.1csql.ru/materials/faq/admin.html
http://www.softpoint.ru/article.php
Или задать вопрос на одном из форумов:
http://1c.realnet.ru/forum/f.php
http://www.kuban.ru/cgi-bin/forum/forum9.cgi
http://itland.ru/forum/index.php
http://www.forum.mista.ru/index.php
http://www.itpb.ru/forum4/
© pvase 2008
Комментариев нет:
Отправить комментарий