从文件运行查询

时间:2014-06-28 07:15:42

标签: sql sql-server sql-server-2008 stored-procedures

我没有权限执行xp_cmdshell程序。

无论如何我可以从不同的文件执行查询吗?

我试过这个并且不知道这是不是一个好的选择:

 --query1.sql
 Create Procedure sp_1
 as
 Begin
    declare @q1 varchar(MAX)
    set @q1 = ' some complicated query '
    exec(@q1)
 End


 --query2.sql
 Create Procedure sp_2
 as
 Begin
    declare @q1 varchar(MAX)
    set @q1 = ' some complicated query '
    exec(@q1)
 End

 --mainquery.sql
 Exec sp_1
 Exec sp_2

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

如果您恰好拥有BULK INSERT权限,则可以尝试使用BULK INSERT命令导入文件,从导入的表格中构建查询' (应该只包含一列),将内容合并为一个varchar变量,然后执行它。

create table #tmp (cmd varchar (255))
bulk insert #tmp from 'd:\foo.txt'
declare @cmd varchar(max), @row varchar(255)

declare x cursor for select cmd from #tmp
open x

set @cmd=''
fetch next from x into @row
while @@FETCH_STATUS = 0 begin
  set @cmd = @cmd + @row
  fetch next from x into @row
end
close x
deallocate x
exec (@cmd)

但它要求您获得BULK INSERT权限。