我在主服务器上有sql-server 2008数据库。
我有10个终端连接到这个服务器并对数据库起作用。
我需要通过任何终端向数据库中的每个新插入 - 在服务器中
行将插入文本文件(每行)
我能做到吗?提前谢谢
答案 0 :(得分:0)
我建议使用后插入触发器来执行此操作,有一些很好的示例:
http://msdn.microsoft.com/en-us/library/ms189799.aspx
如果在插入数据的表上创建触发器,则每次从任何终端插入时都会触发该触发器。在触发器内部,您可以使用pranay_stacker的建议将插入的详细信息写入日志文件。
作为我刚刚迅速掀起的事情的一个例子:
create TRIGGER dbo.productTrigger
on dbo.Product
after insert
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
declare @data nvarchar(255);
DECLARE dataCursor CURSOR FAST_FORWARD FOR
select ProductCode from inserted;
OPEN dataCursor
FETCH NEXT FROM dataCursor
INTO @data
WHILE @@FETCH_STATUS = 0 BEGIN
declare @cmd sysname;
set @cmd = 'echo ' + @data + ' >> c:\test\var_out2.txt';
exec master..xp_cmdshell @cmd, NO_OUTPUT;
FETCH NEXT FROM dataCursor
INTO @data
END
CLOSE dataCursor;
DEALLOCATE dataCursor;
END
您当然必须修改数据库和表名等。
要记住的另一件事是你需要启用xp_cmdshell,因为出于安全原因,SQL服务器已将其切换,这可以通过以下方式完成:
EXEC master.dbo.sp_configure 'show advanced options', 1
RECONFIGURE
EXEC master.dbo.sp_configure 'xp_cmdshell', 1
RECONFIGURE
go
最后我注意到的最后一件事就是当我对c:\ var_out2.txt发出回音时,它给了我一个“拒绝访问”但是当我把它改成c:\ test \ var_out2.txt它工作得很好。所以请记住这一点。