0
System.Data.SqlClient.SqlBulkCopy를 통해 보내는 C# 클라이언트 응용 프로그램에서 들어오는 데이터를 처리하는 방법에 대한 제안을 찾고 있습니다. 원래의 의도는 데이터를 '마사지'할 수있는 SQL 서버에 앱을 통해 전송되는 모든 데이터를 유지하는 것이 었습니다. 보안을 유지하기 위해 AFTER INSERT 트리거가 다른 테이블로 복사하고 수신을 삭제하는 테이블 만 작성하도록 데이터가 전송됩니다.AFTER INSERT 트리거 내의 테이블 삭제
간단한 예 :
ALTER TRIGGER [dbo].[FromWeb_To_MyTable] ON [dbo].[_FromWeb_MyTable]
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO [dbo].[MyTable]([MyTableID],[MemberID],[LocationID],[ODBCID],[InsertDateTime])
SELECT i.[MyTableID],i.[MemberID],i.[LocationID],i.[ODBCID],i.[InsertDateTime]
FROM Inserted i;
DELETE FROM _FromWeb_MyTable
WHERE [MyTableID] IN (SELECT i.[MyTableID] FROM Inserted i);
END
는 지금은 약간 다르게 사용하는 것과 모든 것을 삭제해야하고 테이블 '로 이동'. 내 가장 큰 테이블은 약 35 만 건이 될 것입니다. 나는 드롭과 같이 말했다 테이블을 다시 만들 예정 : (이 방법은 미세 아래에있는 내 질문을 참조하고있다)
ALTER TRIGGER [dbo].[FromWeb_To_MyTable] ON [dbo].[_FromWeb_MyTable]
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS(SELECT [name] FROM sys.TABLES WHERE [name] = 'MyTable') DROP TABLE [dbo].[MyTable];
CREATE TABLE [dbo].[MyTable] (
[MyTableID] [int] NOT NULL,
[MemberID] [varchar](6) NOT NULL,
[LocationID] [varchar](50) NOT NULL,
[ODBCID] [varchar](50) NOT NULL,
[InsertDateTime] [datetime] NOT NULL
) on [PRIMARY];
INSERT INTO [dbo].[MyTable] ([MyTableID], [MemberID],[LocationID],[ODBCID],[InsertDateTime])
SELECT i.[MyTableID],i.[MemberID],i.[LocationID],i.[ODBCID],i.[InsertDateTime]
FROM Inserted i;
DELETE FROM _FromWeb_MyTable
WHERE [MyTableID] IN (SELECT [MyTableID] FROM Inserted);
END
사람이이 방법으로 문제를 볼 수 있습니까? 다른 제안 사항이 있습니까? 누군가가 새로 작성한 테이블의 색인을 생성하는시기와 방법을 설명 할 수 있습니까?
팁, Peter! – ShaneLS
@ShaneLS 대단히 환영합니다. 내가 도울 수있어서 기뻐. :) – peterm