我没有权限执行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
有什么建议吗?
答案 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
权限。