sqlserverexecute
‘壹’ “sqlserver”怎样直接执行sql文件
一、客户的数据库数据被篡改,利用Log Explorer工具根据日志生成的回滚脚本有200多M,不可能一下子扔到查询分析器里去执行,于是想是否SQL Server是否可以像Oracle那样直接执行.sql文件。讲过查资料,测试,发现可以在cmd窗口中执行如下命令执行Sql文件:
二、osql -S 127.0.0.1 -U sa -P sa -i d: est.sql;
三、简单说明:osql为SQL Server的命令,要在cmd中执行该命令,一般安装完SQL Server后该命令对应的路径会自动添加到系统环境变量中。 -S 表示要连接的数据库服务器 -U表示登录的用户ID,-P表示登录密码 -i表示要执行的脚本文件路径。
四、Apache ant提供了直接执行sql脚本文件的功能:
五、Java代码:
- publicclassAntExecSql 
- {publicstaticvoidexecSqlFile(Stringurl,StringuserID,Stringpwd,StringsqlFile) 
- { 
- SQLExec2sqlExec=newSQLExec2(); 
- //设置数据库参数 
- sqlExec.setDriver("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
- sqlExec.setUrl(url); 
- sqlExec.setUserid(userID); 
- sqlExec.setPassword(pwd); 
- Filefile=newFile(sqlFile); 
- sqlExec.setSrc(file); 
- sqlExec.setPrint(true);//设置是否输出 
- //输出到文件sql.out中;不设置该属性,默认输出到控制台 
- //sqlExec.setOutput(newFile("d:/script/sql.out")); 
- sqlExec.setProject(newProject());//要指定这个属性,不然会出错 
- sqlExec.execute(); 
- } 
- publicstaticvoidmain(String[]args){ 
- Stringfile1="C:/1.sql"; 
- Stringurl="jdbc:sqlserver://localhost:1433;database=master"; 
- Stringusername="sa"; 
- Stringpwd="sa@jiaj"; 
- try{ 
- AntExecSql.execSqlFile(url,username,pwd,file1); 
- }catch(Exceptionex){ 
- ex.printStackTrace(); 
- } 
- } 
- } 
‘贰’ 问一个sqlserver的问题
问题很可能出在sql里面,你需要把组出的sql字符串检查一下,看里面有没有没有过滤掉的非法字符,如:输入的字符串中含有单引号等等。
‘叁’ SQLSERVER EXEC参数的问题
其实就是对同名称的存储过程加一个区分,但是又可以使用同一个名称来删除。
形象的说就是一个存储过程有两个版本。
‘肆’ 简单MS SQLSERVER 2000中用户自定义函数中的Execute问题!
wen_huang(黄志文)。非常感谢你。我仔细阅读了SQL
Server的帮助文档,在Function中使用Exec只可以执行扩展存储过程,所以我的方法行不通。你的方法非常好,谢谢。
另外,请你在下面两张贴子上答复一下,让得分有主。:-)
http://www.csdn.net/expert/topic/343/343383.shtm
http://www.csdn.net/expert/topic/343/343382.shtm
‘伍’ SQLServer动态exec查询语句,返回查询变量
drop procere tempPro;
go
create procere tempPro
as
declare
  @sql         nvarchar(200),
  @user       nvarchar(500),
  @tablename  nvarchar(100)
begin
  set   @tablename='t_stars'
  set   @sql=N'select @userOUT = stars_name from '+@tablename+' where stars_id=''hk1006''';   
  execute sp_executesql @sql, N'@userOUT varchar(30) output', @userOUT=@user output;
  print @user; 
end
go
exec tempPro;
‘陆’ sqlserver 中 sp_execute 求助
从你的语句来看,你应该是想用扩展存储过程的执行方法执行你的拼接语句
你应该用:sp_executesql,而不是:sp_execute,你可以搜索一些这两个语句的区别。
我在sql帮助文档中搜索了一下sp_execute,它必须要输入一个int的handle值,提示和你的报错很像。
说实话,我没用过sp_execute,而且这个sql帮助文档,也没说清楚这个函数应该怎么用
