SQL Server에서 특정 데이터베이스를 삭제할 때 일부 텍스트 파일을 삭제해야합니다 (오래된 데이터와 관련된 데이터가 포함되어 있기 때문에). 나는 쿼리를 실행하기 위해 어떤 종류의 방아쇠를 사용할 수 있다고 생각했지만, 어디에 넣을 지, 어떻게해야 하는지를 알 수 없다.SQL Server에서 데이터베이스를 삭제하면 코드가 실행됩니까?
SQL 서버 2005를 사용하고 있지만 시간이 지남에 따라 업그레이드 할 가능성이 있습니다.
아이디어가 있으십니까?
CREATE TRIGGER ddl_trig_database
ON ALL SERVER
FOR DROP_DATABASE
AS
DECLARE @database_count int
select @database_count=count(*) from sys.databases where name='myDbName'
IF @database_count = 0
BEGIN
-- Our database has been dropped, delete text files
DECLARE @Result int
DECLARE @FSO_Token int
EXEC @Result = sp_OACreate 'Scripting.FileSystemObject', @FSO_Token OUTPUT
EXEC @Result = sp_OAMethod @FSO_Token, 'DeleteFile', NULL, 'D:\afile.txt'
EXEC @Result = sp_OADestroy @FSO_Token
END
나는 또한 삭제 OLE 자동화를 가능하게하려면이 옵션을 실행했다 :
을덕분에,
제이미 마틴 스미스
감사합니다, 여기 내가 사용하는 코드입니다
exec sp_configure
go
exec sp_configure 'Ole Automation Procedures', 1
-- Configuration option 'Ole Automation Procedures' changed from 0 to 1.
go
reconfigure
go
업데이트를 보았습니다. 당신은 CLR을 사용하는 것이 더 좋을지 모르지만, 당신의 OLE 오브젝트가 파괴되지 않을 가능성이있는 문제를 피하는 것이 좋습니다. 적어도 파괴를 시도한 채로 잡아 당겨서 잡아 당기는 것이 좋습니다. 오브젝트가 생기면 어떻게 될지 잘 모르겠습니다. 현재 deletefile 줄에 오류가 있습니다. 비슷한 CLR 함수가 여기에 있습니다. http://www.mssqltips.com/tip.asp?tip=1374 –
e- 나는 또한 내 대답을 어떻게 업데이트 할 것인가에 대한 예제를 업데이트했습니다. 목표 데이터베이스가 h 제됩니다. –
감사합니다. 훌륭한 정보 :) –