exec master..xp_cmdshell 'isql -U sa -P 123 -i c:\脚本.sql'

解决方案 »

  1.   

    -U sa 是SQL的用户名
    -P 123是SQL的密码
      

  2.   

    昨天我试过这个当时不行,现在这个确实好用,可能因为path:的问题,
    但是我也无法保证用户的机器path已经设置正确,估计也可能跟其它
    环境变量有关.
    是否有直接调用sqlserver本身的啥机制去执行这句.
    isql肯定也是把文件确出来,然后执行....它自己怎么实现
    这个有没有一个更直接的调用方法
      

  3.   

    leo_lesley(leo) 往哪里传? 还是 cmdshell>?
      

  4.   

    SET QUOTED_IDENTIFIER OFF 
    declare @ls_path varchar(100)
    set @ls_path = 'c:\test.sql'
    exec("master..xp_cmdshell 'isql -U sa -P -i "+@ls_path+"'")
      

  5.   

    还是同一个办法? 不能截获isql实际是调用了什么? 难道isqlw 是调用isql去完成任务?
      

  6.   

    大家注意了,麻烦出现了.
    昨天我用数据库生成的建立函数的语法存放在一个文件下,
    结果用isql调用竟然出错,不能执行,但是这些语法可以在
    查询分析器下运行.
    报错的内容大致如下
    //报错内容
    1> 2> 3> 4> 5> 6> 7> 8> 9> 10> 11> 12> Msg 170, Level 15, State 1, Server XUZB, Line 1
    第 1 行: '' 附近有语法错误。
    null
    //结束终止的位置总存在注释语句,后来我把所有的注释语句都删除了,
    就在最后一行报同样的错误.这个是isql本来的啥机制造成的吧?
    我想是,但是怎么去执行那个文件是我的初衷,并不是怎么一定要
    用cmdshell+isql去执行这个. 难不成我再试试osql?我没有使用这些东西的经验,请大侠们指教.
      

  7.   

    我发现了,一种方式是保存成 unicode的sql文件,另一种是普通的文本文件,
    后者可以执行,前者就失败.....
    这个我自己处理吧 
    不知道有没有人讨论一下iqsl 可能出现的其它问题 谢谢