Estamos enfrentando problemas ao criar um banco de dados na GUI do SSMS, pois às vezes ele atinge o tempo limite reclamando que não foi possível obter um bloqueio exclusivo no banco de dados do modelo. Outras vezes, o banco de dados é criado, mas parece estar demorando muito.
Também adicionei a conta de serviço à política de segurança local Executar manutenção de volume.
Este é um novo servidor SQL em cluster sem nenhum outro processo em execução no momento.
Eu consultei os tipos de espera e o maior é LCK_M_S
Eu perguntei sys.dm_tran_locks
durante o tempo em que ele é criado e posso ver dois bloqueios
Isso está correto, alguém tem algum conselho sobre por que a criação do banco de dados pode estar demorando tanto?
Mesmos problemas ao usar o código, sendo os seguintes:
CREATE DATABASE [TestTom]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N'TestTom', FILENAME = N'G:\MSSQL11.MSSQLSERVER\MSSQL\DATA\TestTom.mdf' , SIZE = 1048576KB , FILEGROWTH = 1048576KB )
LOG ON
( NAME = N'TestTom_log', FILENAME = N'F:\MSSQL11.MSSQLSERVER\MSSQL\Data\TestTom_log.ldf' , SIZE = 1048576KB , FILEGROWTH = 1048576KB )
GO
ALTER DATABASE [TestTom] SET COMPATIBILITY_LEVEL = 110
GO
ALTER DATABASE [TestTom] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [TestTom] SET ANSI_NULLS OFF
GO
ALTER DATABASE [TestTom] SET ANSI_PADDING OFF
GO
ALTER DATABASE [TestTom] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [TestTom] SET ARITHABORT OFF
GO
ALTER DATABASE [TestTom] SET AUTO_CLOSE OFF
GO
ALTER DATABASE [TestTom] SET AUTO_CREATE_STATISTICS ON
GO
ALTER DATABASE [TestTom] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [TestTom] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [TestTom] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [TestTom] SET CURSOR_DEFAULT GLOBAL
GO
ALTER DATABASE [TestTom] SET CONCAT_NULL_YIELDS_NULL OFF
GO
ALTER DATABASE [TestTom] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [TestTom] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [TestTom] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE [TestTom] SET DISABLE_BROKER
GO
ALTER DATABASE [TestTom] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [TestTom] SET DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [TestTom] SET PARAMETERIZATION SIMPLE
GO
ALTER DATABASE [TestTom] SET READ_COMMITTED_SNAPSHOT OFF
GO
ALTER DATABASE [TestTom] SET READ_WRITE
GO
ALTER DATABASE [TestTom] SET RECOVERY SIMPLE
GO
ALTER DATABASE [TestTom] SET MULTI_USER
GO
ALTER DATABASE [TestTom] SET PAGE_VERIFY CHECKSUM
GO
ALTER DATABASE [TestTom] SET TARGET_RECOVERY_TIME = 0 SECONDS
GO
USE [TestTom]
GO
IF NOT EXISTS (SELECT name FROM sys.filegroups WHERE is_default=1 AND name = N'PRIMARY') ALTER DATABASE [TestTom] MODIFY FILEGROUP [PRIMARY] DEFAULT
GO
Se você ver o segmento abaixo do código
O tamanho que você está pré-alocando é 1048576KB, que é aproximadamente 1G.
O mesmo ocorre com o arquivo de log 1048576KB, que é 1G.
Você pode alterar seu script e colocá-lo em poucos MB e ver se obtém novamente o bloqueio. Posteriormente, você pode executar
alter database modify file script
para aumentar o tamanho. Isso é algo que eu testemunhei para dizer a você. Esta não é uma resposta definitiva, mas tenho certeza de que reduzirá o tempo de criação, que é exatamente o seu problema.Você também observou se algum processo estava bloqueando o script de criação da tabela.
Além disso, primeiro execute o script create database e, em seguida, os comandos alter database.