Tengo una tabla de inicio de sesión en la que todas las inserciones se realizan mediante un único procedimiento almacenado.
CREATE TABLE dbo.LogTable(
LogRefnr int IDENTITY(1, 1) NOT NULL,
LogQuery varchar(255) NOT NULL,
LogTime datetime NOT NULL,
logQueryDuration int NULL,
LogSessionID int NULL,
CONSTRAINT PK_Log PRIMARY KEY CLUSTERED (LogRefnr)
)
go
Create procedure DBO.LogInsert ( @Query varchar(255), @time datetime, @duration int, @SessinID int) as
begin
Insert into LogTable ( LogRefnr, LogQuery, logQueryDuration, LogSessionID)
Values (@Query, @time, @duration, @SessinID);
end;
GO
Actualmente hay alrededor de 45500000 filas en esa tabla y quiero dirigir el registro a una tabla diferente.
Mi idea es usar el siguiente script
begin Transaction
exec sp_rename LogTable, LogTableOld;
CREATE TABLE dbo.LogTable(
LogRefnr int IDENTITY(46000000, 1) NOT NULL, -- greater than select max(LogRefnr) from LogTableOld
LogQuery varchar(255) NOT NULL,
LogTime datetime NOT NULL,
logQueryDuration int NULL,
LogSessionID int NULL,
CONSTRAINT PK_Log2 PRIMARY KEY CLUSTERED (LogRefnr);
)
go
sp_recompile LogTable;
go
Commit;
¿Funciona y tiene un impacto mínimo en otros procedimientos que llaman a LogInsert?
2
No necesita la sp_recompile. El caché de procedimientos para cualquier objeto que use el objeto dbo.LogTable expirará automáticamente cuando cambie el nombre del objeto.
—
mrdenny