首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

触发器写入txt文件报错解决办法

2012-02-16 
触发器写入txt文件报错我在某个表写了一个触发器,然后通过C#往表里插入数据:触发器大致如下:ALTER trigger

触发器写入txt文件报错
我在某个表写了一个触发器,然后通过C#往表里插入数据:
触发器大致如下:

ALTER trigger [dbo].[testTrigger] on 表
for insert 
as 
exec master..xp_cmdshell 'bcp 表 out d:\test.txt /c /U sa /P 密码 '

不知道为什么每次插入数据总是会报错。

但是
exec master..xp_cmdshell 'bcp 表 out d:\test.txt /c /U sa /P 密码 '
这句话单独执行是可以的


bcp 表 out d:\test.txt /c /U sa /P 密码 
这句话在命令行里也可以执行

非常想知道怎么才能让数据库不报错?急,求教高人啊~~~~~

[解决办法]
报什么错误,你是想干什么?
[解决办法]
别这么乱用触发器

xp_cmdshell 是要禁止的语句,你还放在触发器进行
[解决办法]
直接执行,别用触发器。
[解决办法]
先不讨论效率问题,正确语法如下,

SQL code
ALTER trigger [dbo].[testTrigger] on 表名for insertasexec master..xp_cmdshell 'bcp "select * from [数据库].dbo.[表名](nolock)" queryout d:\test.txt -c -U sa -P 密码 '
[解决办法]
但这么做是极没效率的事,每次新增记录都做全表导出会占用产生磁盘IO.

建议可在触发器里把新增的记录转存一份到历史表里,然后固定时间对历史表导出为文件即可.


[解决办法]
探讨
但这么做是极没效率的事,每次新增记录都做全表导出会占用产生磁盘IO.

建议可在触发器里把新增的记录转存一份到历史表里,然后固定时间对历史表导出为文件即可.

[解决办法]
SQL code
exec sp_configure 'xp_cmdshell',1GOreconfigureGO
[解决办法]
程序连接SQL Server的帐号,要有执行xp_cmdshell的权限.
SQL code
  GRANT EXECUTE ON sys.xp_cmdshell TO [数据库User名]
[解决办法]
直接执行

热点排行