(经常要用到触发器,但有时又不需要用到,那应该如何暂时停用呢!)
ALTER TABLE XXX表 DISABLE TRIGGER ALL --把XXX表的所有触发器停用
ALTER TABLE XXX表 ENABLE TRIGGER ALL --把XXX表的所有触发器启用
ALTER TABLE XXX表 DISABLE/ENABLE TRIGGER [test触发器名称] --把XXX表中的名称为[test]的触发器停用/启用 ,
把字段内容导出为文件(是SQL语句运行脚本的混合使用)
CREATE PROCEDURE 保存字段到文件 AS
begin
DECLARE @myRecordset int,@Stream int,@Fields int,@Field int --对象定义
DECLARE @value binary(8000),@Len int,@i int
DECLARE @Linkstr varchar(200),@Querystr varchar(200)
DECLARE @hr int,@src sql_variant, @desc sql_variant --错误信息变量
--连接字符
set @Linkstr='Provider=SQLOLEDB.1;Data Source=(local);Initial Catalog=president;user id =sa;password='
set @Querystr='Select top 1 标志图 from 公司注册资料' --你的字段!
--建立数据集
EXEC @hr = sp_OACreate 'ADODB.Recordset', @myRecordset OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @myRecordset, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
----建立数据流
EXEC @hr = sp_OACreate 'ADODB.Stream', @Stream OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @Stream, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
--设置数据流的工作状态
EXEC @hr = sp_OASetProperty @Stream, 'mode',3 --读/写状态
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @Stream, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
EXEC @hr = sp_OASetProperty @Stream, 'type', 1 --1是流 2是文本
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @Stream, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
EXEC @hr = sp_OAMethod @Stream,'open'
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @Stream, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
--打开数据集
EXEC @hr = sp_OAMethod @myRecordset,'open',null,@Querystr,@Linkstr
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @myRecordset, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
--获取数据集的字段的集合
EXEC @hr = sp_OAGetProperty @myRecordset, 'Fields', @Fields OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @myRecordset, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
--获取字段
EXEC @hr = sp_OAGetProperty @Fields, 'item(0)', @Field OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @Fields, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
--获取字段值的长度{ActualSize}
EXEC @hr = sp_OAGetProperty @Field, 'ActualSize', @Len OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @Field, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
set @i=0
while @Len > @i
begin
--获取字段值
EXEC @hr = sp_OAGetProperty @Field, 'GetChunk', @Value OUT,8000
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @Field, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
--写入流中
EXEC @hr = sp_OAMethod @Stream,'write',null,@Value
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @Stream, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
set @i=@i+8000
end
--切断流中无用的数据
EXEC @hr = sp_OASetProperty @Stream,'Position',@Len
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @Stream, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
EXEC @hr = sp_OAMethod @Stream,'SetEos'
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @Stream, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
--保存为文件
EXEC @hr = sp_OAMethod @Stream,'SaveToFile',null,'X:\XXX',2
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @Stream, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
exec sp_OADestroy @myRecordset
exec sp_OADestroy @Stream
exec sp_OADestroy @Fields
exec sp_OADestroy @field
end