Для автоматизации задачи получения информации о периодах хранения данных в базе 1С.
Решение здесь.
select table_name
from information_schema.columns
where column_name='_Period'
Для автоматизации задачи получения информации о периодах хранения данных в базе 1С.
Решение здесь.
select table_name
from information_schema.columns
where column_name='_Period'
Дано: База с неправильным именем не на том диске.
Надо: Переименовать и перенести.
Решение:
1. Меняем имя базы:
sp_renamedb 'старое' , 'новое'
2. Меняем логические и физические имена файлов:
ALTER DATABASE имя_базы MODIFY FILE (NAME = 'старое_data', NEWNAME = 'новое_data')
ALTER DATABASE имя_базы MODIFY FILE (NAME = 'старое_log', NEWNAME = 'новое_log')
3. Отключаем базу командой detach
4. Переименовываем файлы
5. Переносим в правильное расположение
6. Присоединяем командой attach, указывая правильные ссылки на файлы
7. Возвращаем правильного владельца через sp_changedbowner (от чьего имени с базой работает 1С)
Отсюда: https://its.1c.ru/db/metod8dev/content/2377/hdoc
1. Определить логические имена файлов базы данных TEMPDB (колонка "NAME" результата выполнения процедуры). Для этого нужно в Query Analyzer выполнить следующую команду:
USE tempdb GO EXEC sp_helpfile GO
2. Изменить месторасположение файлов базы данных TEMPDB с помощью команды ALTER DATABASE. Для этого нужно в Query Analyzer выполнить следующую последовательность команд:
USE master GO ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'Новый_Диск:\Новый_Каталог\tempdb.mdf') GO ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'Новый_Диск:\Новый_Каталог\templog.ldf') GO
3. Перезапустить Microsoft SQL Server.
alter table ИмяНашейТаблицы alter column ИмяКолонкиКоторуюНадоУвеличить nvarchar(75)
Решение 1.
http://blog.imageofyou.ru/2011/11/09/all-tables-size/Понадобилось мне тут давеча оценить размер таблиц в базе данных одного из наших клиентов. Еще со времен SQL Server 2000 я знаю про процедуру sp_spaceused, но она хороша только для случая, когда нужен размер лишь одного объекта – конкретной таблицы или же всей БД целиком. А для того, чтобы посмотреть размер каждого объекта (например, для того, чтобы найти аномально большие таблицы) приходилось извращаться с курсором и сохранением результата выполнения процедуры во временной таблице. Не самый изящный способ.
select t.name as TableName, Min(t.create_date) as CreateDate, ds.name as FileGroupName, SUM(u.total_pages) * 8 / 1024 as SizeMB from sys.tables as t inner join sys.partitions as p on t.object_id = p.object_id inner join sys.allocation_units as u on p.partition_id = u.container_id inner join sys.data_spaces as ds on u.data_space_id = ds.data_space_id group by t.name, ds.name order by SizeMB desc
Решение 2
http://mainview.ru/raznoe/sql-mysql/kak-najti-samye-bolshie-tablicy-v-baze-dannyx-ms-sql
USE [DatabaseName] GO CREATE TABLE #temp ( table_name sysname , row_count INT, reserved_size VARCHAR(50), data_size VARCHAR(50), index_size VARCHAR(50), unused_size VARCHAR(50)) SET NOCOUNT ON INSERT #temp EXEC sp_msforeachtable 'sp_spaceused ''?''' SELECT a.table_name, a.row_count, COUNT(*) AS col_count, a.data_size FROM #temp a INNER JOIN information_schema.columns b ON a.table_name collate database_default = b.table_name collate database_default GROUP BY a.table_name, a.row_count, a.data_size ORDER BY CAST(REPLACE(a.data_size, ' KB', '') AS integer) DESC DROP TABLE #temp
Альтернативные варианты: искать обработки с инфостарта, писать самому, получить демонстрационный доступ на сервисе gilev.ru
Use master8. Там же выполняем скрипт, который выводит номер статуса аварийной базы данных, например, 536870912 - полнотекстовые функции включены и т.д.
go
sp_configure 'allow updates', 1
reconfigure with override
go
Use master
go
sp_dboption '', 'single user', 'true'
go
USE
GO
DBCC CHECKDB('', REPAIR_ALLOW_DATA_LOSS)
go
sp_dboption '', 'single user', 'false'
go
Use master
go
sp_configure 'allow updates', 0
go