MSSQL 2000 SP3a
Каждая база состоит из двух внешних файлов
1. файла данных (mdf)
2. файла транзакций (ldf)
Узнать версию
SELECT @@VERSION
Версию продкта, сервис пак и Эдийшн
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY('productlevel'), SERVERPROPERTY('edition')
версия и билд
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
Реиндексация....
USE f2x0ff004
EXEC _1sp_DBReindex
или
USE f2x0ff004
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
или создать процедуру _1sp_DBReindex и пользовать как в варианте 1.
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
mdf 234 944 kb
ldf 47 616 kb
переводим в одно пользовательский режим
sp_dboption 'f2x0ff004','single user',true
проверяем базу и исправляем
DBCC CHECKDB ('f2x0ff004',REPAIR_REBUILD)
если не удаётся исправить исправляем с потерей данных
предварительно делаем бэкап...
DBCC CHECKDB ('f2x0ff004',REPAIR_ALLOW_DATA_LOSS)
переводим в многопользовтельский
sp_dboption 'f2x0ff004','single user',false
Пересоздавать индексы имеет смысл в одном из следующих случаев:
1) Индекс физически поврежден. Это случается довольно редко и для восстановления нужно использовать вышеупомянутый DBCC CHECKDB.
2) Страницы индекса сильно фрагментированы и требуется их упорядочить.
3) Нужно изменить степень заполнения индексных страниц (fill factor).
4) Требуется изменить тип индекса (кластерный/некластерный). При использовании 1С это обычно неактуально.
Дефрагментация индексов
USE f2x0ff004
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
Вкратце, для работы с памьятью более 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
Как померить производительность...
http://www.sql.ru/articles/mssql/03121001PERF_COUNTERs.shtml