Dev O'Connor Ответов: 0

Добавление файловой группы при создании базы данных на SQL 2014


Привет,

у меня есть клиент, который пытается принудительно использовать файловые группы при создании новых баз данных. Поскольку администратор не создает базу данных и выполняется сторонним программным обеспечением с помощью команды "создать базу данных", у нас нет возможности применить ее.
Мы попробовали мониторинг сервера tigger для команды create database, но затем обнаружили, что вы не можете изменить базу данных из-за того, что она находится в триггере или в транзакции с несколькими операторами.

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

учитывая, что SQL server сильно использует файловые группы, я удивлен, что нет более простого способа настроить это, по крайней мере, я не вижу.

Таким образом, по существу, когда выполняется команда "создать базу данных", мы хотели бы добавить файловую группу с несколькими файлами на разных дисках.

Я построил ниже который работает когда я запускаю его после создания базы данных однако это требует постоянного администратора int база данных создается ?y как это сделать при создании базы данных ?

Ценю любую помощь, которую вы можете оказать.

Что я уже пробовал:

Вот код для создания файловой группы (обратите внимание, что это не конечный продукт, а просто тестовый, который мы разработали для тестирования дисков и т. д.



SET @SQL = 
	'
		USE master
		ALTER DATABASE ' + @DatabaseName + '
		ADD FILEGROUP FG_' + @DatabaseName + ';


		BEGIN TRANSACTION
		ALTER DATABASE ' + @DatabaseName + '

		ADD FILE
		(
			NAME = FGF_' + @DatabaseName + '_1,
			FILENAME = ''F:\SQLDATA\FGF_' + @DatabaseName + '_1.ndf'',
			SIZE = 50MB,
			FILEGROWTH = 50MB
		),
		(
			NAME = FGF_' + @DatabaseName + '_2,
			FILENAME = ''G:\SQLDATA\FGF_' + @DatabaseName + '_2.ndf'',
			SIZE = 50MB,
			FILEGROWTH = 50MB
		),
		(
			NAME = FGF_' + @DatabaseName + '_3,
			FILENAME = ''H:\SQLDATA\FGF_' + @DatabaseName + '_3.ndf'',
			SIZE = 50MB,
			FILEGROWTH = 50MB
		),
		(
			NAME = FGF_' + @DatabaseName + '_4,
			FILENAME = ''I:\SQLDATA\FGF_' + @DatabaseName + '_4.ndf'',
			SIZE = 50MB,
			FILEGROWTH = 50MB
		),
		(
			NAME = FGF_' + @DatabaseName + '_5,
			FILENAME = ''J:\SQLDATA\FGF_' + @DatabaseName + '_5.ndf'',
			SIZE = 50MB,
			FILEGROWTH = 50MB
		),
		(
			NAME = FGF_' + @DatabaseName + '_6,
			FILENAME = ''K:\SQLDATA\FGF_' + @DatabaseName + '_6.ndf'',
			SIZE = 50MB,
			FILEGROWTH = 50MB
		),
		(
			NAME = FGF_' + @DatabaseName + '_7,
			FILENAME = ''L:\SQLDATA\FGF_' + @DatabaseName + '_7.ndf'',
			SIZE = 50MB,
			FILEGROWTH = 50MB
		)
		TO FILEGROUP  FG_' + @DatabaseName + ';
	';

    EXEC (@SQL);

0 Ответов