Проект переехал на новый домен!  [[ перейти ]]

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