关于"拒绝了对对象 'xp_cmdshell'(数据库 'master',所有者 'dbo')的 EXECUTE 权限"的问题??
我从网上下了一个批量导入的存储过程,但我在用asp.net调用时提示错误,见下面!
create procedure File2Table
@servername varchar(200) --服务器名
,@username varchar(200) --用户名,如果用NT验证方式,则为空''
,@password varchar(200) --密码
,@tbname varchar(500) --数据库.dbo.表名,如果不指定:.dbo.表名,则导出数据库的所有用户表
,@filename varchar(1000) --导入/导出路径/文件名,如果@tbname参数指明是导出整个数据库,则这个参数是文件存放路径,文件名自动用表名.txt
,@isout bit --1为导出,0为导入
as
declare @sql varchar(8000)
if @tbname like '%.%.%' --如果指定了表名,则直接导出单个表
begin
set @sql='bcp '+@tbname
+case when @isout=1 then ' out ' else ' in ' end
+' "'+@filename+'" /w'
+' /S '+@servername
+case when isnull(@username,'')='' then '' else ' /U '+@username end
+' /P '+isnull(@password,'')
exec master..xp_cmdshell @sql
end
else
begin --导出整个数据库,定义游标,取出所有的用户表
declare @m_tbname varchar(250)
if right(@filename,1)<>'\' set @filename=@filename+'\'
set @m_tbname='declare #tb cursor for select name from '+@tbname+'..sysobjects where xtype=''U'''
exec(@m_tbname)
open #tb
fetch next from #tb into @m_tbname
while @@fetch_status=0
begin
set @sql='bcp '+@tbname+'..'+@m_tbname
+case when @isout=1 then ' out ' else ' in ' end
+' "'+@filename+@m_tbname+'.txt " /w'
+' /S '+@servername
+case when isnull(@username,'')='' then '' else ' /U '+@username end
+' /P '+isnull(@password,'')
exec master..xp_cmdshell @sql
fetch next from #tb into @m_tbname
end
close #tb
deallocate #tb
end
GO
再执行时,提示如下错误!
数据导入错误:拒绝了对对象 'xp_cmdshell'(数据库 'master',所有者 'dbo')的 EXECUTE 权限。
问题点数:20、回复次数:1Top
1 楼coolksj(Jason.NET(请看,问题的背后是什么))回复于 2005-04-14 11:13:49 得分 20
xp_cmdshell 需要有系统权限,如果使用sa一定没问题Top
相关问题
- 无法更改对象 'tree' 或其所属的某个子对象的所有者,因为新所有者 'dbo' 已有同名的对象。
- 1。一个SQL2000的存储过程是导入的,所有者不是dbo,如何把所有者改回来.2。一个程序用的sql2000数据库,如何在sql2000上看到这个程序执
- 改变表的所有者
- 改变表的所有者
- 《ASP.NET数据库入门经典》书中例子调试出错:拒绝了对对象 'sp_CustomersByState'(数据库 'Northwind',所有者 'dbo')的 EXECUTE 权限
- 求助:数据库链接时出错:拒绝了对对象 'notice'(数据库 'gyzxstu',所有者 'dbo')的 SELECT 权限
- 如何更改table的所有者?
- ◆ ---- 如何改变文件的所有者 ---- ◆
- ◆ ---- 如何改变文件的所有者 ---- ◆
- 数据表所有者问题




