![]() |
1
2
在我看来,您没有在问题的答案中等待SQL代码。问题的主要方面是安全方面。如果没有 系统管理员 没有新的安全漏洞?我想这是你真正的问题。
我看到了至少三种解决你问题的方法。但首先简单解释为什么所有基于
扩展存储过程
. 扩展存储过程,如
在所有实现方式中,您应该准确地定义 您将保存密码的位置 用于访问文件系统的帐户。你有不同的选择,都有相应的优缺点。可以使用模拟来允许使用最终用户的帐户访问文件系统。最好的方法取决于你所处的环境。 |
![]() |
2
1
您可以构建一个SQL代理作业,并从触发器或SP通过系统SP将其启动。该作业可能会调用ssis或大容量转储脚本…但是,返回即时错误消息可能是一个问题 总的来说,这是一个非常不寻常的要求——你想完成什么? 更新: 经过更多的思考之后——这是一个设计问题,我还没有能够简单地通过使用SQL Server SP找到解决方案。 在过去-这就是我所做的:
这并不容易,但这是导出数据最有效的方法,数据从数据库传输到文件,而不需要通过浏览器传输到应用服务器和用户PC。 |
![]() |
3
1
你能使用OLE自动化吗?这很难看,你可以使用一些基于集合的字符串构建技术,而不是光标,但是这里……
|
![]() |
4
1
一般来说,不,如果没有大量的麻烦和努力以及系统管理权限,就无法完成这类工作。 SQL是一个数据库引擎,专注于数据库问题,因此,非常正确地说,它有非常糟糕的文件操作工具。解决办法包括:
保安似乎是你的替罪羊。总的来说,当SQL解包到操作系统时,它拥有启动SQL服务所使用的NT帐户的所有权利;如果要限制网络访问,请仔细配置该帐户(不要将其设为域管理!) 可以以没有系统管理权限的用户的身份调用xp_cmdshell,并将这些调用配置为不具有与SQL服务NT帐户相同的访问权限。根据BOL(SQL 2005及以上版本):
xp命令shell代理帐户
可以通过执行sp_xp_cmdshell_proxy_帐户来创建代理帐户凭据。作为参数,此存储过程使用Windows用户名和密码。例如,下面的命令为具有Windows密码sdfh%dkc93vcmt0的Windows域用户传送\kober创建代理凭据。 因此,您的用户以任何用户权限登录( 不 系统管理员!)并执行存储过程,该过程调用xp命令行程序,它将“获取”已配置的任何代理权限。再次,很尴尬,但听起来它会做你想做的。(一个可能的限制因素是,您只能获得一个代理帐户,因此它必须满足所有可能的需求。) 老实说,我觉得最好的解决办法是:
那么,启动对存储过程的调用是什么? |
![]() |
ybou · 需要帮助从SQL 2005查询中删除过时的=*连接运算符 7 年前 |
![]() |
Robert · 将多个分隔符分隔的字段视为不同的行 8 年前 |
![]() |
hud · 执行存储过程会导致错误 8 年前 |
![]() |
Gonzalo · 如何将存储过程的结果插入到新表中? 9 年前 |