Tüm eklerin tek bir saklı yordamla yapıldığı bir oturum açma tablom var.
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
Şu anda bu tabloda yaklaşık 45500000 satır var ve günlüğe kaydetmeyi farklı bir tabloya yönlendirmek istiyorum.
Benim fikrim şu betiği kullanmak
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;
Bu çalışıyor mu ve LogInsert'i çağıran diğer prosedürleri minimum düzeyde etkiliyor mu?
2
Sp_recompile dosyasına ihtiyacınız yoktur. Dbo.LogTable nesnesini kullanan nesneler için yordam önbelleğinin süresi, nesneyi yeniden adlandırdığınızda otomatik olarak sona erer.
—
mrdenny