понедельник, 2 мая 2011 г.

Как обнулить счетчик

     Вот что было найдено по этой теме:

     Даже если вы удалите все поля из таблицы БД, где есть автоинкриментное поле, Вы все равно не добъетесь того чтобы ваш счетчик начал свой отчет с нуля. Как же это сделать?
     Чудная возможность есть у MS SQL сервера - автоинкремировать поле IDENTITY. Но когда вы удаляете все содержимое таблицы, вы надеетесь, что счетчик начнет свой отсчет снова, но это не так. Для того чтобы сбросить его значение вы можете попробовать следующее:
  1. Вы можете снять свойство IDENTITY с поля и поставить его заново, но это не есть правильно.
  2. TRUNCATE TABLE имя_таблицы - удаляет все содержимое таблицы и обнуляет счетчик автоматически. В принципе - то что надо когда вы рушите всю таблицу и хотите чтобы счетчик тоже порушился. Но если в таблице существует FOREIGN KEY вам придется прибегнуть к третьему способу.
  3. DBCC CHECKIDENT ('имя_таблицы', RESEED, новое_стартовое_значение) - сбрасывает значение счетчика в указанное значение. Способ подходит когда вы выкидываете часть таблицы и хотите чтобы поле счетчика не имело провалов.

Присоединение базы с сетевого диска (или расшаренной папки)

     Присоединять базу находящуюся в расшаренной папке на другом компе этим способом сервер не захотел, выдав ошибку:

Msg 5110, Level 16, State 2, Line 1
Файл "\\192.168.1.10\base.mdf" находится по сетевому пути, который не поддерживается для файлов базы данных.


     После поиска в инете решение было найдено:

dbcc traceon(1807)
go
  EXEC sp_attach_db 'base', '\\192.168.1.10\base.mdf', '\\192.168.1.10\base_log.ldf'



(имя базы, путь к файлу)

Перемещение пользовательских баз данных

      В следующем примере выполняется перемещение базы данных mydb. Эта база данных содержит один файл данных Mydb.mdf и один файл журнала, Mydblog.ldf. Если подлежащая перемещению база данных состоит из нескольких файлов данных и журналов, необходимо перечислить все эти файлы в списке, передаваемом хранимой процедуре sp_attach_db Элементы списка разделяются запятыми. Поскольку процедуре sp_detach_db список перемещаемых файлов не передается, то вызов данной процедуры sp_detach_db не зависит от количества файлов в базе данных.
      Отключите базу данных, как показано ниже:

use master
go
sp_detach_db 'mydb'
go


     Скопируйте файлы журналов и данных из текущего местоположения (D:\Mssql7\Data) в новое (E:\Sqldata).
     Повторно подключите базу данных. Укажите новое местоположение файлов:


use master
go
sp_attach_db 'mydb','E:\Sqldata\mydbdata.mdf','E:\Sqldata\mydblog.ldf'
go


     Проверьте изменение местоположения файлов с помощью хранимой процедуры sp_helpfile:

use mydb
go
sp_helpfile
go


     В столбце filename должно отображаться новое местоположение файлов.