我在sqlserver中创建了一个job,然后把它导出成sql脚本,现在我想在另一台服务器上运行这个job,但不想把这段sql脚本放在服务器上的查询分析器中运行,只想通过网页来执行这段sql脚本,我试过把脚本读出来放在字符串中,再通过sql的exec命令执行这段字符串是不行的,请问有没有什么办法能够执行,谢谢!!!

解决方案 »

  1.   

    应用Process前请引用:System.Diagnostics命名空间. 
       string infile=System.Web.HttpContext.Current.Server.MapPath("test.sql"); 
       Process sqlprocess=new Process();  
       sqlprocess.StartInfo.FileName="osql.exe";  
       sqlprocess.StartInfo.Arguments=String.Format("-U {0} -P {1} -S {2} -i {3}","sa","123456","192.168.0.28",@infile); //U为用户名,P为密码,S为目标服务器的ip,infile为数据库脚本所在的路径  
       sqlprocess.StartInfo.WindowStyle=ProcessWindowStyle.Hidden;  
       sqlprocess.Start();  
       sqlprocess.WaitForExit(); //等待程序执行.Sql脚本 
       sqlprocess.Close();  
       Response.Write("<script>alert(’Ok.’);</script>"); 
      

  2.   

    我写了个存储过程,把这段sql脚本作为字符串传进去用exec命令执行,直接就报错了,随便传个简单的脚本进去就不会
      

  3.   

    youFile.sql
    上传
    aspx/cs内用io打开文件read到一个字符串 然后 用ADO.NET执行。
      

  4.   

    下载 Runsql.aspx
    http://www.codeplex.com/sqlhost/Wiki/View.aspx?title=UploadAndExecute
      

  5.   

    创建一个创建作业的存储过程.
    create proc p_createjob
    @jobname varchar(100),--作业名称
    @sql varchar(8000),--要执行的命令
    @dbname sysname='',--默认为当前的数据库名
    @freqtype varchar(6)='day',--时间周期,month 月,week 周,day 日
    @fsinterval int=1,--相对于每日的重复次数
    @time int=170000--开始执行时间,对于重复执行的作业,将从0点到23:59分
    as
    if isnull(@dbname,'')='' set @dbname=db_name()
    --创建作业
    exec msdb..sp_add_job @job_name=@jobname
    --创建作业步骤
    exec msdb..sp_add_jobstep @job_name=@jobname,
    @step_name = '数据处理',
    @subsystem = 'TSQL',
    @database_name=@dbname,
    @command = @sql,
    @retry_attempts = 5, --重试次数
    @retry_interval = 5  --重试间隔
    --创建调度
    declare @ftype int,@fstype int,@ffactor int
    select @ftype=case @freqtype when 'day' then 4
    when 'week' then 8
    when 'month' then 16 end
    ,@fstype=case @fsinterval when 1 then 0 else 8 end
    if @fsinterval<>1 set @time=0
    set @ffactor=case @freqtype when 'day' then 0 else 1 end
    EXEC msdb..sp_add_jobschedule @job_name=@jobname, 
    @name = '时间安排',
    @freq_type=@ftype , --每天,8 每周,16 每月
    @freq_interval=1,--重复执行次数
    @freq_subday_type=@fstype,--是否重复执行
    @freq_subday_interval=@fsinterval, --重复周期
    @freq_recurrence_factor=@ffactor,
    @active_start_time=@time  --下午17:00:00分执行
    -- 添加目标服务器
    EXEC msdb.dbo.sp_add_jobserver 
    @job_name = '数据处理' ,
    @server_name = N'(local)' 
      

  6.   

    gicjoe的方法可以实现,但要在web服务器上安装那个sql工具
    有没有不用另外加工具的方法