日期:2014-05-18  浏览次数:20429 次

菜鸟问老问题,图片存储问题
版本:SQL2000

网上搜了个例子,前边的都能执行,往后就不行了
方法:
1、建立过程
CREATE PROCEDURE sp_textcopy (
@srvname varchar (30),
@login varchar (30),
@password varchar (30),
@dbname varchar (30),
@tbname varchar (30),
@colname varchar (30),
@filename varchar (30),
@whereclause varchar (40),
@direction char(1))
AS
DECLARE @exec_str varchar (255)
SELECT @exec_str =
'textcopy /S ' + @srvname +
' /U ' + @login +
' /P ' + @password +
' /D ' + @dbname +
' /T ' + @tbname +
' /C ' + @colname +
' /W " ' + @whereclause +
' " /F ' + @filename +
' / ' + @direction
EXEC master..xp_cmdshell @exec_str

2、建表和初始化数据
create table 表名 (编号 int,image列名 image)
go
insert 表名 values(1,0x) -- 必须的,且不是null
insert 表名 values(2,0x) -- 必须的,且不是null
go



--到这里一直是对的
3、读入 
sp_textcopy '你的服务器名 ', 'sa ', '你的密码 ', '库名 ', '表名 ', 'image列名 ', 'c:\图片.bmp ', 'where 编号=1 ', 'I ' --注意条件是 编号=1 

sp_textcopy '你的服务器名 ', 'sa ', '你的密码 ', '库名 ', '表名 ', 'image列名 ', 'c:\bb.doc ', 'where 编号=2 ', 'I ' --注意条件是 编号=2 

go 

4、读出成文件 
sp_textcopy '你的服务器名 ', 'sa ', '你的密码 ', '库名 ', '表名 ', 'image列名 ', 'c:\图片.bmp ', 'where 编号=1 ', 'O ' --注意条件是 编号=1 

sp_textcopy '你的服务器名 ', 'sa ', '你的密码 ', '库名 ', '表名 ', 'image列名 ', 'c:\bb.doc ', 'where 编号=2 ', 'O ' --注意条件是 编号=2 
go 

************如果报textcopy不是可执行文件的话,你就到 
C:\Program Files\Microsoft SQL Server\MSSQL\Binn 
目录下拷备 textcopy.exe到: 
C:\Program Files\Microsoft SQL Server\80\Tools\Binn



读入的时候提示:TEXTCOPY Version 1.0
DB-Library version 8.00.2039
ERROR: Argument '/' not recognized
NULL



------解决方案--------------------
在你的存储过程中,先不要执行,先打印下@exec_str 
看看语句是什么,然后在查询窗口中,看这个语句是否能执行。语法提示是 /不能识别
------解决方案--------------------
SQL code
 
CREATE PROCEDURE sp_textcopy ( 
@srvname varchar (30), 
@login varchar (30), 
@password varchar (30), 
@dbname varchar (30), 
@tbname varchar (30), 
@colname varchar (30), 
@filename varchar (30), 
@whereclause varchar (40), 
@direction char(1)) 
AS 
DECLARE @exec_str varchar (255) 
SELECT @exec_str = 
'textcopy /S ' + @srvname + 
' /U ' + @login + 
' /P ' + @password + 
' /D ' + @dbname + 
' /T ' + @tbname + 
' /C ' + @colname + 
' /W " ' + @whereclause + 
' " /F ' + @filename + 
' / ' + @direction 

print @exec_str --这里添加

EXEC master..xp_cmdshell @exec_str

------解决方案--------------------
最后那句话收回。
可能是"的处理问题。